Sunday, June 30, 2013

So what is "Big Speech" anyway?

So "Big Speech" is a play on Smalltalk. I envision a 64-bit operating system built on a microkernel or exokernel with virtual machine support. In some ways this will probably be similar in design to the GNU Hurd with the kernel being much closer to a hyper-visor than a standard OS kernel. The primary IPC mechanism I plan on using will be a modified version of the Smalltalk message protocol. Standard OS processes and services will probably run in separate virtual machines with a Smalltalk based interpreter. I would like the OS to support Hot Updates where core pieces of both the kernel and OS services can be updated and debugged in place, similar to what is found when working in a Smalltalk image. Why should my system require a reboot after an update, when new code should be able to replace existing code with a remapping of the data and code pointers, or service providers?  Sure the update mechanism and new code may be required to provide a translation stage before the OS continues on its way but that has to be better than a full hardware reset and reboot cycle.

Although there are parts of the Smalltalk language syntax that I do not currently like, initially I will be using Smalltalk as a basis for my future system. I hope to evolve the language to improve functionality, capability and readability; although that might just be my technical experience with the "C"-like family of languages talking. I have always loved the concepts and power behind Smalltalk, I just never got to use it professionally in a way that caused me to become fluent enough with its syntax and API. Down the line I imagine being able to work with other languages that compile to my Smalltalkish VM/OS message and byte-code system, opening the door to working with other languages for modifying the system.

In many ways this OS will start out like the original Smalltalk systems developed at Xerox Parc. The original systems were nothing more than some low-level assembly to provide machine IO access,  CPU primitives, and an interpreter that loaded and ran the Smalltalk system. I plan on creating a very similar system on modern hardware with a low-level system to maintain ring-0 and resource sharing, with OS system services implemented in a Smalltalk like interpretive environment.

In my next post I plan on talking about my Smalltalk implementation choice, but for now my Smalltalk skills are rusty, so it is time for me to go and play with some tutorials.


No comments:

Post a Comment