'THE'-Multiprogramming System
Multiprocessing is the use of two or more central processing units (CPUs) within a single computer system.
Multitasking is a concept of performing multiple tasks (also known as processes) over a certain period of time by executing them concurrently.
Multiprogramming, the running task keeps running until it performs an operation that requires waiting for an external event (e.g. reading from a tape) or until the computer's scheduler forcibly swaps the running task out of the CPU. Multiprogramming systems are designed to maximize CPU usage.
Time-sharing systems, the running task is required to relinquish the CPU, either voluntarily or by an external event such as a hardware interrupt. Time sharing systems are designed to allow several programs to execute apparently simultaneously.
Real-time systems, some waiting tasks are guaranteed to be given the CPU when an external event occurs. Real time systems are designed to control mechanical devices such as industrial robots, which require timely processing.
What is the main point of the paper?
- System Hierarchy
- First paper uses "Share memory" to do process communication, while "message passing" is used in second paper.
- (Notify: This is not multi-user operating system.)
What layers does it have?
- 0 - Process control, scheduling
- 1 - Memory management, paging
- 2 - Console, message interpreter
- 3 - Peripherals, buffering, stream
- 4 - User level programs
- 5 - User
Pros and Cons of Layers
- Cons: It's hard to divided all things into layers. If something depend on each other (circular dependencies), how to arrange the layers. Sometimes it's not efficient.
How does the structure related to today's OS?
Synchronization
- P (wait)
V (signal)
There are two ways in which semaphores are used:
- Mutual exclusion
- Synchronization of cooperating processes
Harmonious cooperation
How were the four goals achieved?
What were the two major mistakes made?
- Assuming everything works correctly
- Lack of debugging support
Summary
- Layered OS Structure
- Central abstraction: sequential concurrent processes
- Semaphores for synchronization
- Correctness (proofs + testing)