ManRiX, a microkernel based Operating System
Download
Report
Transcript ManRiX, a microkernel based Operating System
ManRiX, The Design of Robust
and
Efficient Microkernel
Presented by:
Manish Regmi ([email protected])
Rajesh Bikram R.C. ([email protected])
NITC (Nepal information Technology center)
Singhadurbar Kathmandu, Nepal
Introduction
Microkernel
A tiny kernel with very essential services in Kernel space and
rest services in user space.
ManRiX
Microkernel architecture with POSIX compliance.
Written from scratch using C & Assembly.
Separate architecture dependent and independent files.
Open Source project.
ManRiX’s Design
ManRiX’s Microkernel
ManRiX’s Architecture
Microkernel based Design.
Only few essential services in Kernel space.
All other services in User Space.
Applications Communicate through IPC.
Microkernel Components
Process and Threads
Process Passive Entity and Threads Active entity.
Process just encapsulates the threads and provides address
space.
Memory Management
Memory Manager is based in Mach’s VM design.
VM manager is divided into two parts, the machine dependent
part called that Pmap and the machine independent part called
the vmmap.
Supports read/write sharing of memory and copy on write
sharing of memory.
Uses a slab allocator (conceived by Solaris) to allocate kernel
memory.
Contd…
POSIX Signal and Timers.
Signals provide a mechanism for notifying processes of system events.
26 signals standard POSIX signals and 5 are Real-time Signals.
Inter Process Communication (IPC).
IPC through Synchronous Message Passing.
Three types of messages:
SHORT: messages in CPU Registers.
LONG: Copying of messages (< 256 bytes).
MAP: Through Page Table Mapping.
Interrupt Management
Microkernel doesn’t handle interrupts in kernel space.
Microkernel acts as an IRQ redirector. User Space Applications run the
Interrupt Handler.
Idle Hooking
ManRiX microkernel is capable of making effective use of idle CPU.
The user can hook a function to run when the processors are idle.
Contd…
Kernel Preemption
Microkernel is a fully preemptible. It means that it is able to preempt a thread even
if it is running in kernel mode.
Highly increases the responsiveness of the system and decreases the latencies.
Preemption can be disabled at critical section.
Symmetric Multiprocessor (SMP) support
ManRiX supports Multiprocessors.
For Now supports Intel Multi Processors (MP) systems only.
Kernel Synchronization through Spin locks.
Scheduler
Supports POSIX style scheduler.
128 priorities where numerically lower value means low priority and vice versa.
Scheduler is capable of distinguishing between interactive and non interactive
threads.
Scheduler is aware of multiprocessors. Each processor has its own run queue.
Automatic balancing of Load.
User Space Components
Based on Client Server Architecture
Reduce IPC overhead through implementation
Important Components are:
File server.
Console server.
Separate Device Driver managers for separate devices.
Bus manager to manage PCI, USB Buses.
ATA manager for managing IDE disks.
Floppy Manager for Managing Floppy Controllers.
Miscellaneous manager for those who do not have their own server.
ManRiX>> Microkernel>> POSIX
Why ManRiX?
Learn how Operating Systems, Device Drivers work.
An attempt to make fast Microkernel based OS.
Why Microkernel?
Microkernel design makes ManRiX modular and scalable.
The fault in one subsystem does not bring the whole system down.
Subsystems and drivers can be restarted at runtime.
Microkernel code grows slower than that of Monolithic kernels.
Why POSIX?
End users and software developers does not need to learn ManRiX
specific things.
Cuts down Training Cost and time.
UNIX/Linux programs will be source compatible with ManRiX.
Future Plans
High Availability Manager.
Network Manager.
Porting open source applications
Support X windows and different window managers
Port to different architectures like PPC, X86_64, Motorola,
ARM etc.
Make it real time capable.
Q&A
Thank You!
http://manrix.sf.net