Oberon - Not Your Ordinary OS ;-)
Posted: Mon Sep 17, 2007 6:40 pm
I think you are being to hard on both Oberon and Bernhard. No, Oberon is not like Unix, Linux, or Windows. Which is good. It offers a research platform into alternative ways of accomplishing the functions of an operating system. Remember also that an operating system is defined by far more than it's user interface.
Oberon is completely object-oriented, much like Java. It is written in the Oberon language, a simple object-oriented language similar to Pascal (the language and the OS were developed, in part, by Niklaus Wirth, the creator of Algol-W, Pascal and Modula). Think of 'Oberon the language' as a compiled version of Java. Type-safe, runtime binding, and fast.
The most "unusual" feature of 'Oberon the OS' is that is uses a single address space (SAS). Instead of running each process in a virtual memory space, all processes are running in the same memory space. This means that "context switches" do not invalidate memory caches. So processes run at the speed of lightweight threads. Security between processes is managed by both the compiler and the runtime. While SAS may seem less secure, NSA has certified several SAS operating systems for multi-level security, including the IBM System i5 (AS/400, S/38). Inter-process communications (IPCs) become trivial when two processes are allowed to address the same data spaces and call each other's methods (subject to the approval of the compiler and the runtime). All Oberon needs is Single Level Storage (SLS); another innovative feature o the System i5. There is a "Persistent Oberon" variant that offers an SLS-like framework for those people that want to explore that avenue.
Oberon the language allows direct manipulation of the hardware registers, so Oberon the OS is written entirely in a high-level language, without the need for assembly code.
Garbage collection in an object-oriented system is always interesting. We've seen how Java does it within the virtual machine, and Microsoft does it in .NET. Oberon uses a tree structure to reference all the objects, and does a periodic 'mark' sweep of the tree, looking for and marking reclaimable objects. It then does a 'sweep' pass, harvesting the marked objects. This mechanism is fast and reliable, but certainly subject to debate. And it's these types of debates that makes studying and learning OSs so much fun!![Smile :-)](./images/smilies/icon_smile.gif)
The newest version of Oberon, known as both Active Object System (AOS) or Bluebottle, combines processes with objects. Much like a Java object that extends "Runnable", every AOS object is capable of being a process by the declaration of the {active} attribute.
So, in review:
Simple High Level language
All source code available and reasonable well documented
Object-oriented
Late-binding and runtime reflection
Compiled
Trivial IPCs
Easy threading (any object can be a process and all processes are like threads)
Ported to several different processor families, minimal hardware requirements, live CD...
What more could you ask for from a learning/research OS?![Smile :-)](./images/smilies/icon_smile.gif)
- Brad
Oberon is completely object-oriented, much like Java. It is written in the Oberon language, a simple object-oriented language similar to Pascal (the language and the OS were developed, in part, by Niklaus Wirth, the creator of Algol-W, Pascal and Modula). Think of 'Oberon the language' as a compiled version of Java. Type-safe, runtime binding, and fast.
The most "unusual" feature of 'Oberon the OS' is that is uses a single address space (SAS). Instead of running each process in a virtual memory space, all processes are running in the same memory space. This means that "context switches" do not invalidate memory caches. So processes run at the speed of lightweight threads. Security between processes is managed by both the compiler and the runtime. While SAS may seem less secure, NSA has certified several SAS operating systems for multi-level security, including the IBM System i5 (AS/400, S/38). Inter-process communications (IPCs) become trivial when two processes are allowed to address the same data spaces and call each other's methods (subject to the approval of the compiler and the runtime). All Oberon needs is Single Level Storage (SLS); another innovative feature o the System i5. There is a "Persistent Oberon" variant that offers an SLS-like framework for those people that want to explore that avenue.
Oberon the language allows direct manipulation of the hardware registers, so Oberon the OS is written entirely in a high-level language, without the need for assembly code.
Garbage collection in an object-oriented system is always interesting. We've seen how Java does it within the virtual machine, and Microsoft does it in .NET. Oberon uses a tree structure to reference all the objects, and does a periodic 'mark' sweep of the tree, looking for and marking reclaimable objects. It then does a 'sweep' pass, harvesting the marked objects. This mechanism is fast and reliable, but certainly subject to debate. And it's these types of debates that makes studying and learning OSs so much fun!
![Smile :-)](./images/smilies/icon_smile.gif)
The newest version of Oberon, known as both Active Object System (AOS) or Bluebottle, combines processes with objects. Much like a Java object that extends "Runnable", every AOS object is capable of being a process by the declaration of the {active} attribute.
So, in review:
Simple High Level language
All source code available and reasonable well documented
Object-oriented
Late-binding and runtime reflection
Compiled
Trivial IPCs
Easy threading (any object can be a process and all processes are like threads)
Ported to several different processor families, minimal hardware requirements, live CD...
What more could you ask for from a learning/research OS?
![Smile :-)](./images/smilies/icon_smile.gif)
- Brad