We have now completed our introduction and bird's-eye view of the operating system. It is time to get down to the details. As mentioned already, from the programmer's point of view, the main purpose of an operating system is to provide some key abstractions, the most important of which are processes and threads, address spaces, and files. Accordingly the next three sections are devoted to these very important topics.

"PROCESSES AND THREADS" is about processes and threads. It discusses their properties and how they communicate with one another. It also gives a number of detailed examples of how interprocess communication works and how to avoid some of the drawbacks.

In "MEMORY MANAGEMENT" we will study address spaces and their adjunct, memory management, in detail. The important topic of virtual memory will be examined, along with closely related concepts such as paging and segmentation.

Then, in "FILE SYSTEMS", we come to the all-important topic of file systems. To a large extent, what the user sees is mostly the file system. We will look at both the file system interface and the file system implementation.

Input/Output is covered in section "INPUT/OUTPUT". The concepts of device independence and device dependence will be looked at. Many important devices, including disks, keyboards, and displays, will be used as examples.

"DEADLOCKS" is about deadlocks. We briefly showed what deadlocks are in this section, but there is much more to say. Ways to prevent or avoid them are discussed.

At this point we will have completed our study of the basic principles of single-CPU operating systems. However, there is more to say, particularly about advanced topics. In "MULTIMEDIA OPERATING SYSTEMS", we study multimedia systems, which have a number of properties and requirements that are different from conventional operating systems. Among other items, scheduling and the file system are affected by the nature of multimedia. Another advanced topic is multiple processor systems, including multiprocessors, parallel computers, and distributed systems. These subjects are covered in "MULTIPLE PROCESSOR SYSTEMS".

An extremely important subject is operating system security, which is covered in "SECURITY". Among the topics discussed in this section are threats (e.g.,  viruses and worms), protection mechanisms, and security models.

Next we have some case studies of real operating systems. These are Linux, Windows Vista, and Symbian. The blog concludes with some wisdom and thoughts about operating system design.


address space, virtual memory, file system