Presentation is loading. Please wait.

Presentation is loading. Please wait.

More review questions for the second midterm COSC 4330/6310.

Similar presentations


Presentation on theme: "More review questions for the second midterm COSC 4330/6310."— Presentation transcript:

1 More review questions for the second midterm COSC 4330/6310

2 Note This presentation contains questions on topics that are on thee second midterm. Depending on the semester, some questions will overlap with the materials that were discussed in the review session.  These materials are based on the questions on the most recent second quiz.

3 Scheduling How would you simulate a round-robin policy with a time slice of 100 ms on a System V R 4 system? #ts_quantum ts_tqexp ts_slpret ts_maxwait ts_lwait LVL

4 Answer How would you simulate a round-robin policy with a time slice of 100 ms on a System V R 4 system? #ts_quantum ts_tqexp ts_slpret ts_maxwait ts_lwait LVL 100 0 0 100000 0 #0

5 Scheduling Consider the following System V Release 4 scheduler: #ts_quantum ts_tqexp ts_slpret ts_maxwait ts_lwait LVL 1000 0 1 8000 1 # 0 500 0 2 4000 2 # 1 200 1 3 2000 3 # 2 100 2 3 1000 3 # 3 and assume that a process at priority level 2 receives 800 ms of CPU time before doing an I/O.

6 Answer 1. Start at priority 2 and get 200 ms of CPU time before returning to the ready queue 2. New priority given by __________

7 Answer 1. Start at priority 2 and get 200 ms of CPU time before returning to the ready queue 2. New priority given by ts_tqexp 3. Move to priority 1 and get 500 ms of CPU time before returning to the ready queue 4. New priority given by _______

8 Answer 1. Start at priority 2 and get 200 ms of CPU time before returning to the ready queue 2. New priority given by ts_tqexp 3. Move to priority 1 and get 500 ms of CPU time before returning to the ready queue 4. New priority given by ts_tqexp 5. Move to priority 0 and get 100ms of CPU time before doing an I/O 6. New priority given by _______

9 Answer 1. Start at priority 2 and get 200 ms of CPU time before returning to the ready queue 2. New priority given by ts_tqexp 3. Move to priority 1 and get 500 ms of CPU time before returning to the ready queue 4. New priority given by ts_tqexp 5. Move to priority 0 and get 200ms of CPU time before doing an I/O 6. New priority given by ts_slpret: level 1

10 Another answer (I) Step 1: Process is at priority level 2 #ts_quantum ts_tqexp ts_slpret ts_maxwait ts_lwait LVL 1000 0 1 8000 1 # 0 500 0 2 4000 2 # 1 200 1 3 2000 3 # 2 100 2 3 1000 3 # 3 and requests 800 ms of CPU time It gets only 200 ms and returns to the CPU queue at the level indicated by ts_tqexp

11 Another answer (II) Step 2: Process is now at priority level 1 #ts_quantum ts_tqexp ts_slpret ts_maxwait ts_lwait LVL 1000 0 1 8000 1 # 0 500 0 2 4000 2 # 1 200 1 3 2000 3 # 2 100 2 3 1000 3 # 3 and requests 600 ms of CPU time It gets only 500 ms and returns to the CPU queue at the level indicated by ts_tqexp

12 Another answer (III) Step 3: Process is now at priority level 0 #ts_quantum ts_tqexp ts_slpret ts_maxwait ts_lwait LVL 1000 0 1 8000 1 # 0 500 0 2 4000 2 # 1 200 1 3 2000 3 # 2 100 2 3 1000 3 # 3 and requests 100 ms of CPU time It gets only the 100 ms then goes to the waiting state

13 Another answer (IV) Step 4: Process is still at priority level 0 #ts_quantum ts_tqexp ts_slpret ts_maxwait ts_lwait LVL 1000 0 1 8000 1 # 0 500 0 2 4000 2 # 1 200 1 3 2000 3 # 2 100 2 3 1000 3 # 3 When it returns to the ready queue, it gets upgraded to the priority level specified by ts_slpret  Goes to priority level 1

14 Short question What is the major limitation of non-preemptive scheduling policies?

15 Answer Non-preemptive policies allow processes to monopolize the CPU.

16 Short question What does the System V Release 4 scheduler do to avoid process starvation?

17 Answer It increases the priority of processes that have waited more than ts_maxwait time units in the ready queue.

18 Short question What is the idea behind penalizing processes that have already got their share of the CPU?

19 Answer To ensure that the other processes can get their fair share of the CPU.

