1. STACK -CONTAINING TEMPORARY DATA
1.1. FUNCTION PARAMETERS
1.2. RETURN ADDRESSES
1.3. LOCAL VARIABLE
2. DATA SECTION CONTAINING GLOBAL ACTIVITIES
3. HEAP CONTAINING MEMORY DYNAMICALLY ALLOCATED DURING RUNTIME
4. PROCESS CONTROL BLOCK
4.1. ALSO CALLED TASK CONTROL BLOCK
4.2. PROCESS STATE
4.2.1. RUNNING, WAITING, ETC
4.3. PROGRAM COUNTER
4.3.1. LOCATION OF INSTRUCTIONS TO NEXT EXECUTE
4.4. CPU REGISTERS
4.4.1. CONTENTS OF ALL PROCESS-CENTRIC REGISTERS
4.5. CPU SCHEDULING NFORMATION
4.5.1. PRIORITIES, SCHEDULING QUEUE POINTERS
4.6. MEMORY MANAGEMENT INFORMATION
4.6.1. MEMORY ALLOCATED TO THE PROCESS
4.7. ACCOUNTING INFORMATION
4.7.1. CPU USED, CLOCK TIME ELAPSE SINCE START, TIME LIMITS
4.8. I/O STATUS INFORMATION
4.8.1. I/O DEVICES ALLOCATED TO PROCESS, LIST OF OPEN FILES
5. SCHEDULER
5.1. SHORT TERM SCHEDULER
5.1.1. CPU SCHEDULER
5.2. LONG TERM SCHEDULER
5.2.1. JOB SCHEDULER
5.3. MEDIUM TERM SCHEDULING
5.3.1. CAN BE ADDED IF DEGREE OF MULTIPLE PROGRAMMING NEEDS TO DECREASE
6. PROCESS CREATION
6.1. Parent process create children processes, which, in turn create other processes, forming a tree of processes
6.2. Generally, process identified and managed via a process identifier
6.3. Resource sharing options
6.3.1. Parent and children share all resources
6.3.2. Children share subset of parent’s resources
6.3.3. Parent and child share no resources
6.4. Execution options
6.4.1. Parent and children execute concurrently
6.4.2. Parent waits until children terminate
6.5. Address Space
6.5.1. Child duplicate of parent
6.5.2. Child has a program loaded into it
6.6. UNIX
6.6.1. fork() system call creates new process
6.6.2. exec () system call used after fork() to replace the process' memory space with a new program
7. BUFFERING
7.1. QUEUE IF MESSAGE ATTACHED TO THE LINK
7.2. IMPLEMENTED IN THREE WAYS
7.2.1. ZERO CAPACITY
7.2.1.1. NO MESSAGES ARE QUEUED ON A LINK. SENDER MUST WAIT FOR RECEIVER. (RENDEZVOUS)
7.2.2. BOUNDED CAPACITY
7.2.2.1. FINITE LENGTH OF N MESSAGES. SENDER MUST WAIT IF LINK FULL
7.2.3. UNBOUNDED CAPACITY
7.2.3.1. INFINITE LENGTH. SENDER NEVER WAITS
8. COMMUNICATION IN CLIENT-SERVER SYSTEMS
8.1. SOCKETS
8.1.1. AN ENDPOINT FOR COMMUNICATION
8.2. REMOTE PROCEDURE CALLS
8.2.1. ABSTRACTS PROCEDURE CALLS BETWEEN PROCESSES IN NETWORKED SYSTEMS
8.2.1.1. STUBS - CLIENT SIDE PROXY FOR THE ACTUAL PROCEDURE ON THE SERVER
8.2.2. DATA REPRESENTATION HANDLED VIA EXTERNAL DATA REPRESENTATION (XDL) FORMAT
8.3. PIPES
8.3.1. ACTS AS A CONDUIT ALLOWING TWO PROCESSES TO COMMUNICATE
8.3.2. ORDINARY PIPES
8.3.2.1. CANNOT BE ACCESSED FROM OUTSIDE THE PROCESS THAT CREATED IT.
8.3.2.2. UNDIRECTIONAL
8.3.3. NAMED PIPES
8.3.3.1. CAN BE ACCESSED WITHOUT A PARENT-CHILD RELATIONSHIP
8.3.3.2. MORE POWERFUL THAN ORDINARY PIPES
8.3.3.3. BIDIRECTIONAL
8.4. REMOTE METHOD INVOCATION(JAVA)
9. BATCH SYSTEM - JOBS
10. TIME SHARED SYSTEMS - USER PROGRAMS OR TASKS
11. PROCESS STATE
11.1. NEW
11.1.1. THE PROCESS IS BEING CREATED
11.2. RUNNING
11.2.1. INSTRUCTIONS ARE BEING EXECUTED
11.3. WAITING
11.3.1. THE PROCESS IS WAITING FOR SOME EVENT TO OCCUR
11.4. READY
11.4.1. THE PROCESS IS WAITING TO BE ASSIGNED TO BE A PROCESSOR
11.5. TERMINATED
11.5.1. THE PROCESS HAS FINISHED EXECUTION
12. PROCESS SCHEDULING
12.1. Maximize CPU use, quickly switch processes onto CPU for time sharing
12.2. Process scheduler selects among available processes for next execution on CPU
12.3. Maintains scheduling queues of processes
12.3.1. Job queue – set of all processes in the system
12.3.2. Ready queue – set of all processes residing in main memory, ready and waiting to execute
12.3.3. Device queues – set of processes waiting for an I/O device
12.3.4. Processes migrate among the various queues
13. CONTEXT SWITCH
13.1. When CPU switches to another process, the system must save the state of the old process and load the saved state for the new process via a context switch
13.2. Context of a process represented in the PCB
14. INTERPROCESS COMMUNICATION
14.1. Processes within a system may be independent or cooperating
14.2. Cooperating process can affect or be affected by other processes, including sharing data
14.3. Reasons for cooperating processes
14.3.1. Information sharing
14.3.2. Computation speedup
14.3.3. Modularity
14.3.4. Convenience
14.4. Two models of IPC
14.4.1. Shared Memory
14.4.2. Message Passing
14.5. Cooperating Processes
14.5.1. Independent process cannot affect or be affected by the execution of another process
14.5.2. Cooperating process can affect or be affected by the execution of another process
14.5.3. Advantages
14.5.3.1. Information Sharing
14.5.3.2. Computation Speed-Up
14.5.3.3. Modularity
14.5.3.4. Convenience
14.6. Shared Memory
14.6.1. An area of memory shared among the processes that wish to communicate
14.6.2. Synchronization
14.6.2.1. Message passing may be either blocking or non-blocking
14.6.2.1.1. Blocking is considered synchronous
14.6.2.1.2. Non Blocking is considered asynchronous
14.6.2.2. IF BOTH SEND AND RECEIVE ARE BLOCKING, WE HAVE A RENDEZVOUS