System Interfaces

An operating system supports a virtual machine by providing a standard system interface. At the immediate interface to the operating system, this is typically provided as one or more <#99#> monitors<#99#>. A Monitor is a collection of procedures which may be executed by a collection of concurrent processes. It protects its internal data from the users, and is a mechanism for synchronizing access to the resources the procedures use. Since only the monitor can access its private data, it automatically provides mutual exclusive between customer processes. Entry to the monitor by one process excludes entry by others. This is described further in chapter 2. In this sense, the operating system is very like a collection of Objects accessed by standard Methods. The operating system monitor is a single monolithic monitor, which not only protects private data, but also privileged instructions. Usually, hardware support is required to secure access to this kind of monitor (via system ;SPM_quot;traps;SPM_quot;). However, modern languages and compiler support mean that this is less necessary. These procedures in an operating system monitor are usually divided into those to do with file access, those to do with process manipulation, and those to do with InterProcess Communication. Interprocess Communication (#fnos2#100>) can be provided in several ways: We can further classify the IPC mechanisms into the broad classes: Reliable communication channels fail only with the end system (e.g. if a central computer bus fails, usually the entire machine (stable storage/memory/CPU access) fails. Unreliable channels exhibit various different types of fault. Messages may be lost, re-ordered, duplicated, changed to apparently correct but different messages and even created as if from nowhere by the channel. All of these problems may have to be overcome by the IPC mechanism. We can also classify IPC mechanisms by when the association between one process and another is made. This is orthogonal to the issue of reliability.