One of the trends of modern operating systems is that in privileged mode, a
small
proportion of kernel functions, which are a
microkernel, are
implemented. Other OS functions are performed
by user-mode processes
(server processes). Servers are responsible for supporting the file system for
dealing with process memory.
The micronucleus communicates between system components and performs
a basic resource allocation. To execute a system call, the process (client
process) accesses the microkernel. The microkernel sends a request to the
server, the server performs the work and sends the response back. And the
micronucleus forwards it to the client. Customers
can not only be single
users and other operating units.
The advantages of a micro-core approach are:
❖
The small size of microkernel which simplifies its development and
debugging
❖
High system reliability due to the fact that the servers run in user
mode and do not have direct
access to the hardware
❖
Greater flexibility and expandability of the system (unnecessary
components do not take up space in memory ' memory, expanding the
functionality of the system is reduced to adding to it new server)
❖
The possibility of adapting to network conditions (way to exchange
data between the server and the related network or they are on the
same computer)
The main disadvantage of the micro-core
approach is the decrease in
performance. Instead of the two-time switchings of the processor mode in
case of a system call, four occur (two - during
the exchange between the
client and the micronucleus, two – during the exchange between the server
and the micronucleus).
This disadvantage is rather theoretical,
in practice, the performance and
reliability of the micronucleus depend primarily
on the quality of its
implementation. Thus, in QNX OS, the micro-kernel
takes up several
kilobytes of memory and provides a minimal set of functions, with the
system corresponding to real-time OS performance.