There is also a Java version of this simulator. You can get the java files, compiled class files, documentation, and html files in zip format from] Java SOS distribution in zip format. or in gzipped tar format from Java SOS distribution in UNIX tar and GNU gzip format. Or you can run directly the Java version of SOS.
Here are three supportingdocuments in Microsoft Word format. I also have a link to an html version of each.
There are advantages and disadvantages to both approaches. Some people feel the ideal situation is to take both classes, but this is rarely possible in an already crowded computer science curriculum so one is required to make a choice.
A middle course I have tried to find a middle course between the two approaches. This book is basically a concepts oriented book with more code than is usual. I have found that seeing actual code allows the students to understand the concepts more deeply, feel more comfortable about the material, and ask questions they wouldn't have thought to ask in a purely concepts oriented course. The code does not comprise a complete operating system however and it as simple as possible in order to reduce the number of pages devoted to explaining it
Few computer professionals will participate in the design of an operating system during the course of their careers. While it is important that students of computer science have a good foundation in the basic concepts in specialized areas such as operating systems, it is not necessary that every computer science student understand all the details. There are many issued which are tackled during the design of an operating system which can be generalized and applied to other areas of computer science. In this book, I attempt to focus on these design issues and their implications for other areas.
The design techniques are noted in side bars as they come up, and longer explanations of each design topic are placed in separate chapters. The design principles are presented in the same format often used for design patterns. The instructor can structure a course with varying degrees of concentration on design aspects. The design sections are independent of the main flow of the text, and independent from each other. This will allow the instructor to pick and choose those design sections he or she finds to be useful.
I am striving for two things. First, I want to give the student an awareness of design issues, where they come up, which techniques to apply, how they can be generalized, etc. Clearly it is not possible to cover all design topics and issues. I do not present an organized survey of design techniques but a series of useful ones that come up in the context of operating systems. I hope to make the student aware of design and to enable the student to start doing their own generalizing about design. Second, I present a collection of useful design techniques that the students can use in their design toolkit.
I have oriented this book to provide a solid preparation for the larger design projects the student will encounter in later software engineering courses and as preparation for their career as a software professional designing, implementing and maintaining a wide variety of systems. The interrelations between the separate areas of computer science are becoming more important. For example, in the area of high speed parallel machines, it is clear that it is necessary to think of the hardware, the operating system and the programming language as a single system to get maximum performance. Optimization in any part of the system will have consequences for the other parts of the system.
Last modified on 2 July 1996