Process state is stored in a process control block (PCB)
Processes can create child processes, building a tree-like process structure
e.g. systemd is pid 1
run pstree to see this tree
To create a new process in Unix systems, the syscalls are fork (create a copy of the parent process), then exec to replace the process memory space with a new program
Processes terminate with the exit system call
“zombie processes” - processes that have terminated but whose parents have not called wait() on
These processes still have their information in the process table
Can be single or multi-threaded
Recall, a process is not implemented as a separate thread, the CPU switches between the processes
To send signals to processes use the kill(pid, signal) function
A CPU scheduler selects from the ready queue and assigns CPU resources to them
Swapping is when a program is “swapped out” from memory to disk (and thus is no longer in contention for CPU resources) and is brought back when necessary and has its status restored
Typically only necessary when memory needs to be freed up
Messages are sent with identifier of function to call, and parameters to pass to that function to an RPC daemon running on the other machine
This implementation is hidden behind client side stubs
A server-side stub receives the message and then processes it
A rendezvous daemon listens on a well-known port for incoming requests for a given RPC name and returns the port of that RCP call the client should sent the message to