Why Aren't Operating Systems Getting Faster as Fast as Hardware? (1990) [pdf]
web.stanford.edu
web.stanford.edu
So, there's all kinds of ways to improve things at each layer. Many were done and are being done with vast improvements over the competition of the time period. Why do mainstream OS's not improve as mainstream hardware improves? Bad design, bad implementation, and strong desire for backward compatibility that makes fixes hard. Good news is there's a niche market and academic R&D that are always creating clean-slate stuff that does it better.
Admittedly, though, replacing a full OS isn't likely to happen as users reject anything without feature X, app Y, or benchmark Z. The thing is there's a lot of those things in an OS to the point that barrier of entry to building one is insanely high. Even Solaris 10, despite having a hell of a start, cost over $200 million to design, implement, and test. Best shortcut to that I've seen are the Rump kernels. That combined with the clean slate work means we might see a better thing happen incrementally over time.
Best shortcut to that I've seen are the Rump kernels.
Well, not really. Rump kernels are a godsend shortcut (similar to DDE, but much more advanced) for device drivers, but Blub-loving users wanting their apps means you still need to roll a POSIX userland of some sort (the way GNU Hurd does it over Mach is quite interesting, it supports things like processes with multiple uids with all POSIX calls being RPC that delegates to object servers) or since we're talking about a mainstream improvement here, Darwin/XNU and maybe even Windows NT. No escape.
Far as BeOS, I found this word document where some people wrote up a summary of design decisions that boosted performance, reliability, and how easy it was to develop on vs eg POSIX.
https://users.cs.jmu.edu/abzugcx/Public/Student-Produced-Ter...
Hope those help.
Systems Software Research is Irrelevant (aka utah2000 or utah2k)
By Rob Pike (Lucent Bell Laboratories, Murray Hill)
“This talk is a polemic that distills the pessimistic side of my feelings about systems research these days. I won’t talk much about the optimistic side, since lots of others can do that for me; everyone’s excited about the computer industry. I may therefore present a picture somewhat darker than reality. However, I think the situation is genuinely bad and requires action.”If memory bandwidth forms the bottleneck, then a faster processor is of little use.
http://www.techrepublic.com/blog/classics-rock/the-80s-super...
Old Cray sustained bandwidth is still higher than recent Core iX cpus, making them 'faster' for actual workload, even though their peak bandwidth is lower. The CPU GFLOPS will be a lot less useful if they don't have data to flop onto. System Design vs Marketing.
That's still difficult to archive with a desktop.
If you do trivial operations across arrays of linear memory current Intel processors are orders of magnitude faster than naive serial programming. Lots of C code that looks fine can be sped up by 12x by rearranging memory access, and by 50x using SIMD.
Any recommended papers on this topic?
http://www.amazon.com/Computer-Systems-Programmers-Perspecti...
I was referring to that part :
> the real world mflops of the C90, working on data sets too large for a typical pcs small cache, works out to roughly 8.6 gflops while the Intel Core i7 2600 will achieve only about 1gflops sustained on problems out of cache.
I thought this paper was kind of silly when it came out, and still think it is.
Also, while I'm piling on Ousterhout, Tcl has got to be the most overrated winner of the ACM system software award.
Tcl plus the Welch book is pretty good. You get purely event driven programs. I've replaced three or four Big Piles O' Java (that didn't work) with Tcl scripts and in short amounts of time. Nothing particularly wrong with Java, but these Piles still existed...
The Welch book is the critical component...
Its nearest neighbor is Python, which is also just fine except that package management then becomes a real chore. It's also easy to forget that Scotty ( the SNMP extensions to Tcl ) was the real winner back in the first dotcom era.
It's probably pretty lousy for web caches, wan optimization and filesystems. It's very good at constructing workstation-based programs to run against embedded systems.
Sprite OS and the log-structured file system were his more interesting achievements, anyway.
Runs pretty fast IMO. But that's not really the issue. OSes do 1000x more than they ever did in the past, and if you go boot up some mid 80s or 90s machine, you'll see how much faster OSes actually are.
I play around on my old Pentium 133 from time to time, I always forget how long it took to load programs (at the time it seemed blazing fast ~1996).
Now, for the past 5-6 years computers really haven't gotten much faster (CPU or memory-wise)... they've gotten much lower power, and with SSDs becoming more common place that helps a lot. It will be interesting to see how the next few years shapes up.
It would be nice to see a ground up OS effort... I think ChromeOS is a decent attempt, but think it could be better with a slightly cleaner baseline.
I swear I'm not making this up.
We spent a lot if money to purchase MacCLint but it overflowed the stack by megabytes and so corrupted the heap. The author wasnt receptive of my advice to remove all its recursion, he asserted rcursion is necessary for compiler-like programs.
Recursive algorithms di not require recursive implementations. The pricedure fir converting recursion to iteration is documented by Robert Sedgewick in "Algorithms".
Really you do have a stack but its not the runtime stack.
MacCLint was a piece of work; I would be unsurprised were it to have local variables that were megabytes in size.
That is I don't know the depth of recursion but I do know that it blew out the 32 kB limit by megabytes.
MacCLint is also the reason why I always use explicit returns in C-like languages. It would crash - which on Mac OS System 7 would drop my box into MacsBug - if I just fell off the end of a void function.
Dave Johnson, the owner of Working Software, had already advised me to use explicit returns because he once used a compiler that generated incorrect machine code if he didn't do so.
Even without buggy tools explicit returns are handy for setting breakpoints. Some debuggers enable you to break just before return even if you fall off the end but not all do.
Isn't falling off a void function the same as returning from it?
And of course, initially, classic Mac OS didn't have 32kB of stack on original hardware. It didn't even have 32kB available to applications.
I expect the System always ensured that DAs could have 8 kB of stack on top of whatever the application had; that is, app+DA defaulted to 40 kB.
MacCLint was such a skanky program I don't think it would have done it a whole lot of good to increase the stack.
http://opendotdotdot.blogspot.com/2014/01/interview-linus-to...
The original Torvalds quote in context:
>"When I started the whole design, started doing programming in user space, which I had not done for 15 years, it was like, wow, this is so easy. I don't need to worry about all these things, I have infinite stack, malloc just works. But in the kernel space, you have to worry about locking, you have to worry about security, you have to worry about the hardware.