Here are some links to info for those who wish to implement a language based OS.
These are not the usual type of OS described around these parts so this sort of info might be new to some of you. What is a language based OS? Imagine an OS and systems programming environment all in the same package and you'll have a fairly good idea what it is all about. Some of these systems are a million miles from the Unix world which dominates many of the thoughts and designs of posters to this forum. I post these links as "interesting info", not necessarily as an indication of "how it should be done" (even if I do prefer this way of doing things myself).
Please feel free to add to the list!
Smalltalk-80 The Language and its Implementation (book).
http://stephane.ducasse.free.fr/FreeBoo ... uebook.pdf
Chapters 26 to 30 describe the virtual machine (compiler, bytecode interpreter, memory management).The language implements processes and semaphores and specifies how the mouse, graphics display and keyboard should work and interface with the virtual machine. OS developers will recognise an awful lot here.
One of the Smalltalk machines that was built using info from this book is shown here:
A whole host of manuals for that system can be found here:
http://bitsavers.trailing-edge.com/pdf/tektronix/44xx/
Parlog as a Systems Programming Language (Ph.D. thesis)
https://archive.org/download/parlogasas ... 550mbp.pdf
How a parallel logic programming language (PARLOG) can be used for OS development. An OS written in a declarative programming language? This is a real eye opener!
Lisp machines (manufacturer's docs)
Documents covering the hardware architecture and system software for various Lisp machines:
TI Explorer:http://bitsavers.trailing-edge.com/pdf/ti/explorer/
MIT CADR:http://bitsavers.trailing-edge.com/pdf/mit/cadr/
MIT CONS:http://bitsavers.trailing-edge.com/pdf/mit/cons/
Symbolics machines:http://bitsavers.trailing-edge.com/pdf/symbolics/
Parallel Inference Machine Operating System (PIMOS) (research papers)
http://www.jipdec.or.jp/archives/icot/A ... eIRT-3.pdf
http://www.jipdec.or.jp/archives/icot/A ... RERR-1.pdf
http://www.jipdec.or.jp/archives/icot/A ... RERR-2.pdf
This is the OS used by the second stage of the Japanese 5th Generation Computer Systems project. This OS is written in a parallel logic programming language - KL1. Quite similar to the PARLOG example above.
Sequential Inference Machine Operating System (SIMPOS) (research papers)
http://www.jipdec.or.jp/archives/icot/A ... 84e004.pdf
http://www.jipdec.or.jp/archives/icot/A ... 84e006.pdf
The predecessor to PIMOS - sequential not parallel.
Language based OS design
Language based OS design
Every universe of discourse has its logical structure --- S. K. Langer.
Re: Language based OS design
FORTH
http://dec.bournemouth.ac.uk/forth/forth.html
http://en.wikipedia.org/wiki/Jupiter_Ace
http://www.holmea.demon.co.uk/Mk1/Architecture.htm
http://dec.bournemouth.ac.uk/forth/forth.html
http://en.wikipedia.org/wiki/Jupiter_Ace
http://www.holmea.demon.co.uk/Mk1/Architecture.htm
Every universe of discourse has its logical structure --- S. K. Langer.
Re: Language based OS design
ROM BASIC for the win.
Seriously though... you still need a full-blown kernel (just not a generalized one). Imagine if I ported the V8 engine as the primary task processor in my OS (this is actually a thought I've had, but way too painful to fathom; just rewriting the JIT would be a nightmare), what are the basic requirements? Async I/O drivers, ring0 protection, preemptive or at least RT task switching, etc, etc, etc. Nothing actually changes... you're simply offloading the end "process" launching manager to something (presumably) more expensive. I'm not saying it's not a valiant pursuit but just reminding people of this simple fact.
EDIT: And yes, I wrote my first program on an Apple ][ in that beautifully horrible BASIC interpreter that was it's "ring3" (non-existent) kernel, so there might be a bit of bias.
Seriously though... you still need a full-blown kernel (just not a generalized one). Imagine if I ported the V8 engine as the primary task processor in my OS (this is actually a thought I've had, but way too painful to fathom; just rewriting the JIT would be a nightmare), what are the basic requirements? Async I/O drivers, ring0 protection, preemptive or at least RT task switching, etc, etc, etc. Nothing actually changes... you're simply offloading the end "process" launching manager to something (presumably) more expensive. I'm not saying it's not a valiant pursuit but just reminding people of this simple fact.
EDIT: And yes, I wrote my first program on an Apple ][ in that beautifully horrible BASIC interpreter that was it's "ring3" (non-existent) kernel, so there might be a bit of bias.