Designs that have been tried in practice
  • Monolithic systems
  • Layered systems
  • Virtual machines
  • Client/server Microkernels
Many of the concepts governing these architectures apply to software architecturesin 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...)

a main procedure requesting the services

a set of service procedures that carry out system calls

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


easier to extend a microkernel

easier to port the operating system to new architectures

more reliable (less code is running in kernel mode)

more secure (a server crashing in userspace)

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
  • EROS
  • Haiku
  • K42
  • LSE/OS (a nanokernel)
  • KeyKOS (a nanokernel)
  • The L4 microkernel family
  • Mach, used in GNU Hurd,
  • MERT
  • Minix
  • MorphOS
  • NewOS
  • QNX
  • Phoenix-RTOS
  • RadiOS
  • Spring operating system
  • VSTa
  • Symbian OS
  • OSE

Monolithic vs Microkerne

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)

No comments