You are on page 1of 2


rnel has simple design. Monolithic kernel is a single large processes running en
tirely in a single address space. It is a single static binariy file. All kernel
services exist and execute in kernel address space. The kernel can invoke funct
ions directly. The examples of monolithic kernel based OSs are Linux, Unix.
In Microkernels, the kernel is broken down into separate processes, known as ser
vers. Some of the servers run in kernel space and some run in user-space. All se
rvers are kept separate and run in different address spaces.The communication in
microkernels is done via message passing. The servers communicate through IPC (
Interprocess Communication). Servers invoke "services" from each other by sendin
g messages. The separation has advantage that if one server fails other server c
an still work efficiently. The example of microkernel based OS are Mac OS X and
Windows NT.
i know linux kernel is Monolithic kernel
but i read it has many disadvantages:
1- Coding in kernel space is hard
2-Bugs in one part of the kernel have strong side effects
3-Kernels often become very huge (more than 100 MB of source code )
4-The presence of strong side effects makes the whole kernel less modular
5-traditional design of Unix systems

Lamport's logical clock?
Leslie Lamport proposed this scheme to provide ordering of events in a distribut
ed environment using logical clocks. Because it is impossible to have perfectly
synchronized clocks and global time in a distributed system, it is often necessa
ry to use logical clocks instead.
Happened Before Relation (->). This relation captures causal dependencies betwee
n events, that is, whether or not events have a cause and effect relation. This
relation (->) is defined as follows:
a -> b, if a and b are in the same process and a occurred before b.
a -> b, if a is the event of sending a message and b is the receipt of that mess
age by another process.
If a -> b and b -> c, then a -> c - that is, the relation has the property of tr
Causally Related Events: If event a -> event b, then a causally affects b.
Concurrent Events: Two distinct events a and b are concurrent (a || b) if (not)
a -> b and (not) b -> a. That is, the events have no causal relationship. This i
s equivalent to b || a.
For any two events a and b in a system, only one of the following is true: a ->
b, b -> a, or a || b.
Lamport introduced a system of logical clocks in order to make the -> relation p
ossible. It works like this: Each process Pi in the system has its own clock Ci.
Ci can be looked at as a function that assigns a number, Ci(a) to an event a. T
his is the timestamp of the event a in process Pi. These numbers are not in any
way related to physical time -- that is why they are called logical clocks. Thes
e are generally implemented using counters, which increase each time an event oc
curs. Generally, an event's timestamp is the value of the clock at that time it
Conditions Satisfied by the Logical Clock system:
For any events a and b, if a -> b, then C(a) < C(b). This is true if two conditi
ons are met:
If a occurs before b, then Ci(a) < Ci(b).
If a is a message sent from Pi and b is the recept of that same message in Pj, t
hen Ci(a) < Cj(b).
Implementation Rules Required
Clock Ci is incremented for each event: Ci := Ci + d (d > 0)
if a is the event of sending a message from one process to another, then the rec
eiver sets its clock to the max of its current clock and the sender's clock - th
at is, Cj := max(Cj, tm + d) (d > 0)