Designs that have been tried in practice

§  Monolithic systems

§  Layered systems

§  Virtual machines

§  Client/server Micro kernels

Many of the concepts governing these architectures apply to software architectures in general

Monolithic systems

§  A.k.a., ” The Big Mess ” or spaghetti code

§  Prominent in the early days

§  The structure consists of no-structure

§  The system is a collection of procedures

§  Each procedure can call any other procedure

§  No information hiding (as opposed to modules, packages, classes)

§  A little structure, imposed by exposing a set of system calls to the outside

§  Supporting these system calls through utility procedures (check data passed to system call, move data around…)

o    a main procedure requesting the services

o    a set of service procedures that carry out system calls

o    a set of utility procedures supporting the system calls

Advantages Of Monolithic architecture

§  Tightly integrated code in one address space

§  Unreliable, as a bug anywhere in the kernel can bring down the whole system

§  Tight integration has high potential for efficient use of resources and for efficient code

§  Early designs lacked potential for extension.

§  Modern designs can load executable modules dynamically (i.e., extensible)

§  E.g., Linux, FreeBSD, Solaris

Layered systems

§  Generalization of previous scheme

§  Organization into a hierarchy of layers

§  Layer n+1 uses services (exclusively) supported by layer n

§  Easier to extend and evolve

§  A call may have to propagate through lots of layers- At occasions (optimization) layer n+1 may also access layers n-k directly

§  Upcall, layer n-k calls into layer n has also been proposed (e.g., in the context of thread scheduling)

Microkernel system

§  Moves as much as possible from the kernel into “user” space

§  Communication takes place between user modules using message passing

§  Benefits:

1.      easier to extend a microkernel

2.      easier to port the operating system to new architectures

3.      more reliable (less code is running in kernel mode)

4.      more secure (a server crashing in user space)

§  Not clear what should go into the microkernel

§  Mach, QNX, NT, L4

Microkernel Examples

Following are the examples of Microkernel systems

§  AIX

§  AmigaOS

§  Amoeba

§  Chorus microkernel


§  Haiku

§  K42

§  LSE/OS (a nanokernel)

§  KeyKOS (a nanokernel)

§  The L4 microkernel family

§  Mach, used in GNU Hurd,



§  Minix

§  MorphOS

§  NewOS

§  QNX

§  Phoenix-RTOS

§  RadiOS

§  Spring operating system

§  VSTa

§  Symbian OS

§  OSE

Monolithic vs Microkernel

·         Mon. tend to be easier to design, therefore faster development cycle and more potential for growth)

·         Mon. tend to be more efficient due to use of shared kernel memory (instead of IPC)– However, very efficient micro kernels have been designed in research and laboratory settings

·         Micro. tend to be used for embedded systems (e.g., robotic, medical etc.)

·         In Micro. Many OS components reside in their own, private protected address space (not possibly in Mon. designs)

Virtual Machines

§  A virtual machine takes the layered approach to its logical conclusion. Hardware is simulated in software; all resources are virtualized; individual OS run on virtualized resources

§  A virtual machine provides an interface identical to the underlying bare hardware

§  The operating system creates the illusion of multiple processes, each executing on its own processor with its own (virtual) memory

§  The resources of the physical computer are shared to create the virtual machines.

·         CPU scheduling can create the appearance that users have their own processor.

·         Spooling and a file system can provide virtual disks, virtual memory and virtual printers.

·         A normal user time-sharing terminal serves as the virtual machine operator console

Pros/Cons of Virtual Machines

§  VM model provides complete protection

§  At the cost of not enabling any direct resource sharing

§  A virtual-machine system is a perfect vehicle for operating-systems research and development.

§  System development is done on the virtual machine, instead of on a physical machine and so does not disrupt normal system operation.

§  The virtual machine concept is difficult to implement due to the effort required to provide an exact duplicate to the underlying machine.

§  Available in practice (IBM, VMWare, Sys161)


Give A message for us

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s