This document discusses operating system architectures for distributed systems, focusing on monolithic and microkernel designs. A monolithic kernel implements many operating system services within the kernel itself, making it large and difficult to modify. A microkernel moves most OS services into userspace servers that communicate with the microkernel via messages. This allows services to be added or replaced more easily and enforces modularity. The document compares advantages of the two approaches, noting extensibility and potential for fewer bugs with microkernels, while monolithic kernels can have higher performance due to avoiding inter-process communication.
This document discusses operating system architectures for distributed systems, focusing on monolithic and microkernel designs. A monolithic kernel implements many operating system services within the kernel itself, making it large and difficult to modify. A microkernel moves most OS services into userspace servers that communicate with the microkernel via messages. This allows services to be added or replaced more easily and enforces modularity. The document compares advantages of the two approaches, noting extensibility and potential for fewer bugs with microkernels, while monolithic kernels can have higher performance due to avoiding inter-process communication.
This document discusses operating system architectures for distributed systems, focusing on monolithic and microkernel designs. A monolithic kernel implements many operating system services within the kernel itself, making it large and difficult to modify. A microkernel moves most OS services into userspace servers that communicate with the microkernel via messages. This allows services to be added or replaced more easily and enforces modularity. The document compares advantages of the two approaches, noting extensibility and potential for fewer bugs with microkernels, while monolithic kernels can have higher performance due to avoiding inter-process communication.
Distributed Systems Let us look into the architecture of a kernel suitable for a distributed system. A key principle of DS is openness and with this in mind let us examine the major kernel architectures: Monolithic kernels Micro-kernels 2 Open DS and System Software A open DS should make it possible to: Run only that system software at each computer that is necessary for its particular role in the system architecture. For example, system software needs of PDA and dedicated server are different and loading redundant modules wastes memory resources. Allow the software (and the computer) implementing any particular service to be changed independent of other facilities. Allow for alternatives of the same services to be provided, when this is required to suit different users or applications. Introduce new services without harming the integrity of existing ones. 3 Separating Mechanisms and Policies in OS and DS A Guiding principle of OS design: The separation of fixed resource management mechanisms from resource management policies, which vary from application to application and service to service. For example, an ideal scheduling system would provide mechanisms that enable a multimedia application such as videoconferencing to meet its real-time demands while coexisting with a non-real-time application such as web browsing. That is kernel would provide only the most basic mechanisms upon which the general resource management tasks at a node are carried out. Server modules would be dynamically loaded as required, to implement the required RM policies for the currently running applications. 4 OS/Kernel Architecture The two key examples of kernel design approaches are: Monolithic Microkernel Basically these two designs differ primarily in the decision as to what functionality belongs in the kernel and what is left to server processes that can be dynamically loaded to run on top of it. In Literature, we find predominantly 3 types of OS: Monolithic OS Layered OS Microkernel-based OS The first two may be put under the same category as monolithic. The chambers 20 th century dictionary definition of monolithic is: a pillar, column, of a single stone: anything that resembling a monolithic, massiveness. 5 Monolithic kernel and microkernel Monolit hic Kernel Microkernel Serv er: Dy namically loaded server program: Kernel code and data: . .. . .. . . .. . .. . Key: S4 S1 . .. . .. . S1 S2 S3 S2 S3 S4 6 Application Programs Application Programs System Services Hardware User Mode Kernel Mode Monolithic Operating System Better application Performance Difficult to extend Ex: MS-DOS 7 Traditional OS OS Designer OS Hardware User Mode Kernel Mode Application Programs Application Programs 8 Disadvantages of Monolithic OS It is massive: It performs all basic OS functions and takes up in the order of megabytes of code and data It is undifferentiated: It is coded in a non-modular way (traditionally) although modern ones are much more layered. It is intractable: Altering any individual software component to adapt it to changing requirements is difficult. 9 New trend in OS design: Separating mechanisms and policies User Mode Kernel Mode Hardware Microkernel (very basic functions) Servers Application Programs Application Programs 10 Micro-kernel Compared to monolithic, microkernel design provides only the most basic abstractions, principally address space, threads and local IPC. All other system services are provided by servers that are dynamically loaded precisely on those computers in the DS that require them. Clients access these system services using the kernels message-based invocation mechanisms. 11 Microkernel/Client Server OS Tiny OS kernel providing basic primitive (process, memory, IPC) Traditional services becomes subsystems OS = Microkernel + User Subsystems Client Application OS Emulators File Server Network Server Display Server Microkernel Hardware User Kernel Send Reply Ex: Mach, PARAS, Chorus, etc. 12 The role of the microkernel MK appears as a layer between H/W and system systems. Middleware Language support subsyst em Language support subsyst em OS emulat ion subsyst em .... Microkernel Hardware The microkernel support s middleware via subsystems 13 Few Popular Microkernel Systems MACH, CMU It supports different OS emulators including Unix and OS/2. PARAS, C-DAC Chorus QNX, Windows NT original design. 14 Comparison: Monolithic and Micro-kernel OS Design The chief advantages of a MK-based OS: Extensibility and its ability to enforce modularity behind memory protection boundaries A relative small kernel is more likely to be free of bugs than one that is larger and complex. The advantage of a monolithic OS: Relative efficiency with which operations can be invoked is high because even invocation to a separate user-level address space on the same node is more costly.