ü A process is a program in execution.
o We are assuming a multiprogramming OS that can switch from one process to another.
o Sometimes this is called pseudoparallelism since one has the illusion of a parallel processor.
o The other possibility is real parallelism in which two or more processes are actually running at once because the computer system is a parallel processor, i.e., has more than one processor.
1: The Process Model
Even though in actuality there are many processes running at once, the OS gives each process the illusion that it is running alone.
· Virtual time: The time used by just these processes. Virtual time progresses at a rate independent of other processes. Actually, this is false, the virtual time is typically incremented a little during systems calls used for process switching; so if there are more other processors more ``overhead'' virtual time occurs.
Virtual memory: The memory as viewed by the process. Each process typically believes it has a contiguous chunk of memory starting at location zero. Of course this can't be true of all processes (or they would be using the same memory) and in modern systems it is actually true of no processes (the memory assigned is not contiguous and does not include location zero).
Think of the individual modules that are input to the linker. Each numbers its addresses from zero; the linker eventually translates these relative addresses into absolute addresses. That is the linker provides to the assembler a virtual memory in which addresses start at zero.
Virtual time and virtual memory are examples of abstractions provided by the operating system to the user processes so that the latter ``sees'' a more pleasant virtual machine than actually exists.
2. Process Hierarchies
Modern general purpose operating systems permit a user to create and destroy processes.
· In unix this is done by the fork system call, which creates a child process, and the exit system call, which terminates the current process.
· After a fork both parent and child keep running (indeed they have the same program text) and each can fork off other processes.
· A process tree results. The root of the tree is a special process created by the OS during startup.
· A process can choose to wait for children to terminate. For example, if C issued a wait() system call it would block until G finished.
Old or primitive operating system like MS-DOS are not multiprogrammed so when one process starts another, the first process is automatically blocked and waits until the second is finished.