Operating System Design: Introduction
Most modern operating systems allow users to run many processes simultaneously. Managing these processes can be a complex task for operating systems. Since a single processor can only run a single process at a time, operating systems require the ability to alternate processor cycles between processes. Even if a computer has multiple cores, each core is usually tasked with more processes than it can run at a time. Many operating systems also include functionality for processes to communicate with each other. This can cause problems, such as data being overwritten, if multiple processes attempt to access a shared resource at the same time.
This report examines various algorithms used to implement process scheduling and process synchronization functionalities efficiently within operating systems. Depending on the requirements and purpose of the operating system, different algorithms are more effective than others. If these algorithms are not designed properly, it could cause the operating system to run slowly or freeze altogether.
There are many topics to consider when designing process management algorithms in an operating system. This report will be limited mainly to the problems of process scheduling and process synchronization. Process synchronization is a problem caused by inter-process communication. While a short description of inter-process communication will be included, this report will not include an in-depth discussion of the various algorithms used for this feature. For the sake of simplicity, this report will not discuss systems with multiple cores, processes with multiple threads, or interrupt scheduling. Systems with multiple cores make scheduling algorithms much more complex. Instead, the report will assume algorithms are being designed for single-core systems.
This report will begin with a basic definition of a process and a discussion of what is included in a process. Following this, various scheduling algorithms will be explained in detail along with the benefits and disadvantages of each algorithm. A basic discussion of inter-process communication will then be used to introduce process synchronization and the Critical Section Problem. The report will then discuss various algorithms used to solve the Critical Section Problem and avoid race conditions.