Miranda is an Open Source OS. It's released under the LGPL license.
We chose Open Source because we think that the freedom of the user
is fundamental: users should be able to do whatever they want with
We also think that this freedom shouldn't limit to the users, but
also the software they use(emacs, word). By freedom of programs,
I mean that user-level programs should have the right to make important
decision: this is done by giving them the possibility to manage
one, or all resources. If the program chooses not to, resource management
for it will be done by the LibOS. And all this done safely: the
level of protection, security is as high as in others!
This is why we chose the exokernel architecture.(to know more about
it see the section below).
This isn't over, Miranda is Object Oriented! This means that maintaining
the code will be a lot more easier, that code hacking will be easier,
all this results in a code of better quality.
To this end we chose the C++ language for it's power and flexibility.
OS Designing: A new approach
This abstract is based on research work done at the MIT Laboratory for Computer Science, more specifically, the papers by Dawson R. Engler et al. on their work on XOK/ExOS, an exokernel system with Unix-compatible API.
Copyright Yann Nicolas Dauphin.
This document attempts to explain in a simple manner what the Exokernel architecture is all about.
It is organized just like a dialog between two people; you and me .
Good reading, and most importantly understanding!
-The fundamental purpose of an OS is to enable several programs to run safely on the same computer.
The First OS(CP/M) did more than that: it also managed an abstracted resources, why?
To make the work of programmers easier:
- Before CP/M developers had to implement resource management in their software, that caused inefficiency. Integrating resources management in OS permitted developers to focus on their application.
- Other problems were complexity and portability, and that's where Abstraction comes in: it's just what the name says: it's the abstraction of resources into more simple things(Block abstracted to files...), it solves the portability problem because programs no longer worry about the underlying hardware.
As you see this approach has some benefits, but it has a big flaw: it centralizes resource management in a set of core abstraction that cannot be extended, specialized nor replaced.
is the problem?
needs differ, and there isn't(and there won't ever be) a way to
abstract physical resources or to implement core abstraction that
is best for all applications:
So centralized management comes into conflict with application needs, thus limiting performance and flexibility.
And that's why the exokernel says NO! So the exokernel doesn't really descend from CP/M since it doesn't implement what CP/M does(only what OS must do): it's more like a brother.
-Are You saying that OSes shouldn't manage resources nor abstract them?
That would be regression we want evolution!
- I'm saying that management shouldn't be centralized,
- I'm saying that user level programs should have the option of managing the resource(s) of his choice,
- I'm saying that we should leave interesting decisions to user level programs,
- I'm saying that saying that user level programs shouldn't be forced to use the abstraction provided by the OS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-But then How can we do this?
that's were things complicate themselves. I think the only way
to explain this to you is to expose you the main(see by that:
most important) exokernel concepts:
The exokernel introduced a new type of components in OSes, LibOSes(wait for next question to know what they are).
To give this freedom to user level programs, we separate management, wich we put inside a LibOS from protection, wich is the task of the kernel.
The only task of the kernel is to protect and the only task of LibOS(or LibOSes) is to manage.
Although management should be separated from protection, the kernel must manage some resources(CPU) for protection.
The kernel contains interfaces to all hardware, these interfaces are low-level(in it we speak of blocks, pages...) enough to permit a LibOS to implement resource management just like in Traditional OSes.
-What the heck is that LibOS thing?
LibOS is a (very very)modular library, wich in turn is made of
shared libraries(means that several programs can use the same
instance at the same time), these shared libraries all have a
one purpose: one that contains the File System...
The LibOS resides in user space,why? It a user level program: it's not privileged or trusted by the kernel.
Their purpose is to manage resources for other programs. But the fantastic thing is that they only manage the resources the clients(user level programs)wants them to, so they can manage the resources of their choice while leaving the rest to the LibOS.
But that doesn't end here a LibOS can be extended, specialized, debugged with programs like GDB while the system is running, upgraded without having to restart the computer, and lots more!!!!!!!!!!!!!!!!!!
-Why is LibOS a type of component, and not "a" component?
because there can be multiple LibOSes in one OS.
Just imagine the possibilities, an OS with:
- A LibOS created just for Web servers, it would manage resources the way web server need to work at full efficiency
- A LibOS that contains the Windows OS API and else to permit windows programs to run(without/few changes in the sources, of course after recompilation on that OS) on that OS.
The possibilities are infinite!
-Is there anything else I can do with an exokernel OS?
can have multiple File Systems in one OS without
needing to make partitions for every one of them.
There are lots of other things, but I won't tell them here, read Engler's thesis for more.
-Yeah, that Kind of good, but won't all these things make the system slow?
you got it all wrong!
On the contrary it speed things up! On ExoPC the experimental exokernel OS from the creator of the architecture, some unchanged Unix(to make this a Unix compatible LibOS was used)run up to 3 times faster than on Free BSD.
A web server(cheetah) of an exokernel OS, runs 10 times (!!!) faster than other Unix OSes' web servers.
That's not all, global system performance is 6 times better!
-Wow, you convinced me! Where can I get an Exokernel OS?
only going to cite 2:
I'm the project manager of this Project.
There isn't in a world, an other OS like this here's why:
- It implements the exokernel architecture(That's why it's here!)
- It is Object Oriented
- It's main FS is a journaling one
- It is POSIX compliant
- It's OPEN SOURCE!
- These are only the main things!
SourceForge main page(check this first):
This is the experimental OS brought by the creators of the Exokernel architecture. Since it experimental, don't think you'll replace your old OS to put this one intead! It's sort of a tech release showing that the concept can be implemented.