The other day, I was thinking about the old debate. Worse is better. Just good enough. One of the classic examples in those texts is the way that BSD was designed vs. the MIT operating systems. (The other big debate was C versus Lisp). The main distinction was with how they dealt with an interrupt to a process that was blocked on some system operation.
In the BSD world, you (the user space programmer) got interrupted and you had to restart things yourself. In the MIT world, the OS was so smart, it would restart the program at the correct point in the correct state so the programmer didn’t have to deal with these cases. The BSD system won, but I don’t think it was for this reason.
So, I started thinking… what did the MIT system do exactly. I’ll bet the internet knows… and of course, since this is the future, it does. The MIT system was called PCLSRing or Program Counter LoSeRing and is well described over here. Now add to that an off the cuff comment by Steve a couple of weeks back that VMS had a completely async IO system. I said, “Really, I don’t remember that.” As I was researching this stuff, I remembed his comment, so that got me to dig a little more.
Sure enough, that old OS that I ran had an asynch model called QIO’s and AST’s which stand for Queued Input Outputs and Asynchronous System Traps. They handled this stuff fairly elegantly. I never got to that level in those days. I was using the C/POSIX layer on VMS. (Trivia, VMS was the first POSIX compliant OS… before Unix!) I think me and my boss at the time did do some performance analysis on this, and it was a win, but not by much. No matter, the machines were so slow… “how slow were they?” They were so slow, and generally running so many processes for things… that it wasn’t worth trying to push to the limit.
Well, I read a little more about VMS or OpenVMS on Wikipedia, and they expounded on a lot more of the good stuff that VMS had. The stuff I had direct experience with was LAT, Clustering, DCL, VMS Queues, DECnet, LANWorks, and the DB like API’s. The hardware was really good for lots of users on terminals, too. However, in terms of single user, GUI interactive work, it was just to clumsy and slow. So, the OS was good, but it only ran on 5 mip hardware when 40 was becoming super cheap. Oh yeah, I do remember lots of dollar signs and CAPITAL LETTERS FOR THINGS, too 🙂
Anyways, VMS used the asynch IO model in the form of ASTs, Unix had signals, and the MIT ITS had PCLSRing.
A VMS Galaxy Diagram