To view parent comment, click here.
To read all comments associated with this story, please click here.
Singularity also provides HIP (Hardware Isolated Processes) that can be used in lieu of SIPs to isolate native code from the kernel and other programs. So it is entirely possible to use native code in the place of garbage-collected managed code.
OTOH, managed OSes are hopefully going to bring us to a day when we can forget about TLBs, virtual memory protection, and all the other costly artifacts of unsafe languages. Computers could become about 10-20% more efficient at accessing memory if they didn't have to go through the whole virtual-to-physical translation that's necessitated by allowing pointers as data elements. Compatibility in this world would be maintained by just having one or two compatiblity cores on the machine running a hypervisor or VM with the old OSes. An OS distributed as bytecode would also allowspecialization of the software at the end-user's machine, making the particular ISA of a processor matter a little less as long as it meets the needs of the program.






Member since:
2006-02-05
Sorry, I should have said 40 years (I wasn't really thinking). A longer timeframe actually supports my argument though.
You are wrong here. They ran way slower. But it was a higher level, and more importantly, a portable language. C was the big, revolutionary thing UNIX had going for it when it came out. K&R kind of decided that the machines were fast enough at that point that the additional cost in performance was outweighed by the numerous advantages.
here is a quote from the UNIX wiki
In 1973, Unix was rewritten in the C programming language, contrary to the general notion at the time "that something as complex as an operating system, which must deal with time-critical events, had to be written exclusively in assembly language".[4] The migration from assembly language to the higher-level language C resulted in much more portable software, requiring only a relatively small amount of machine-dependent code to be replaced when porting Unix to other computing platforms.
(http://en.wikipedia.org/wiki/Unix#1970s)
I'm not quite sure what you are talking about here. it is very easy to work with C code in C# (here is a site that gives you method signatures for most of the common windows APIs http://pinvoke.net/). What C# has going for it over C is improved security, stability, interoperability and theoretically, portability. The price you pay is some additional overhead at runtime for actually managing the process.
The argument isn't about interop, it is about performance.
Edited 2008-02-09 16:30 UTC