平成15年度 春期 ソフトウェア開発技術者 午後1
問1 問2 問3 問4 問5 問6 解答例(若林研二氏) 
注:等倍フォントでご覧ください。 

問5
 プロセス間の協調に関する次の記述を読んで,設問1〜4に答えよ。

 複数のプロセス間の排他制御を実現するために,次のP,Vの操作が可能なデータ
型の変数Sを定義する。

P(S):
  S≧1の場合は,S←S−1とし,Pを実行したプロセスがそのまま実行を継続す
 る。
  S<1の場合は,Pを実行したプロセスはSの待ち行列に入れられ,そのプロセ
 スは待機状態に移る。

V(S):
  (Sの待ち行列に入っているプロセス数)≧1の場合は、Sの待ち行列からプロ
 セスが一つ取り出される。取り出されたプロセスは実行可能状態に移る。
  (Sの待ち行列に入っているプロセス数)=0の場合は,S←S+1とし,Vを実
 行したプロセスがそのまま実行を継続する。
 ここで,複数のプロセスで共有するリソースRがある。リソースRは,それぞれの
プロセスが排他的に使用する。Rを使用する二つのプロセスX,Yが並行して動作し
ている場合,上で定義した変数Sと,P(S)及びV(S)操作を使って排他制御を行うこ
とができる。
 また,上で定義した変数を利用すると,並行して動作するプロセスを協調して動作
させることができる。例えぱ,図1のようにN個のスロットをもつバッファを使って,
生産者プロセスから消費者プロセスヘメッセージを送ることを考える。生産者,消費
者プロセスは並行に動作し,生産者プロセスは生成したメッセージを順番にバッファ
に入れる操作を行い,消費者プロセスはバッファから順にメッセージを取り出す操作
を行う。取り出されたメッセージは,バッファからなくなるものとする。
 ここで,生産者プロセスは,バッファがいっぱいのときはメッセージを入れるのを
停止し,バッファが空くのを待つ。また,消費者プロセスは,メッセージが入ってい
ない空のバッファからメッセージを取り出せない。

設問1
 P,Vの操作に関する次の問いに答えよ。

(1) P,Vの操作が可能な変数Sのことを何と呼ぶか。
(2) プロセスXとYが一つのリソースRを共有して,排他的に使用する場合の処
 理の流れを図2に示す。図2中の【  ア  】【  ウ  】こ入れる適切な字
 句を答えよ。ただし,プロセスX,Yは,それぞれリソースRを利用する処理
 と,Rを利用する以外の処理を繰り返して行うプロセスである。

設問2
 図1で説明したプロセス間通信において,生産者プロセスと消費者プロセスが
一つずつの場合を考える。このとき,生産者プロセスをA,消費者プロセスをB
とし,P,Vの操作が可能な変数SlとS2を導入して,プロセス間通信を実現する
場合の処理の流れを図3に示す。図3中の【  エ  】【  キ  】に入れる適
切な字句を答えよ。

設問3
 図1で説明した複数の生産者,消費者プロセスによるプロセス間通信を,図3
のアルゴリズムを拡張し,P,Vの操作が可能な新たな変数SA,SBを導入して実
現することを考える。実現方法の一部を図4に示す。
なお,図4中の【  エ  】【  キ  】は,図3と同じものが入る。また,
図4中の i とSAは生産者プロセス間で共有される変数であり,j とSBは消費者プ
ロセス間で共有される変数である。図4中の消費者プロセス,生産者プロセスの
動作は,個々のプロセスの動作を示している。このとき,次の問いに答えよ。

(1) 図4中の【  ク  】【  ケ  】に入れる適切な字句を答えよ。
(2) 複数の生産者,消費者間でのプロセス間通信を実現するためには,図4に
 P(SA),V(SA),P(SB),V(SB)の各処理を加える必要がある、図4の(a)〜(l)で
 示されるどの場所に加える組合せが適切か。解答群の@〜Eの中から選べ。

解答群
 
P(SA)
V(SA)
P(SB)
V(SB)
@
(a)
(e)
(g)
(k)
A
(a)
(e)
(h)
(l)
B
(b)
(e)
(g)
(j)
C
(b)
(f)
(g)
(k)
D
(c)
(d)
(h)
(i)
E
(e)
(f)
(j)
(k)

設問4
 プロセスの状態遷移に関する次の問いに答えよ。
(1) OSの管理するプロセスは,図5に示すように三つの状態に分類され,プロセ
 スはそれらの状態間を遷移する。図5の a,b,c に当てはまる状態名の組合せ
 を,解答群の@〜Eの中から選べ。

解答群
 
 
a
b
c
@
実行可能
実行
待機
A
実行可能
待機
実行
B
実行
実行可能
待機
C
実行
待機
実行可能
D
待機
実行可能
実行
E
待機
実行
実行可能

(2) プロセスXとYがリソースRを共有して使用する場合を考える。OSは,そ
 れぞれのプロセスがもつ優先度の高い順に,各プロセスにCPUを割り当て実行
 させる。
  ここでは,プロセスX,Yを次の条作で動作させる。
 ・プロセスX,Yは,一つの共有リソースRを,図2のアルゴリズムを使って
  排他的に使用する。また,X,YはR以外のリソースは使用しない。
 ・プロセスX,Y以外のプロセスは存在せず,プロセスYよりも先にプロセス
  Xが実行可能になる。
 ・プロセスXの優先度より,プロセスYの優先度が高い。

 このときのプロセスX,Yの実行状況を示したのが,図6である。実線で示
した部分はプロセスが実行されていることを示し,破線で示した部分はリソー
スRを使用している状態である。図6中,ア〜ウのそれぞれの時刻におけるプ
ロセスX,Yの状態名を答えよ。

------------------------------------------------------------------------