20 Short question What is the difference between blocking sends and non-blocking sends?

21 Answer A blocking send waits until the message has been received by the process to which it was addressed A non-blocking send returns as soon as the message has been accepted for delivery.  Like a letter dropped in a mailbox.

22 Short question Can you simulate a non-blocking send—or receive—using only blocking sends and receives?

23 Answer No, but you can simulate blocking sends—or receives—using only non-blocking sends and receives.

24 Short question What is the difference between virtual circuits and datagrams?

25 Answer Virtual circuits are connection-oriented and ensure that all messages will arrive in the right order without any of them being lost, damaged or duplicated. Datagrams are sent individually.

26 Short question How would you pass a linked list to a remote procedure?

27 Answer By storing it in array along with unpacking instructions. A BCDLL4ABCD

28 Short question How can we solve the big-endian/little endian issue?

29 Answer We can require all transfers to use an arbitrary network order, the same for all computers.

30 Short question What is the major advantage of idempotent procedures?

31 Answer Idempotent procedures can be repeated an arbitrary number of times without causing any harm. Hence, we do not have to worry about incomplete executions.  We restart the procedure.

32 Short question What is the main disadvantage of atomic transactions?

33 Answer Their cost.  At the same time they remain indispensable in financial transactions.

34 Short question What is the difference between the at most once and the all or nothing semantics in RPCs?

35 Answer The at most once semantics guarantees that no RPC call will be executed more than once but does not prevent partial executions, which the all or nothing semantics does.

36 Busy waits Why should we avoid busy waits? Is this always true?

37 Answer Busy waits waste computing cycles. There are especially bad on single processor architectures because the process doing the busy wait will repeatedly interrupt the process on which it is waiting. They are the best solution for short waits on multiprocessor/multicore architectures as long as the expected wait time is less than to context switches.

38 Problem Consider the function transfer(int *from, int *to, int amount) { *from -= amount; *to += amount; } // transfer and assume the calling sequence: alpha = 100; beta = 200; transfer (&alpha, &alpha, 10)

39 Problem (continued) What will be the value of alpha after the call assuming that (a) the call was a regular procedure call? (b) the call was a remote procedure call?

40 Solution (a) If the call was a regular procedure call, a = 100 (b) If the call was a remote procedure call, a = 90 or 110

41 Explanation With a regular procedure call Calling Program &alpha, &alpha, 10 Debits &alpha Credits same amount to &alpha alpha = 100 doubletrouble

