Definition. An OS is a program that is an intermediary between a user and computer hardware.
| OS Type | Usage | Advantages | Disadvantages |
|---|---|---|---|
| No OS | Changing physical config | - minimal overhead | not portable, not efficient use |
| Batch OS | (Mainframes) similar jobs are bundled with instructions that OS execs in order. | - computer does more work | - no protection - infinite loops - hard to debug - no concurrency |
| Time-sharing OS | Multiple users interact with machine via terminal. job scheduling mimics concurrency. | - memory management - shares CPU time, memory, storage. - Virtualization |
|
| PC OS – Windows | Single user at once, but multiple user access | (dedicated machine) | |
| PC OS – Unix | One user at workstation, but others can remote access. | (general time sharing model) |
OS is an abstraction.
OS is a resource allocator. Manage resources and arbitrate conflicting requests.
OS is a control program. Prevents accidents and malicious attacks, provides security isolation and protection.
Kernel: complete access to hardware resources; User: partial access.
Kernel: Deals with hardware issues, provides system call interface, special code for interrupt handlers, device drivers.

Code organization:
OS Structures:
| Monolithic | Microkernel | |
|---|---|---|
| Size | Bigger | Smaller |
| Execution | Fast | Slow |
| Extensibility | Highly coupled, difficult to extend | Ease of extensibility |
| Security (e.g. a service crashing) | Highly coupled, may cause whole system to crash | Causes only that microkernel to crash |
| Examples | Unix/Win/BSD | QNX, Symbian, L4Linux |
OS assumes total control of hardware. So what is we want to run multiple OS on the same hardware? (e.g. Cloud computing)
Software emulation of hardware = Virtualization of underlying hardware (Illusion of hardware access)
Hypervisor/VMM