OSP is both an implementation of a modern operating system, and a flexible environment for generating implementation projects appropriate for an introductory course in operating system design. It is intended to complement the use of most standard textbooks on operating systems and contains enough projects for up to three semesters. These projects expose students to many essential features of operating systems, while at the same time isolating them from low-level machine-dependent concerns. Thus, even in one semester, students can learn about page replacement strategies in virtual memory management, cpu scheduling strategies, disk seek time optimization, and other issues in operating system design.
The heart of OSP is a simulator that gives the illusion of a computer system with a dynamically evolving collection of user processes to be multiprogrammed. All the other modules of OSP are built to respond appropriately to the simulator-generated events that drive the operating system. The difficulty of the job streams generated by the simulator can be adjusted by manipulating the simulation parameters. This yields a simple and effective way of testing the quality of student programs. There are also facilities that allow the students to debug their programs by interacting with OSP during simulation.
OSP is written in C and runs on most UNIX and Windows platforms. It was developed at SUNY Stony Brook---two MS students did most of the coding---and is now in use at over 150 universities on all continents, excluding Antarctica (for which we have no data). The programmer, user, and instructor manuals have been published as two texts by Addison-Wesley, and the software itself is available by anonymous FTP from Stony Brook.
During the past couple of years, we have begun developing the next generation of the OSP software which we call OSP 2. OSP 2 improves upon OSP in a number of ways. It is more modular and extensible, it is object-oriented, it more closely resembles a real operating system, and it incorporates some of the latest techniques in operating system technology such as threads and Mach-like message passing.
OSP 2 is written in Java and makes substantial use of the Java threads facility. In this regard, OSP 2 is a true multi-threaded simulation of modern operating systems. Substantial parts of the the system have already been implemented but much work needs to be done, including the following projects:
If you are interested in working on OSP 2 in conjunction with CSE 523/524, contact Professors Kifer or Smolka immediately. Some financial support is available to talented and hardworking students.