[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: how to define what is kernel



On 9/21/06, Jabka Atu <mashrom.head@gmail.com> wrote:
Good evening...
im creating a tips and triks lesson and i need to define what is module
and what is kernel .
could you plz advise how to define what is kernel :
is it the collection of program (modules) that allow interaction between
harwdare resorses and the operation system.
Module:
is it a spesific program that create the interaction between hardware
and  the software.

sorry for the spelling errors ..

Google can help you.  The wiki
[http://en.wikipedia.org/wiki/Kernel_(computer_science)] indicates:

"The kernel is the central part in most computer operating systems
which manages the system's resources and the communication between
hardware and software components. As a basic component of an operating
system, a kernel provides abstraction layers for hardware, especially
for memory, processors and I/O that allows hardware and software to
communicate. It also makes these facilities available to userland
applications through inter-process communication mechanisms and system
calls."

"These tasks are done differently by different kernels, depending on
their design and implementation. While monolithic kernels will try to
achieve these goals by executing all the code in the same address
space to increase the performance of the system, microkernels run most
of their services in user space, aiming to improve maintainability and
modularity of the codebase."

It explains more than that and even go a bit beyond on micro kernels
vs monolithic ones clarifications.  The same page has references to
modules:

"Microkernels are often used in embedded robotic or medical computers
where crash tolerance is important and most of the OS components
reside in their own private, protected memory space. This is
impossible with monolithic kernels, even with modern module-loading
ones."

"Modern Unix-derivates are generally based on module-loading
monolithic kernels."

There's a definition for modules in faqs.org
[http://www.faqs.org/docs/kernel/x41.html]:

"Modules are pieces of code that can be loaded and unloaded into the
kernel upon demand. They extend the functionality of the kernel
without the need to reboot the system. For example, one type of module
is the device driver, which allows the kernel to access hardware
connected to the system. Without modules, we would have to build
monolithic kernels and add new functionality directly into the kernel
image. Besides having larger kernels, this has the disadvantage of
requiring us to rebuild and reboot the kernel every time we want new
functionality."

I think this definition is not accurate since module-loading kernels
are still monolithic.  However the definition is pretty proximate.
Simply put, modules are like pieces of the monolithic kernel which can
be attached unattached dynamically without requiring reboot.  Of
course these pieces have a purpose well described in previous
definition.  However the address space used by modules is the same
monolithic kernel one, that's the reason I would treat them as pieces
of the kernel, or extensions if you'd like, but they don't make the
kernel non monolithic.  I would just remove the "monolithic" sentence
from previous definition, :)

Of course I'm not a computer science guy though.  So there might be
better references out there and also better feedback as well.

--
Javier



Reply to: