Presentation is loading. Please wait.

Presentation is loading. Please wait.

Software Engineering Lecture 5 Multiprogramming and Scheduling ASPI8-4 Anders P. Ravn March 2004.

Similar presentations


Presentation on theme: "Software Engineering Lecture 5 Multiprogramming and Scheduling ASPI8-4 Anders P. Ravn March 2004."— Presentation transcript:

1

2 Software Engineering Lecture 5 Multiprogramming and Scheduling ASPI8-4 Anders P. Ravn March 2004

3 Overview 1.Concurrent processes - Java Threads 2.Mutual exclusion 3.Semaphores 4.Monitors - Java synchronized, wait, notify 5.Ada rendezvous

4 A kernel specification /* kernel.h Interface to a lightweight kernel that implements concurrent processes and a release primitive `pause'. Anders P. Ravn, DTU, Denmark 24 April 1998 apr@it.dtu.dk*/ typedef void (*Program)(void); /* A program text is a function without parameters*/ typedef void * Thread; /* identifier for a process */ extern Thread create(Program p,unsigned int stacksize); /* creates a process with a stack of the specified size and starts it executing the program. If there is insufficient memory, the result is NULL */ extern void pause(void); /* release the processor */

5 Multiprogramming #include ”kernel.h” void process() { /* do something */ pause(); /* do something */ } void main() { Thread p1, p2; p1 = create(&process,2000); /* p1 is started */ p2 = create(&process,1000); /* p2 is started */ /* the kernel will see to it that main is left when both p1 and p2 has exited */ }

6 A kernel implementation I typedef unsigned long Register; typedef struct x {struct x* next; Register esp;} Threaddescriptor; static Threaddesriptor* ready; /* queue of threads linked cyclically; ready points to last, the first is current */ #define current ready->next esp1esp2esp3 ready: current

7 A kernel implementation II void pause() { Register sp; __asm__(” pushal movl %esp,%sp"); /* sp -> |saved registers... | eip return from call */ DISABLE; /* scheduling */ current->esp = sp; ready = current; sp = current->esp; __asm__(" movl %sp,%esp popal" ); ENABLE; } esp1esp2esp3 ready: current stack1 stack2

8 A kernel implementation III pause:pushl %ebp movl %esp,%ebp pushal movl %esp,%ecx sp = esp movl ready,%eax movl (%eax),%edx current->esp movl %ecx,4(%edx) = sp movl %edx,ready ready = current movl (%edx),%edx movl 4(%edx),%ecx sp = current->esp movl %ecx,%esp popal leave ret

9 A kernel implementation IV pause: pushal movl ready,%eax movl (%eax),%edx current->esp movl %esp,4(%edx) = esp movl %edx,ready ready = current movl (%edx),%edx movl 4(%edx),%esp esp = current->esp popal ret

10 Java Threads import java.awt.*; class Process extends Thread { public Customer(...){...} public void run(){... // do something }... Process p1 = new Process(); p1.start();...

11 Shared Variables class Banking { /* shared variable balance and private withdrawals */ public int balance; public int[] wd; public Banking() { balance = 2000; wd = new int[2]; } // Invariant: // balance+wd[0]+wd[1] == 2000 }

12 Critical Section class Customer extends Thread { int id; Lock critical; Banking bank; public void run() { do { sleep(800-400*id); critical.enter(id); int local = bank.balance; sleep(shortdelay); bank.balance = local-1; critical.leave(id); bank.wd[id]++; } while (true); } }

13 Semaphore public class Semaphore { int count; public Semaphore(int initial_value){ count= initial_value; } public synchronized void Wait(){ while(count == 0) wait(); --count; } public synchronized void signal(){ if (count++ == 0) notify(); }

14 Rendezvous

15 Scheduling 1.Periodic processes – cyclic executive 2.Fixed Priority Scheduling – Rate Monotonic 3.Response Time Analysis 4.Sporadic Processes 5.Blocking and priority inversion 6.Priority Ceiling protocols 7.Real-Time Java

16 Cyclic executive loop wait 25msinterrupt; a(); b(); c(); wait 25ms interrupt; a(); b(); d(); e(); wait 25ms interrupt; a(); b(); c(); wait 25ms interrupt; a(); b(); d(); end loop; ProcessT (period)C (wcet) a 25 10 b 25 8 c 50 5 d 4 e 100 2

17 Utilization tests Utilization U = C/T Priority is rate (1/T) monotonic U 1 +... + U N  N( N  2 – 1)  0.693 (FPS) U 1 +... + U N  1 (Earliest Deadline First !?) Liu & Layland JACM, 1973

18 Response Time Analysis Response time R= C + I -- Interference I i =  R i /T N  C N +... +  R i /T i+1  C i+1 (FPS) Joseph & Pandya Computer Journal 1986

19 Sporadic Processes Deadline D < T Priority is deadline (1/D) monotonic

20 Blocking Critical Regions V and Q locked by eg a semaphore. d(Q,V): EEEEBQ-----------BQQVVEE c(V) : EEVV----VVEE b() : ------------EEEE a(Q) : EEQQ----------------QQQQQQ------EE Priority Inversion

21 Response Time Analysis Response time R= C + B + I K = (k1,..., km): resources used by a process of lower priority and by a process with a higher or equal prority B i = C k1 +... + C km

22 Immediate Ceiling Protocol A resource uses the maximual priority of any process using it. K = (k1,..., km): resources used by a process of lower priority and by a process with a higher or equal prority B i = max C(k), k  K

23 Blocking ICPP d(Q,V): EEEEBQ-----------BQQVVEE c(V) : EEVV----VVEE b() : ------------EEEE a(Q) : EEQQ----------------QQQQQQ------EE ------------------- d(Q,V): BBEEEEQQVVEE c(V) : BBBBBB----------EEVVVVEE b() : BBBBBB------------------EEEE a(Q) : EEQQQQQQQQ----------------------EE

24 Real-Time Java public class Periodic extends RealTimeThread{ public Periodic(PriorityParameters pp, PeriodicParameters p) {... } public void run(){ for (;;) {... waitForNextPeriod(); }

25 PeriodicParameters public class Periodicparameters... { public PeriodicParameters( HighResolutionTime start, RelativeTime period, RelativeTime cost, RelativeTime deadline, AsyncEventHandler overrunhandler, AsyncEventHandler misshandler){... }

26 And more http://www.rtj.org


Download ppt "Software Engineering Lecture 5 Multiprogramming and Scheduling ASPI8-4 Anders P. Ravn March 2004."

Similar presentations


Ads by Google