Tech Report CS-91-28
An Operating System Development Environment
An operating system development environment has been created that allows prototype operating systems to be built, debugged, and executed as user-mode applications running on a host workstation. Operating system code can be written entirely in a high-level language, and the host system's compilers, debuggers, profilers, and any other available development tools can be used throughout the development process. The environment presents a conceptual machine to the operating system developer consisting of a single processor with virtual memory support, a priority interrupt scheme, kernel and user-mode stacks, and simulated peripheral devices. Special instructions present in most machine architectures, such as traps and privileged processor instructions, are emulated by having the prototype operating system call special-purpose library procedures. Priority-driven device interrupts are simulated by altering the context of the running operating system to directly invoke interrupt handlers and to restore the interrupted context upon handler exit.
(complete text in pdf)