Develop a small operating system. Write a simple OS skeleton program, to which we will eventually add more and more complex functionality. Read the info about a number processes from a file, and stores it in a queue of Process Control Blocks (PCBs). For each process, the information includes: process name; process (external) priority CPU burst length The name, priority and burst length of each process will be stored on a separate line in a file called "[login to view URL]" available for downloading from the Q: drive under directory Ivanov. Beside the above file-related information, each PCB object must also include a status variable, and a process ID number (pid) variable. The PCB queue must use a linked list implementation. Declare a class Queue in a header file "queue.h". Include this header file in your OS skeleton program. Project 2 Reads information about a number of processes from the file "[login to view URL]" available on the Q: drive from directory Ivanov. The information about each process includes the following: process name; process priority arrival time CPU burst length The process name is a string, the priority - an unsigned integer. The arrival time is measured in ms from the first power-on of the computer system, which is assumed to be at time 0. Thus, you can model the arrival time as a variable of time unsigned int The CPU burst length specifies the amount of time (in ms) that a process needs the CPU for. Here is a sample: p1 (Process Name) 15 (Priority) 1500 (Arrival time, i.e. arrived 1500 ms after the initial system boot-up) 300 (CPU Burst Length) For each process, store the information in an object of type PCB. In addition to the above information, the PCB must also contain an (unsigned int) field for the process id (pid). This must be automatically assigned (say by the class constructor) when the new PCB is created. The pid should be unique, i.e. different from the pids of all other processes currently in the system. Finally, a char variable should be used to store the process state - initially set by the PCB constructor to 'n' ("new"). In addition you will require three linked lists: · · New_Proc_List - stores all newly created PCBs (when read from the file) · · Ready_Q - Stores PCBs which are ready to be scheduled on the CPU · · Terminated_Q - Stores the PCBs of all terminate processes, i.e. processes, which have finished using the CPU.
## Deliverables
Complete and fully-functional working program(s) in executable form as well as complete source code of all work done. Complete copyrights to all work purchased.