It is surprising how sometime a simple decision can take so much thinking, how it can affect so much the overall design, and how hard it is to settle down on a final choice then say “that’s it”.
The overall role of an operating system is to provide the tools required for a software to execute, in order to simplify the life of a programmer in developping the tools and applications required to perform a specific task. With that in mind, then comes the ability to run multiple simultaneous applications, protection and safeguards between these applications, how these applications will co-exist and have to share access to the same resources.
Looking back at the origin of Unununium, it all started back when V2_OS was identified as seriously lacking proper design and most of its developers agreed to go for a rewrite. The only problem, these developers couldn’t agree on implementation specific ideas and the whole thing pretty much stagnated for some time. Myself and a few folks went on to create our own “4th Axis” way of doing things.
4th Axis, as with V2_OS, was aimed to have as little barrier between the software application and the hardware, providing as little as possible abstraction so the entire system would run as fast as possible. This contrast with common operating systems like Linux, Windows and MAC OS X where applications are severely limited in how they must access the hardware, that they will be pre-empted, they can’t access the memory of another process, etc. Not that these things are bad, they are helping ensure stability in a world where virus writers are king of the hill.
With the introduction of Unununium, 4th Axis lost its kernel; at least in concept. Some ideas were introduced like the ability to reload any component in the system no matter how critical it is; so that a reboot would in theory never be required and no component would have to permanently stay in memory.
So now I’m left deciding where this system is headed, whether I implement paging, multiple execution privilege levels, prevent applications from accessing other processes memory or simply allow the whole thing to simply run with as little hinderance as possible.
As there are many other choices all fighting to make the fastest and most stable secure operating system, and I’m not planning on having Unununium run on all machines on Earth and take over the world, the original ideas of V2_OS, which is the root of all this, should be maintained.
Unununium should be a set of tools and libraries to the software, not a security watchdog. In this essence, Unununium should allow a software application to shut down task switching, or to inspect the entire system memory. Similarly, it should also allow a software to perform I/O operations as desired. After all, what the world need is a good “introduction” operating system which can be used to learn how computer works so that they can then step-up to more complex and security intensive systems.
Unununium should come with a set of tools to do multi-tasking, to debug a software, to trace memory accesses. It should come with libraries to access the network, setup the video card, graphic libraries, etc. Out of all that, it should also allow an application to overtake any of these facets, to replace these components or disable them and even unload them from memory if required. The idea, is for the operating system to be there to help and complement the software.
With this in mind, now I can concentrate on planning how this will all come together..