42 Explanation (cont'd) With a remote procedure call Calling Program doubletrouble 100, 100, 10 alpha = 90 or 110 90, 110

43 What is wrong? shared int reserved[2] = {0, 0}; void enter_region(int pid) { while (reserved[1-pid]); // busy wait reserved[pid] = 1; } // enter_region void leave_region(int pid) { reserved[pid] = 0; } // leave_region

44 Answer The functions do not guarantee mutual exclusion when processes 0 and 1 enter in lockstep.  The two critical steps are: while (reserved[1-pid]); // test lock reserved[pid] = 1; // set lock

45 The ice-cream parlor An ice-cream parlor has two employees selling ice cream and six seats for its customers. Each employee can only serve one customer at a time and each seat can only accommodate one customer at a time. Add the required semaphores to the following program skeleton to guarantee that customers will never have to wait for a chair with a melting ice-cream in their hand.

46 The ice-cream parlor (cont'd) semaphore _______________ = ______; semaphore _______________ = ______; customer (int who) { ______________________________ order_ice_cream(); ______________________________ eat_it(); ______________________________ } // customer

47 Sketching a solution Two resources are shared by all customers  Six seats  Two employees Questions to ask are  When should we request a resource?  In which order? (very important)  When should we release it?

48 Solution semaphore _seats__________ = __6___; semaphore _employees______ = _ 2___; customer (int who) { ______________________________ order_ice_cream(); ______________________________ eat_it(); ______________________________ } // customer

49 Solution (cont'd) semaphore _seats__________ = __6___; semaphore _employees_____ = __2___; customer (int who) { P(&seats); P(&employees);________; order_ice_cream(); ______________________________; eat_it(); ______________________________; // customer Get seat first

50 Solution (cont'd) semaphore _seats__________ = __6___; semaphore _employees______ = __2___; customer (int who) { P(&seats); P(&employees);________ order_ice_cream(); V(&employees);_________________ eat_it(); ______________________________ } // customer What is missing?

51 Solution (cont'd) semaphore _seats__________ = __6___; semaphore _employees______ = __2___; customer (int who) { P(&seats); P(&employees);________ order_ice_cream(); V(&employees);_________________ eat_it(); V(&seat);______________________ } // customer

52 The pizza oven A pizza oven can contain nine pizzas but the oven narrow opening allows only one cook at a time to either put a pizza in the oven or to take one out. Given that there will be more than one cook preparing pizzas at any given time, complete the missing lines in the following C procedure.

53 The pizza oven (cont'd) semaphore oven = ______; semaphore access = _______; make_pizza(int size, int toppings) { prepare_pizza(size, toppings); ______________________________________ put_into_oven(); ______________________________________ wait_until_done(); ______________________________________ take_from_oven(); ______________________________________ } // make_pizza

54 Sketching a solution The two resources are already identified  The oven  Access to the oven (mutex) We ask the usual questions  And take care of avoiding mutex-induced deadlocks

55 Solution semaphore oven = ___9__; semaphore access = __1__; // the mutex make_pizza(int size, int toppings) { prepare_pizza(size, toppings); ______________________________________ put_into_oven(); ______________________________________ wait_until_done(); ______________________________________ take_from_oven(); ______________________________________ } // make_pizza

56 Solution (cont'd) semaphore oven = ___9__; semaphore access = __1__; // the mutex make_pizza(int size, int toppings) { prepare_pizza(size, toppings); P(&oven); P(&access);__________________ put_into_oven(); ______________________________________ wait_until_done(); ______________________________________ take_from_oven(); ______________________________________ } // make_pizza Order matters!

57 Solution (cont'd) semaphore oven = ___9__; semaphore access = __ 1__; // the mutex make_pizza(int size, int toppings) { prepare_pizza(size, toppings); P(&oven); P(&access); ____________________ put_into_oven(); V(&access);____________________________ wait_until_done(); P(&access);____________________________ take_from_oven(); V(&oven); V(&access); // IN ANY ORDER!____ } // make_pizza

58 The pizza oven (again) Redo problem 2 using monitors.

59 The pizza oven (again) Class oven { private int n_pizzas; // in oven private condition not_full; public void synchronized put_a_pizza() { _______________________________ _______________________________ put_a_pizza_in_the_oven(); ______________________________ ______________________________ } // put_a_pizza()

60 The pizza oven (again) (Class oven continued) public void synchronized remove_a_pizza() { ______________________________ ______________________________ take_a_pizza_from_the_oven(); ______________________________ ______________________________ } // remove_a_pizza()

61 The pizza oven (again) (Class oven continued) oven() { n_pizzas = 0; } // constructor } // Class oven

62 Sketching a solution Two monitor procedures instead of a C function  Each procedure handles a step that must be performed in mutual exclusion Questions to ask are  When do we have to wait on a condition? Must be specific  Which conditions do we need to signal?

63 Solution Class oven { private int n_pizzas; // in oven private condition not_full; public void synchronized put_a_pizza() { if (n_pizzas == 9) notfull.wait; _____ n_pizzas++;____________________ put_a_pizza_in_the_oven(); ______________________________ ______________________________ } // put_a_pizza()

64 Solution (cont'd) (Class oven continued) public void synchronized remove_a_pizza() { ____________________________ ____________________________ take_a_pizza_from_the_oven(); n_pizzas--;___________________ notfull.signal;_________________ } // remove_a_pizza()

65 Solution (cont'd) (Class oven continued) oven() { n_pizzas = 0; } // constructor } // Class oven

66 More on monitors How should you modify a monitor when you replace its signal calls by notify calls?

67 More on monitors How should you modify a monitor when you replace its signal calls by notify calls?

68 Answer How should you modify a monitor when you replace its signal calls by notify calls?  All if( … ) clauses preceding waits should be replaced by while( … ) clauses.

69 True or false You should always initialize mutex semaphores to one.

70 Answer You should always initialize mutex semaphores to one.  TRUE

71 True or false You should always initialize monitor conditions to zero.

72 Answer You should always initialize monitor conditions to zero.  FALSE monitor conditions have NO VALUE

73 True or false Many good programmers prefer to put all their signal operations at the end of their monitor procedures.

74 Answer Many good programmers prefer to put all their signal operations at the end of their monitor procedures.  TRUE Issuing a signal means risking to be interrupted in the middle of its critical section


Download ppt "More review questions for the second midterm COSC 4330/6310."

Similar presentations


Ads by Google