Download presentation
Presentation is loading. Please wait.
Published byFabian Tilbury Modified over 9 years ago
1
Project: Processes and Resource Management Textbook: pages 482-491 Lubomir Bic
2
Operating Systems 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 2
3
Operating Systems 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 Overall Organization 3
4
Operating Systems 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 Overall Organization your terminal/ test files repeat get f, par invoke f(par) get reply display reply Process and Resource Manager 4
5
Operating Systems 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... 5
6
Operating Systems 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 6
7
Operating Systems 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) 7
8
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
9
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) 9
10
Operating Systems 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) 10
11
Operating Systems 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 11
12
Operating Systems 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 12
13
Operating Systems 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(); }} 13
14
Operating Systems 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 14
15
Operating Systems Scheduler Called at the end of every kernel call (1) Scheduler() { (2) find highest priority process p (3) if (self->priority 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 15
16
Operating Systems Time-out Interrupts Simulate time-sharing Time_out() { find running process q; remove(RL, q); q->Status.Type = 'ready'; insert(RL, q); Scheduler();} 16
17
Operating Systems Presentation/Test Shell Mandatory Commands –init –cr –de –req –rel –to 17
18
Operating Systems 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 18
19
Operating Systems 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 19
20
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
21
Sample test 2 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 req R3 1 req R4 2 req R2 2 to de q to init x x x x p p q q r r x p q r x x x p x 21
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.