Wednesday, March 4, 2015

Linux and Windows Kernels



                                    What  is the Kernel?

The kernel is a fundamental part of any  operating system.  The average lay person is blissfully oblivious of its  existence.  Millions of people use a computer every day without  understanding how it actually functions.  Typically only a programmer would  ever deal with the Kernel directly.  Installing device driver software or  configuring a network protocol is probably as close as most people will ever  get to the Kernel.  The Kernel is the core of the operating system at the  lowest and most basic level.  Its function is vital to practically all  operations.  The Kernel is to an operating system; what an engine is to a  car.  Without the Kernel, we could do little or nothing with our computer.

                                                    Similarities

Both Linux and Windows Kernels control the low level system  software and interactions with the computer’s hardware via the Hardware  Abstraction Layer (HAL).  In this manner the Kernel keeps the remainder of  the operating system independent of the hardware which in turn allows for  much greater portability.  Operating system  Kernel’s are written in a high level language known as C.  The C language  was chosen because C has been ported to practically every hardware platform  in existence.  Portability is important to programmers and software  companies because it means less work, less time and less expense.  Both  Kernels handle things like device drivers, caching, virtual memory, network  protocols, file systems, process creation and termination and system calls.   The objective of a Kernel is similar from system to system but the approach  can very different between operating systems.

                                     The Kernel in Linux

The Linux Kernel refers to everything that  runs in Kernel mode and is made up of several distinct layers.  At the  lowest layer, the Kernel interacts with the hardware via the HAL.  At the  middle level, the UNIX Kernel is divided into 4 distinct areas.  The first  of the four areas handles character devices, raw and cooked TTY and terminal  handling.  The second area handles network device drivers, routing protocols  and sockets.  The third area handles disk device drivers, page and buffer  caches, file system, virtual memory, file naming and mapping.  The fourth  and last area handles process dispatching, scheduling, creation and  termination as well as signal handling.  Above all this we have the top  layer of the Kernel which includes system calls, interrupts and traps.  This  level serves as the interface to each of the lower level functions.  A  programmer uses the various system calls and interrupts to interact with the  features of the operating system.

                       The Kernel and ‘Kernel Mode’ in Windows

The Kernel within the Windows   operating system is somewhat different than that of LINIX because Microsoft has  taken a somewhat different approach to the Kernel’s design.  The term  “Kernel mode” refers to not only the Kernel itself but the HAL and various  system services as well.  This would include the HAL(hal.dll) at the  bottom layer, followed by the Kernel at the second layer.  The third layer  is the Kernel.  Above that (fourth level) we have various managers for  Objects, processes, Memory, Security, Cache, Plug in Play (PnP), Power,  Configuration and I/O.  The file system and Win32 GDI are also at this  level.  The many of the items at this fourth level are referred to  collectively as the Windows Executive (ntoskrnl.exe).  At the top and  fifth layer of the Kernel mode are system services.

                                               Summary

As you can see, both Linux and Windows   operating systems have a Kernel that performs similar functions.   However, both Kernels are designed quite differently.  In the world of  computers; there are many ways to achieve the same goals.

No comments:

Post a Comment