Project 1 – A Process Scheduler
CO004 Projects on Operating Systems February 24, 2021
Due Date for Grouping: Mar. 21, 2021 Due Date for Phase 1: Apr. 04, 2021 Due Date for Phase 2: May 5, 2021
• Understanding how a process scheduler works.
• Increasing experience with system calls.
• Learning UNIX signals and controlling methods of signals
Processes are the basic execution entities in every modern operating system. Process control and management is therefore an important topic. In this project, we are going to implement a workable process scheduler in Linux systems. This process scheduler should read a number of jobs with different parameters (including arrival time, CPU requirements, etc.) and involves with process creation, suspension, as well as termination.
This project will help you understand UNIX system working principles and system calls. After completing the project, you should be familiar with programming with LINUX system calls and be able to write a medium-sized program (more than 1,000 lines of codes).
This is a group project. You can form a group with at most 3 members. You shall learn how to solve a middle-level problem with collaboration with your partners and learn how to manage your time under a tight schedule.
3 Programming environment
Your system shall be able to be executable under the following environments:
- Operating Systems. You must write and test you programs under the Linux operating systems (MS Windows are not acceptable). The preferred Linux OSes include CentOS, Ubuntu, Debian, etc. The final testing Linux platform will be released later.
- Language. You must implement it in either C or C++. Using languages other than the above two will is also not acceptable.
Job Description File
A process with name ’X’
Z Process X is reading from Entity Z
Y Process X is the parent process of Process Y
Figure 1: System architecture
• You are not allowed to invoke the system(3) library call. Otherwise, you would score 0 marks for this assignment.
Note that your development can be done in MacOS or other Linux/Unix platforms though the final program shall be tested in our given Linux.
4 System Design
Your design involves several entities that are depicted in Figure 1. In the following subsections, we introduce them one by one.
4.1 Scheduler process
The scheduler have the following major roles:
• Giving every process chances to be executed according to the defined scheduling policies;
• Maintaining internal status of each process so as to meet the requirements posed by the scheduling policy, such as fairness.
In addition, it has more things to do and we list the properties and the functionalities of the scheduler process as follows.