Page 44 - DCAP403_Operating System
P. 44
Unit 3: Operating System Structure
3.4.2 Client-server Model Notes
A trend in modern operating systems is to take this idea of moving code up into higher layers
even further, and remove as much as possible from the operating system, leaving a minimal
kernel. The usual approach is to implement most of the operating system functions in user
processes. To request a service, such as reading a block of a file, a user process (presently known
as the client process) sends the request to a server process, which then does the work and sends
back the answer.
In Client-server Model, all the kernel does is handle the communication between clients and
servers. By splitting the operating system up into parts, each of which only handles one fact of
the system, such as file service, process service, terminal service, or memory service, each part
becomes small and manageable; furthermore, because all the servers run as user-mode processes,
and not in kernel mode, they do not have direct access to the hardware. As a consequence, if a
bug in the file server is triggered, the file service may crash, but this will not usually bring the
whole machine down.
Another advantage of the client-server model is its adaptability to use in distributed system. If a
client communicates with a server by sending it messages, the client need not know whether the
message is handled locally in its own machine, or whether it was sent across a network to a server
on a remote machine. As far as the client is concerned, the same thing happens in both cases: a
request was sent and a reply came back.
Figure 3.4: Client-server Model
Client Memory Network
application server server
Process File Display
server server server
User
Kernel
Microkernel
Hardware
3.4.3 Exokernel
Exokernel is an operating system kernel developed by the MIT Parallel and Distributed Operating
Systems group, and also a class of similar operating systems.
The idea behind exokernel is to force as few abstractions as possible on developers, enabling
them to make as many decisions as possible about hardware abstractions.
Applications may request specific memory addresses, disk blocks, etc. The kernel only ensures that
the requested resource is free, and the application is allowed to access it. This low-level hardware
access allows the programmer to implement custom abstractions, and omit unnecessary ones,
LOVELY PROFESSIONAL UNIVERSITY 37