man fork

Linux Centric, Processes, and Kernel Developers

Changing Directions

  • Why “Linux”?
    • Interests change over time
    • Something I’ve consistently gone back to
    • My job and career
    • Can’t stay away
  • Not a Revamp or a Refactor
  • Continuing with same format
    • Not a news show
    • Video is on hold
    • Random raw VLOG/videos


  • What is a process?
    • Instance of a program running
    • CPU instruction
  • What is a program?
    • File with information on how to construct a process
    • Binary format identification (metadata) format of executable
    • Machine-language instruction
    • Entry point address, where should the program execution being?
    • Data
    • Symbols and relocation tables, locations and names of functions, objects, debug
    • Shared-library and dynamic-linking information, lists of shared libraries needed at runtime
  • Types of processes
    • User initiated, interactive
    • Background, daemon, automated
  • Daemon
    • Online with the system
    • Haunt you forever, never die
    • User can interface with daemons

Linux Process

  • Parent/Child
    • Child process: Existing process copies itself in memory
    • New PID for child, but runs concurrently with the program on execution
    • fork()
    • Both processes continue with the next instruction
    • Child has access to file, CPU registers, and I/O that parent has access to
    • PID and PPID are used to identify and keep track of processes
    • man page: The child process and the parent process run in separate memory
      spaces. At the time of fork() both memory spaces have the same
      content. Memory writes, file mappings (mmap(2)), and unmappings
      (munmap(2)) performed by one of the processes do not affect the
    • Source code coming

Better tools for kernel developers

  • Reliance on e-mail for Linux kernel maintainers
  • Process is daunting to newcomers
  • Tooling to assist
    • 500 lines of Python
    • Provide message ID for email in a thread of interest
    • Entire thread downloaded and stored in local mbox file
  • Change in the process
    • Reading email threads
    • Organizing patches
    • Applying tags
  • Hesitance/resistance to change
  • Do developer workflows need to change?
    • Why?
    • Learn a newcomer vs ask for input
    • Linux kernel is great as is