
	 
	 Processes
	 
	 
    
                    
-  Multiprogramming: CPU (or CPUs) switch rapidly between running processes.
  
  -  Pseduoparallelism: The appearance of multiple processes running at once.
  
 -  Allows use of CPU and I/O devices in parallel.
  
 -  Supports interactive computing.
  
 
 -  A program in execution
  
  -  A program and an execution context.
  
 -  Execution context is all its data.
    
    -  Including the CPU state.
    
 -  Especially including the PC.
    
 
   
 -  From various viewpoints.
 -  Process switching.
  
  -  OS is invoked by interrupt or syscall.
  
 -  Save CPU registers, including PC and stack pointer.
    
    -  Hardware saves some at interrupt or syscall.
    
 -  O/S must save the rest.
    
 
   -  Update VM tables (Ch. 3).
  
 -  Update OS records.  Process state and history.
  
 
 -  Process Creation.
    Ultimately, only the kernel creates processes, often on request by 
    some process.
  
  -  At system initialization.
  
 -  Spawned by an existing process.
  
 -  Created by user command (probably processed by some shell process).
  
 -  Batch job submission.
  
 
 -  Process Termination.
  
  -  Normal exit (voluntary).
  
 -  Abnormal exit (voluntary).
  
 -  Fatal error (involuntary).
  
 -  Killed by another process (involuntary).
  
 
 -  Process Hierarchies.
  
  -  Unix: family tree.
    
    -  Processes are parents and children.
    
 -  Process 1 (init) is the ancestor of all.
    
 -  Init inherits orphans.
    
 
   -  Windows.
    
    -  Creators have a handle to processes they create.
    
 -  But can pass it to any other process: Needn't maintain the tree.
    
 
   
 -  Process states.
    
    
      -  The OS changes the state of a process.
      
 -  Reasons for transitions.
      
 -  This is the simplest diagram: Most real OSes divide some states into 
    	several.
	  
	  -  Unix divides Blocked into long-term and short-term waits.
	  
 -  Windows divides Ready to designate a next-up.
	  
 
      
 -  Process table.
  
  -  OS bookkeeping: A table of running processes.
  
 -  Each entry is a record (think C struct) 
      containing bookkeeping data for one process.
    
    -  Process id, ownership, permissions.
    
 -  Scheduling parameters.
    
 -  Resources (memory blocks, stack location, open files).
    
 -  Register save area.
    
 
   -  Sometimes called a Process Control Block (PCB).
  
 
 -  Creation primitives.
  
  -  Windows CreateProcess.
    
    -  Creates a new process running a specified program.
    
 -  Gobs of parameters (if one gob is five).
    
 -  Returns handle used for future operations.
    
 
   -  Unix fork 
      and exec.
    
    -  Fork creates a copy of the parent process.  Returns twice,
    	once in parent and once in child.
    
 -  Exec runs the specified program in the current process and 
    	does not return.
    
 -  Process can make modifications between fork and exec.
    
 -  Process creation examples, plain C,
    	C++.
    
 
   
 -  CPU Utilization.
  
  -  A process spends some percentage of time running on a CPU, and some
      time waiting for an I/O device.
  
 -  Ideally, four processes which use the CPU a quarter of the time will
      keep the CPU busy.
  
 -  Actually, they may all want to wait at the same time.
  
 -  Suppose p is the fraction of time a process spends waiting for I/O.
  
 -  The probability that all n processes are waiting is pn, 
      so the probability that at least one isn't will be 1 − pn.
      That is the expected utilization of a single CPU.
      
   -  The number of programs in memory at once is the “degree of
      multiprogramming.”