Megalithic Kernel: Difference between revisions

From OSDev.wiki
Jump to navigation Jump to search
[unchecked revision][unchecked revision]
Content added Content deleted
(New page: {{Template:Kernel designs}} A '''Megalithic Kernel''', or ''Megakernel'', is a kernel designed to only run binaries in kernel mode. This is in contrast to a usual monolithic kernel or mic...)
 
(In the case of VMs, we'd basically have a monolithic kernel since that would result in the kernel being in a different address space.)
Line 3: Line 3:
A '''Megalithic Kernel''', or ''Megakernel'', is a kernel designed to only run binaries in kernel mode. This is in contrast to a usual monolithic kernel or microkernel, which are typically designed to handle multiple user-mode processes. Megalithic kernels are simpler in design. They often need not support task switching for processes or virtual memory, and often are just a single monolithic binary, simplifying linking.
A '''Megalithic Kernel''', or ''Megakernel'', is a kernel designed to only run binaries in kernel mode. This is in contrast to a usual monolithic kernel or microkernel, which are typically designed to handle multiple user-mode processes. Megalithic kernels are simpler in design. They often need not support task switching for processes or virtual memory, and often are just a single monolithic binary, simplifying linking.


Megalithic kernels may employ a variety of strategies to get around the perceived limitations of never running a user process. Some megalithic kernels may compile all application code into the kernel, but this is generally not convenient. The kernel would need to be recompiled any time a new application is installed, removed, or otherwise altered. A more practical megalithic design is to include a virtual machine of some sort within the kernel. The virtual machine would handle the execution of user application code and form a level of software security between the code and the physical machine. User applications would be executed directly by this virtual machine (ie by interpreting compiled bytecode), meaning that any operation requested by a user application would be ultimately handled by the kernel.
Megalithic kernels may employ a variety of strategies to get around the perceived limitations of never running a user process. Some megalithic kernels may compile all application code into the kernel, but this is generally not convenient. The kernel would need to be recompiled any time a new application is installed, removed, or otherwise altered.

Revision as of 12:55, 1 August 2011

Kernel Designs
Models
Other Concepts

A Megalithic Kernel, or Megakernel, is a kernel designed to only run binaries in kernel mode. This is in contrast to a usual monolithic kernel or microkernel, which are typically designed to handle multiple user-mode processes. Megalithic kernels are simpler in design. They often need not support task switching for processes or virtual memory, and often are just a single monolithic binary, simplifying linking.

Megalithic kernels may employ a variety of strategies to get around the perceived limitations of never running a user process. Some megalithic kernels may compile all application code into the kernel, but this is generally not convenient. The kernel would need to be recompiled any time a new application is installed, removed, or otherwise altered.