Compatibility With Legacy Systems
Just because you are producing a new system doesn't mean you have to do without any useful software, these days there are some interesting ways of getting good applications running quickly even in a completely new system.
A major problem for any new platform is the lack of applications. Emulators are available of course but are complex and don't generally perform as well as native processing, often a great deal worse.
These days you can get almost every application you need for Linux or other Unix like operating systems, Open Source means that one option of achieving legacy compatibility is by including an entire OS, all you need to do is make sure it works on your hardware.
Dual booting is a pain however and ultimately you want to run the applications from within a single environment alongside your new platform applications.
You can do something like this using a virtualising layer, i.e MacOnLinux allows you to run OS X on top of PowerPC variants of Linux, but the virtualisation as always impacts performance and the applications are still in their own environment.
There is another way however. By combining a specific high performance virtualisation layer with the existing X Windows technology.
The virtualisation layer is called Xen [Xen], it enables multiple operating systems to run on the same hardware at almost 100% performance [XenPerf] by sharing the hardware between the OSs. The use of X Windows would allow the display to be used within the main OS.
So, we can get a whole set of up to date applications without ever having to leave the main OS by including a Unix or like OS and running it alongside the main OS. This could potentially be a usability nightmare but that can be fixed with care.
The main OS could also take advantage of subsystems in the secondary OS, i.e. the USB support in the secondary OS could be used if the primary OS did not support all USB devices (many USB devices do not adhere to the standard and thus have to be specially supported). This is a hack but a useful and justifiable one for a new OS which will be limited when it is starting out.
By incorporating a Xen like technology into our new OS we can get full performance in the main system and close to 100% in the second OS, the microkernel / exokernel design I have proposed for the new OS would allow this, Xen itself is an exokernel and drivers already exist which allow Linux to run on it.
So after all that we do use Linux (or BSD) after all...
What about drivers?
The advantage of integrated systems (where hardware and software is done by one company) is that the main drivers are going to be relatively easy to get from companies since you are purchasing their products. The problem comes when you want to support products you do not supply as anyone who has worked on alternative OSs can tell you. If you can get documentation that's fine but short of paying for them getting drivers for any new platform is going to be a hard slog.
Starting from a clean sheet will always have costs but also has many advantages. By using the microkernel approach drivers in particular can be treated differently giving the OS abilities like drag and drop installation of drivers while the system is running (ala BeOS). It will also be possible to restart even fairly critical parts while the system is live - rather useful if you are working on something you haven't saved yet.
So we have a exokernelified (spell check that!) version of Haiku for a base OS but the system can equally run existing Unix software in the same environment. The OS services would be provided by the upper level Haiku "kits" so we get the same capabilities as BeOS but that's not all, if we are talking about a new system we can go further and make them better.
In the part 3 I shall cover what I'd like to do with Security, File system and File management.
References / Further Information
[RubyList] Ruby OS list of Best Features.
[Haiku] Haiku (previously OpenBeOS).
[Licenses] Use of Open Source in commercial projects discussion.
[Micro] Page about Microkernels.
[Kernel] Intro to different Kernel types.
[async] Unix uses synchronous messaging and this puts microkernels at a disadvantage, an informative posting.
[Zeta] Zeta is the continuation of BeOS from Yellowtab.
[Dragon] There are efforts to add asynchronous messaging to Unix, one of the goals of the DragonflyBSD project is to add asynchronous messaging to a FreeBSD based kernel, DragonFlyBSD.
[Xen] Xen allows multiple OSs to share hardware Xen project.
[XenPerf] Performance is very close to native systems Xen performance.
© Nicholas Blachford July 2004
About the Author:
Nicholas Blachford is a 33 year old British ex-pat, who lives in Paris but doesn't speak French (yet). He is interested in various geeky subjects (Hardware, Software, Photography) and all sorts of other things especially involving advanced technologies. He is not currently working.
If you would like to see your thoughts or experiences with technology published, please consider writing an article for OSNews.