ManRiX, The Design of Robust and Efficient Microkernel Presented by: Manish Regmi (firstname.lastname@example.org) Rajesh Bikram R.C. (email@example.com) 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 • Microkernel based Design. • Only few essential services in Kernel space. • All other services in User Space. • Applications Communicate through IPC. ManRiX’s Microkernel ManRiX’s Architecture
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 http://manrix.sf.net