1 / 24

Project: Processes and Resource Management

Project: Processes and Resource Management. Textbook: pages 482-491 Lubomir Bic. Assignment. D esign/implement a simplified process and resource manager Required functionalities: p rocess : create/destroy r esource : request/release t ime-out interrupt I/O processing

agarza
Download Presentation

Project: Processes and Resource Management

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Project: Processes and Resource Management Textbook: pages 482-491 Lubomir Bic

  2. Assignment • Design/implement a simplified process and resource manager • Required functionalities: • process: create/destroy • resource: request/release • time-out interrupt • I/O processing • multi-unit resources (5.1. page 490 of textbook) • extensive error checking

  3. 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

  4. repeat get f, par invoke f(par) get reply display reply your terminal/ test files Process and Resource Manager 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

  5. 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 *Process B is blocked; Process A is running . . .

  6. 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 • Request_IO: running  blocked • IO_Completion: blocked  ready • Scheduler: ready  running/running  ready

  7. 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)

  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

  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)

  10. 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)

  11. 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

  12. Request resource 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

  13. Release resource 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(); }}

  14. 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

  15. 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

  16. Time-out Interrupts • Simulate time-sharing Time_out() { find running process q; remove(RL, q); q->Status.Type = 'ready'; insert(RL, q); Scheduler();}

  17. I/O Processing • Represent all I/O devices collectively as a resource named IO • RCB • Name: IO • Waiting_List • Assume I/O requests finish in the order of submission

  18. Request I/O Request_IO() { self->Status.Type = 'blocked'; self->Status.List = IO; remove(RL, self); insert(IO->Waiting_List, self); Scheduler(); }

  19. I/O Completion • Simulates HW interrupt IO_completion() { remove(IO->Waiting_List, p); p->Status.Type = 'ready'; p->Status.List = RL; insert(RL, p); Scheduler(); }

  20. Presentation/Test Shell • Mandatory Commands • init • cr<name> <priority> • de <name> • req<resource name> <# of units> • rel<resource name> <# of units> • to • rio • ioc

  21. 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

  22. 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)) • An IO resource • Submit your program for testing, submit documentation for evaluation

  23. Sample test 1 cr x 2 cr y 1 to cr z 2 to req R1 to req R1 de z rel R1 de x init x x x x z z x z x x init

  24. Sample test 2 cr x 1 cr p 1 cr q 1 cr r 1 to req R2 to req R3 to req R4 to to req R3 req R4 req R2 to de q to to init x x x x p p q q r r x p q r x x x p x

More Related