Lecture 2 --------- Where do processes come from? One idea: a running process creates a new process by specifying an executable to run in the new process. That's how Windows does it. That isn't how UNIX-like systems work. Orthogonal design in APIs - only one way of doing a specific operation - complex operations are built out of simple ones Consider the use cases for making a new process - run a new program (binary) - duplicating an existing process Difference? Process A copied to Process B vs Process A executing a binary to create B (which is the one used to make A) In the first case, B's variables have the same state as A's variables Process duplication * useful operation for concurrency * Simple interface * can be combined with other operations to run other programs To duplicate a process: fork To run a binary into the existing process: execve