心得分享

Card image cap

鄭同學 報告/作業 分享經驗 3/23 3/15 OS作業

3/23 3/15 OS作業
名稱 3/15 OS作業
日期 3/23
課程名稱 作業系統
指導教師 劉艾華

1. Consider the three conditions for a solution of critical section problem to be a correct solution: Mutual Exclusion, Progress and Bounded Waiting. Please explain
Ans:
(1) Mutual Exclusion: If process A is executing in its critical section, then no other processes can be executing in their critical sections.

(2) Progress: If no process is execution in its critical section and there exist some processes that wish to enter their critical section, then the selection of the process that will enter the critical section next cannot be postponed indefinitely.

(3) Bounded Waiting: A bound must exist on the number of times that other processes are allowed to enter their critical sections after a process has made a request to enter its critical section and before that request is granted.

2. While Peterson’s solution is correct, please discuss the situation where P1 and P2 are entering the Critical Section at about the same time. How to decide which process can enter its Critical Section?
Ans:
The process will receive a number. which has the smaller number can get in its critical section first.

If both processes try to enter at the same time, turn is set to both i and j at roughly the same time. Only one of these assignments lasts; the other will occur, but will be overwritten immediately.

3. Please specify under what kind of situation where busy waiting can be considered advantageous?
Ans:
Busy-waiting itself can be made much less wasteful by using a delay function (e.g., sleep()) found in most operating systems. This puts a thread to sleep for a specified time, during which the thread will waste no CPU time. If the loop is checking something simple then it will spend most of its time asleep and will waste very little CPU time.

4. Consider the reader program of the reader-writer problem below. Please explain
(1) why the readers need to use the semaphore “mutex” but the writers don’t.
(2) why the readers also work on the “wrt” semaphore which is used by the writers.

wait(mutex);

readcount++;

if (readcount == 1)

wait(wrt);

signal(mutex);



reading is performed



wait(mutex);

readcount--;

if (readcount == 0)

signal(wrt);

signal(mutex):

Ans:
(1)No reader will be kept waiting unless a writer has already obtained permission to use the shared database.

(2)Once a writer is ready, that writer performs its write as soon as possible. If a writer is waiting to access the object, no new readers may start reading.

更新日期:2016/3/23 下午 11:32:19