1. Operating system
Review
1 An operating system (OS) is software, consisting of programs and data,
that runs on computers and manages computer hardware resources and provides
common services for efficient execution of various application software.
Features of operating system:
• process management;
• interrupts processing;
• memory management;
• file system;
• device drivers;
• networking (TCP/IP, UDP);
• security (Process/Memory protection);
• I/O (interfaces support).
There are many types of an operating systems. All of this is divided to
UNIX-like systems, and non-UNIX-like systems. UNIX-like systems are support
the POSIX standards.
POSIX (Portable Operating System Interface for Unix) – is the name of a
family of related standards specified by the IEEE to define the application pro-
gramming interface (API), along with shell and utilities interfaces for software
compatible with variants of the Unix operating system, although the standard can
apply to any operating system. POSIX allows making portable software, which can
be executed on different hardware platforms and UNIX-like operating systems.
Examples of UNIX-like systems:
UNIX;
BSD;
GNU/Linux;
Solaris;
OpenSolaris;
FreeBSD;
OpenBSD;
NetBSD;
Mac OS X;
QNX.
Examples of non-UNIX-like systems:
DOS;
Microsoft Windows;
ReactOS;
Symbian OS;
OS/2;
MenuetOS;
KolibriOS.
2. The kernel is the central component of most computer operating systems; it
is a bridge between applications and the actual data processing done at the hard-
ware level.
Kernel facilities:
• process management – scheduling, creation and termination processes;
• memory management – sharing memory, virtual addressing, file system;
• device management – device drivers, interrupt processing, plug and play;
• system calls – software-simulated interrupts, call gates, system call in-
structions
There is four main types of OS kernel:
1 Monolithic kernel – all OS services run along with the main kernel
thread, thus also residing in the same memory area. This is an oldest and most pre-
valent type of kernel. It demands rebuilding after each update of hardware. So, a
modern monolithic kernel supports loadable modules, which allows working with
hardware devices without rebuilding.
Examples: BSD Kernel (BSD), Linux Kernel (GNU/Linux), DOS Kernel
(DOS, Windows 3.1, 95, 98, Me), Solaris Kernel (Solaris, OpenSolaris).
2 Microkernel – simple abstraction over the hardware, with a set of primi-
tives or system calls to implement minimal OS services. In general, this type of
kernel is used in real-time operating systems, where high processing speed is
needed. Nanokernel and picokernel are microkernel too.
Examples: QNX, Match(GNU/Hurd), Mac OS X, Symbian OS, Windows
CE Kernel.
3 Hybrid kernel – compromise between the monolithic and microkernel de-
signs. Driver in hybrid kernel is an application, which executes in kernel address
space. But it is not a part of kernel.
Examples: Windows NT Kernel (Windows NT, 2000, XP, Vista, 7),
ReactOS Kernel, Plan9, NetWare, Haiku.
4 Exokernel – no abstract hardware into theoretical models. It allocates
physical hardware resources to different programs.
Examples: XOmB, Nemesis, MIT Exokernel.