Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Project: Processes and Resource Management Textbook: pages 482-491 Lubomir Bic Assignment • Design/implement a simplified process and resource manager • Required functionalities: – process: create/destroy – resource: request/release – time-out interrupt – multi-unit resources (5.1. page 490 of textbook) – extensive error checking Operating Systems 2 Overall Organization • Problem: we do not have the actual processes or hardware • Solution: your terminal (or test files) represent – currently running process, and – the hardware causing interrupts Operating Systems 3 Overall Organization • Write presentation/test shell – it reads command from terminal or test file – it invokes kernel function – it displays reply (on terminal or to output file) • which process is running • any errors your terminal/ test files Operating Systems repeat get f, par invoke f(par) get reply display reply Process and Resource Manager 4 Presentation/test shell Example: *Process Init is running . . . shell> cr A 1 *Process A is running shell> cr B 2 *Process B is running shell> cr C 1 *Process B is running shell> req R1,1 *Process B is blocked; Process A is running . . . Operating Systems 5 Process states and operations • Process states: ready, running, blocked • Possible Operations: – Create: (none) ready – Destroy: running/ready/blocked (none) – Request: running blocked – Release: blocked ready – Time_out: running ready – Scheduler: ready running/running ready Operating Systems 6 Process Control Block (PCB) • • • • • • • • PID CPU state — not used Memory — not used Open_Files — not used Other_resources Status: Type & List Creation_tree: Parent/Children Priority: 0, 1, 2 (Init, User, System) Operating Systems 7 The Ready List (RL) • 3-level priority list 2 = “system” 1 = “user” 0 = “init” • Priorities don’t change • Every process (PCB) is either on the RL on a blocked list Operating Systems 8 Create a process Create(initialization parameters){ create PCB data structure initialize PCB using parameters link PCB to creation tree insert(RL, PCB) Scheduler() } • • Init process is created at start-up & can create first system or user process Any new or released process is inserted at the end of the queue (RL) Operating Systems 9 Destroy a process Destroy (pid) { get pointer p to PCB using pid Kill_Tree(p) Scheduler() } Kill_Tree(p) { for all child processes q Kill_Tree(q) free resources delete PCB and update all pointers } • Process can be destroyed by any of its ancestors or by itself (exit) Operating Systems 10 Representation of Resources • There is a fixed set of resources • Resource Control Block (RCB) – RID – Status: counter for number of free units – Waiting_List: list of blocked processes Operating Systems 11 Request resource (1-unit resources) Request(rid) { r = Get_RCB(rid); if (r->Status == 'free') { r->Status = 'allocated‘; insert(self->Other_Resources, r); } else { self->Status.Type = 'blocked'; self->Status.List = r; remove(RL, self); insert(r->Waiting_List, self); Scheduler(); } • all requests are satisfied in strict FIFO order Operating Systems 12 Release resource (1-unit resources) Release(rid) { r = Get_RCB(rid); remove(self->Other_Resources, r); if (r->Waiting_List == NIL} { r->Status = 'free'; } else { remove(r->Waiting_List, q); q->Status.Type = 'ready'; q->Status.List = RL; insert(q->Other_Resources, r); insert(RL, q); Scheduler(); }} Operating Systems 13 Scheduling • • • • 3-level priority scheduler Use preemptive round-robin scheduling within level Time sharing is simulated by function call Init process serves a dual purpose: – dummy process: lowest priority/never blocked – root of process creation tree Operating Systems 14 Scheduler • Called at the end of every kernel call (1) Scheduler() { (2) find highest priority process p (3) if (self->priority < p->priority || (4) self->Status.Type != 'running' || (5) self == NIL) (5) preempt(p, self) } Condition (3): called from create or release Condition (4): called from request or time-out Condition (5): called from destroy Preemption: • Change status of p to running (status of self already changed to ready/blocked) • Context switch—output name of running process Operating Systems 15 Time-out Interrupts • Simulate time-sharing Time_out() { find running process q; remove(RL, q); q->Status.Type = 'ready'; insert(RL, q); Scheduler();} Operating Systems 16 Presentation/Test Shell • Mandatory Commands – – – – – – init cr <name> <priority> de <name> req <resource name> <# of units> rel <resource name> <# of units> to Operating Systems 17 Presentation/Test Shell • Optional commands (examples): – list all processes and their status – list all resources and their status – provide information about a given process – provide information about a given resource Operating Systems 18 Summary of tasks • Design/implement the process and resource manager – data structures and functions • Design/implement a driver program (shell) – command language and interpreter • Instantiate the manager to include at start-up: – A Ready List with 3 priorities – A single process, Init – 4 resources labeled: R1, R2, R3, R4 (each Ri has i units)) • Submit your program for testing, submit documentation for evaluation Operating Systems 19 Sample test 1 cr x 2 cr y 1 to cr z 2 to req R1 1 to req R1 1 de z rel R1 1 de x init x x x x z z x z x x init 20 cr x 1 cr p 1 cr q 1 cr r 1 to req R2 1 to req R3 3 to req R4 3 to to req R3 1 req R4 2 req R2 2 to de q to to Sample test 2 init x x x x p p q q r r x p q r x x x p x 21