Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

Sydde

macrumors 68030
Original poster
Aug 17, 2009
2,552
7,050
IOKWARDI
This is just crazed personal musings, hence the odd subject. Sorry about that. You have been warned.



From time to time, I will look in on gnu.org, to see what might be going on with the hurd project. Interesting that this, the progenitor of Linuces, as it were, has been more than a quarter-century in the making and, as of now, is barely stable, negligibly useful, on the verge of being left behind for dead.

Yet the basic concept seems sound, if one is willing to sacrifice maximum performance for flexibility and security. But the sacrifice has been a painful choice, perhaps leaving contemporary OSes somewhat wanting in these areas for the sake of pleasing/impressing the user.

So, my thought was, what if the hurd project were to place an active object environment at the bedrock, as the primary means of reaching the kernel, as the basic structure of the OS. It seemed to me that some of the limitations of the microkernel (primarily, the cost of daemon IPC and its context switches) might be overcome through the use of an object model along the general lines of Cocoa (meaning as a part of OS architecture, rather than via the compiler, such as with C++).

How, then, does the "math" work out? If objects rely on "opaque references" instead of plain pointers ("opaque" in the sense that the table-lookup scheme is not defined across implementations, possibly even within one implementation), but service methods can operate mostly within the space of a process (perhaps small context adjustments), does it seem likely that the balance might work out in favor of an object-based architecture?

Cocoa is obviously a fairly thin layer on top of Darwin+Carbon, It would be interesting to see how well a system would perform with the paradigm reversed:
  • Live, run-time replacement/testing/upgrade of what are now perceived as system-level components.
  • Method selectors subjected to privilege testing, selectively (surgical application of security measures).
  • Classes offer a potentially lower-impact means of providing services than daemons+IPC.
  • Similarly, integration, to construct large, more complex application environments, is supported inherently by the object architecture.
  • Sub-classing the basic application object could allow processes to have finer control of things like scheduling and page-outs - meaning much of those functions can also live outside kernel (privileged) space.
  • Traditional Unix-style applications could be supported by embedding them in an application object.

I think I will be more careful in future as to when I am eating the sharp cheese.
 

Catfish_Man

macrumors 68030
Sep 13, 2001
2,579
2
Portland, OR
Have you seen Microsoft's "Singularity" research project? It seems microkernels get a lot more practical when you can run everything in ring 0 in a single address space. Not having to do TLB flushes, etc... cuts IPC time a lot.
 

Sydde

macrumors 68030
Original poster
Aug 17, 2009
2,552
7,050
IOKWARDI
Made me think of the Smalltalk environment, as well as Genera, the OS for Lisp machines: http://en.wikipedia.org/wiki/Genera_(operating_system)

Everything was written in Lisp, all object-oriented, and you could modify any part of the OS at runtime. The OS and the development environment were essentially the same.

The idea behind the Hurd is to be able to modify or replace system components without shutting down or rebooting. And, of course, one of the ideas behind Objective-C, so to speak, was Smalltalk.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.