[Oberon] Concurrency support in Oberon
Skulski, Wojciech
skulski at pas.rochester.edu
Wed Nov 23 05:42:12 CET 2016
Srinivas:
> But how to make a Oberon program run on bare Linux, i.e.
> how to create runtime environment for an Oberon program
> using Linux linker and loader, that is now on my head...
I am not sure if there is such a thing as a Linux linker and loader. I thought that the Linux toolchain was named gcc. With that perspective, the work has already been done.
en.wikipedia.org/wiki/Oberon-2#Implementations says:
The Optimizing Oberon-2 Compiler compiles to C, using the gcc toolchain for program generation. [...] XDS Modula2/Oberon2 [...] contains an optimizing compiler for Intel Pentium, or "via-C" translator for cross-platform development. Available for Windows and Linux.
Also do not forget Ofront.
> On import, we have to load modules on the fly...
> We should be able to unload modules and re-load...
Linux kernel can load and unload "kernel modules" on demand with commands such as insmod and modprobe. Furthermore, internally the Linux kernel is a cooperative multitasking environment without memory protection. Sounds familiar? I found this information in Linux kernel programming books. These books also say that "kernel modules" are a form of OOP. If I look at Linux kernel, then Il recognize the most important Oberon System features in disguise.
I have not seen any reference to Project Oberon in Linux literature despite some Linux kernel architects being prominent figures in academic computer science. Oberon System predated Linux "kernel modules", if I am not mistaken. Linux creators seem not to know the history of their own field.
> I feel, writing a Linux like OS using Oberon is possible...
> Forgetting for the time being Garbage collection and command activation...
> And providing certain run-time data structures...
First, why write another Linux if you have the original? What would you gain?
Second, it is not a stretch to say that Oberon System is an OS kernel by itself. Just the way it is now, it is quite analogous to the Linux kernel. If you agree with that, then you "only" need to add the notion of tasks running in the user memory space, while the Oberon System now assumes the role of the Linux kernel. You "only" need to add virtual memory for the user space, as well as "system calls" to break through the user/kernel barrier. The system calls can be executed by user programs written in some other language other than Oberon.
After doing this you will have an analogon of the Linux architecture. I am not sure what would be a benefit of developing such a copy.
W.
More information about the Oberon
mailing list