Characteristics of Modern Operating System 1. Microkernel Architecture 2. Monolithic Kernel 3. Hybrid Kernel
Characteristics of Modern Operating System 1. Microkernel Architecture 2. Monolithic Kernel 3. Hybrid Kernel
Characteristics of Modern Operating System 1. Microkernel Architecture 2. Monolithic Kernel 3. Hybrid Kernel
1. Microkernel Architecture
2. Monolithic Kernel
3. Hybrid Kernel
What is a Kernel.
The kernel is a computer program that manages input/output requests from
software, and translates them into data processing instructions for the central
processing unit and other electronic components of a computer.The kernel is a
fundamental parts of a modern computers operating system.
MICROKERNEL ARCHITECTURE.
What is Microkernel ?
Microkernel is a small modular part of an operating system kernel which
implements its basic features. A microkernels developed in the 1980s to combat
the increasing size of kernels when the first usable local area networks were
being introduced. They are especially common in real-time, industrial, avionics,
and military applications that are mission critical and have very high reliability
requirements. A few of the better-known microkernels are Integrity, K42, L4,
PikeOS, QNX, Symbian, and MINIX 3.
The MINIX 3 microkernel has taken the idea of modularity to the limit,
breaking most of the operating system up into a number of independent usermode processes. It is only about 3200 lines of C and 800 lines of assembler for
very low-level functions such as catching interrupts and switching processes.
The C code manages and schedules processes, handles interprocess
communication by passing messages between processes and offers a set of
about 35 kernel calls to allow the rest of the operating system to do its work.
These calls perform functions like hooking handlers to interrupts, moving data
between address spaces and installing new memory maps for newly created
processes.
The basic idea behind the microkernel design is to achieve high reliability by
splitting the operating system up into small and well-defined modules. Only one
of the microkernel runs in kernel mode and the rest run as relatively powerless
ordinary user processes. In particular, by running each device driver and file
system as a separate user process, a bug in one of these can crash that
component, but cannot crash the entire system. Thus a bug in the audio driver
will cause the sound to be garbled or stop, but will not crash the computer.
The process structure of MINIX 3 is shown in Figure 1 above with the kernel
call handlers labeled Sys. The device driver for the clock is also in the kernel
because the scheduler interacts closely with it. All the other device drivers run
as separate user processes.
Outside the kernel, the system is structured as three layers of processes all
running in user mode. The lowest layer contains the device drivers. Since they
run in user mode, they do not have physical access to the I/O port space and
cannot issue I/O commands directly. Instead, to program an I/O device, the
driver builds a structure telling which values to write to which I/O ports and
makes a kernel call telling the kernel to do the write. This approach means that
the kernel can check to see that the driver is writing or reading from I/O it is
authorized to use. Unlike a monolithic design, a buggy audio driver cannot
accidentally write on the disk. Above the drivers is another user-mode layer
containing the servers, which do most of the work of the operating system.
One or more file servers manage the file system, the process manager creates,
destroys, manages processes and so on.
User programs obtain operating system services by sending short messages to
the servers asking for the POSIX system calls. For example, a process needing
to do a read sends a message to one of the file servers telling it what to read.
One interesting server is the reincarnation server, whose job is to check if the
other servers and drivers are functioning correctly. In the event that a faulty one
is detected, it is automatically replaced without any user intervention. In this
way the system is self healing and can achieve high reliability. The system has
many restrictions limiting the power of each process. As mentioned, drivers can
only touch authorized I/O ports, but access to kernel calls is also controlled on a
per process basis, as is the ability to send messages to other processes.
Processes can also grant limited permission for other processes to have the
kernel access their address spaces. As an example, a file system can grant
permission for the disk driver to let the kernel put a newly read in disk block at
a specific address within the file system's address space. The sum total of all
these restrictions is that each driver and server has exactly the power to do its
work and nothing more, thus greatly limiting the damage a buggy component
can do. The function of mechanism in the kernel is to look for the highestpriority process and run it while the policy assigning priorities to processes that
can be done by user-mode processes. In this way policy and mechanism can be
decoupled and the kernel can be made smaller.
WHAT IS MULTITHREADING ?
Multithreading is the ability of an OS to support multiple and concurrent paths
of execution within a single process . Multiple-threaded program contains two
or more parts that can run concurrently. Each part of such a program is called a
thread and each thread defines a separate part of execution.
Multiple processes and threads are found in Windows, Solaris, and many
modern versions of UNIX. MS-DOS supports a single user process and a single
thread while UNIX support multiple user processes but in the same time its only
support one thread per process.
THE DIFFERENCE
BETWEEN THREAD-BASED AND PROCESS-BASED MULTITASKING.
As both are types multitasking, there is very basic difference between the
two. Process-based multitasking is a feature that allows your computer to run
two or more programs concurrently. For example, we can listen to music and at
the same time chat with our friends on Facebook using browser.
In thread-based multitasking, thread is the smallest unit of code, which means a
single program can perform two or more task simultaneously. For example, a
text editor can print and at the same time you can edit the text. These two tasks
are perform by separate threads
BENEFITS OF MULTITHREADING
- Enables programmers to do multiple things at one time
- Can improve performance and concurrency
- Simultaneous access to multiple applications