|
![](/i/fill.gif) |
On 6/2/2011 7:38, Invisible wrote:
> Every OS I know is based around a series of assumptions. In particular, that
> a "program" is just a monolithic block of machine code, and that the only
> "services" that it needs from the OS is resource allocation, protection, and
> control over the hardware.
You should read about Singularity, wherein this is exactly the problem being
addressed. "Why do all the OSes do this? Because that's what an OS was
needed for in the 1970's, the early days of timeshare. Let's see what an OS
needs to do today...."
> ...until you realise that changing the design of the GC is likely to break
> all your applications. Unless they're written in a sufficiently high-level
> language that they can't "see" this level of detail.
Yep. That's exactly what Singularity does. Except the "high-level language"
is basically MSIL, and the GC engine is compiled into each program, so
different programs can use different GC engines.
> That makes you start to think what /other/ kinds of services you might want
> the OS to provide. For example, this whole "a command is a file name, and
> its arguments are strings passed uninterpretted to the program" thing.
> Surely we can do better.
If you really want to see, look at some of the new OS research. Read the
Singularity design documents, for example. There's some really cool stuff in
there when you get an OS that can rely on your programs actually declaring
in their manifest what resources they need and the OS can rely on the
programs actually obeying the semantics of the OS. (E.g., you get stuff like
bits of the kernel being compiled into the executable code for efficiency,
stuff like page faults being handled in user space, etc.)
--
Darren New, San Diego CA, USA (PST)
"Coding without comments is like
driving without turn signals."
Post a reply to this message
|
![](/i/fill.gif) |