A few months ago I read the following paper: P. Brinch Hansen, The evolution of operating systems. In Classic Operating Systems: From Batch Processing to Distributed Systems, P. Brinch Hansen, Ed. Copyright 2000, Springer-Verlag, New York. The following passages caught my eye:
The B5000 operating system (and its successors) were written in extended Algol that permitted systems programs to access the whole memory as an array of (unprotected) machine words (It was sometimes referred to as Burroughs overextended Algol). This programming trick effectively turned extended Algol into an assembly language with an algorithmic notation. The dangers of using such an implementation language were very real.
A superior tool like Unix often feels so natural that there is no incentive for programmers to look for a better one. Still, after three decades, it can be argued that the widespread acceptance of Unix has become an obstacle to further progress. Stonebraker (1981), for example, describes the problems that Unix creates for database systems.
Software managers continue to believe that software design is based on a magical discipline, called software engineering, which can be mastered by average programmers. Dijkstra explained that the truth of the matter is simply that the intellectual level needed for system design is in general grossly underestimated. I am convinced more than ever that this type of work is very difficult, and that every effort to do it with other than the best people is doomed to either failure or moderate success at enormous expense. In my opinion, the continued neglect of this unpopular truth explains the appalling failure of most software which continues to be inflicted on computer users to this day.
Dijkstra (1968a) and Habermann (1967) were able to prove by induction that the THE system was deadlock-free. Lauesen used a similar argument to prove that the coroutines of Boss 2 eventually would process any request for service.
The most significant contribution of Solo was undoubtedly that the program text was short enough to be published in its entirety in a computer journal:
The Solo operating system: processes, monitors and classes, Per Brinch Hansen (1976b).Harlan Mills had this to say about the Solo program text (Maddux 1979): Here, an entire operating system is visible, with every line of program open to scrutiny. There is no hidden mystery, and after studying such extensive examples, the reader feels that he could tackle similar jobs and that he could change the system at will. Never before have we seen an operating system shown in such detail and in a manner so amenable to modification.
Twenty years later, the designers of the Java language resurrected the idea of platform independent parallel programming (Gosling 1996). Unfortunately they replaced the secure monitor concept of Concurrent Pascal with inferior insecure ideas (Brinch Hansen 1999).
Remote procedure calls (RPC) were proposed as a programming style by James White (1976) and as a programming language concept by me (Brinch Hansen 1978). Since then, system designers have turned it into an unreliable mechanism of surprising complexity.
By adding another software layer on top of the Unix kernel, the University of Newcastle was able to make five PDP11 computers act like a single Unix system, called Unix United. This was achieved without modifying standard Unix or any user programs:
The Newcastle Connection or Unixes of the World unite, David R. Brownbridge, Lindsay F. Marshall and Brian Randell (1982)Unix United combined the local file systems into a global file system with a common root directory. This distributed file system made it possible for any user to access remote directories and files, regardless of which systems they were stored on. In this homogeneous system, every computer was both a user machine and a file server providing access to local files. The most heavily used services were file transfers, line printing, network mail, and file dumping on magnetic tape.
Back in 1986-87, when I was at the University of Newcastle, I used their PDP-11's for some of my course work. They were named after various English computing pioneers - babbage, turing, jevons, boole and so on. I can remember being particularly impressed by how the other machines appeared within the directory structure of the machine you were logged on to. I think that the person who explained this to us must have played a part in the implementation because they were obviously proud of this feature.
There are many other papers in the Per Brinch-Hansen Archive that are worth reading.