![]() |
μString kernel [[idx]] |
μString is a microkernel or exokernel (call it whatever like you want) - a part of the Jari Operating System Research Project.
For the better support and project life it's licensed under GNU GPLv2 License and you can freely use it in your targets, modify and run this microkernel.
μString designed to be stable exists to both source code and API, it's supposed to be a source code backward compatibility that makes a development more effictive compairing with linux kernel for example.
μString has a many differences with regular operating system kernels. There are another architecture and another rules.
Many existing microkernels have many drivers and semantics implemented in, but μString doesn't.
Our kernel goes with a minimal way and doesn't know about semantics, only several things are implemented within kernel - it's a bootstrap drivers of PICs, timers and SMP related devices, and a security simple abstraction - there are generally two groups of the user space applications - trusted and untrusted.
Here the features table:
| Feature | GNU Linux | GNU Mach | μString |
|---|---|---|---|
| Memory management | kernel | kernel | only basics in kernel |
| Scheduling | kernel | kernel | kernel |
| Threads | kernel | kernel | user space |
| Exceptions | kernel | kernel | user space |
| Exceptions and irq routing | kernel | kernel | kernel |
| Device drivers | kernel | kernel, user space | user space |
| Internal naming | kernel | user space | user space |
| Security | kernel | kernel | user space |
| IPC | kernel | kernel | user space |
| Virtual File System | kernel | kernel | user space |
| File Systems | kernel | user space | user space |
| Hardware Bus support | kernel | kernel | user space |
| TCP/IP | kernel | kernel | user space |
| Terminals support | kernel | user space | user space |
Moving all logical abstractions from kernel to user space, giving a lot of benefits, such as security and performance benefits.
μString kernel has a several key features that makes possible to built an extended operating system set.
| Kernel | Real-time scheduling | O(1) memory allocating | CPU monopolizing | Drivers isolation | Strong security |
|---|---|---|---|---|---|
| Linux | none | none | none | none | yes, via patch |
| GNU Mach | none | none | none | yes, with limits | yes |
| QNX | yes | none | none | yes | none |
| MS Windows | none | none | none | none | none |
| μString | yes | yes | yes | yes, full w.IOMMU | yes |
With μString you can setup a hard politics for your servers and have a determined CPU time slices for each task what you want.
Also, there are possible to limit memory amount for tasks and make a guarantee for task operational.
There are many papers written about microkernel vs monolithic kernel.
You can find many pluses and minuses of the both architectures, but there are many reasons to use microkernel in your operating system includeing the following:
In addition you getting the new features with μString microkernel:
There are many pluses that provide microkernel architecture and MString itself, now you can get involved with this technology to improving your system, research new technology and many many other purposes.