1. Simple Structure
- some operating systems do not have well defined structures. Often these started as simple systems and grew beyond their original scope.
- written to provide the most functionality in the least space
- not divided into modules
- although MS-DOS has some structure, its interfaces and levels of functionality are not well separated.
1.1. UNIX System Structure
- UNIX: limited by hardware functionality, the original UNIX operating system has limited structure.
- The Unix OS consists of two separated system parts
- system programs
- the kernel (everything below the system call interface and above the physical hardware)
- provide the file system. CPU scheduling, memory management, and other operating system functions
- A large number of functions for one level
2. Layered Approach
- The operating system is divided into a number of layers (levels), each build on top of low layers.
- The bottom layer (layer 0), is the hardware; the highest (layer N) is the user interface
- With modularity, layers are selected such that each users functions (operations) and services of only lower-level layers
- Simplifies debugging and system verification
3. Modular Approach
- Modular kernel
- the kernel has a set of core components
- dynamic links in additional services either during boot time or during run-time
- common in modern implementations of Unix such as Linux and Solaris
- Moves as much as possible from kernel into “user space”
- Communication takes space between users modules using “message passing”
- easier to extend
- more reliable (less code is running in kernel mode)
- convenient for distributed architectures
- Many modern OS are designed as microkernels
- apple MAC OS (based on Mach OS)
- Many SmartPhone OS
- Android (L4 Microkernel family)
- IPhone OS (based on Mach)