平成29年秋期午後問2 【設問2のa】について

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
落ち込み中さん  
(No.1)
https://www.fe-siken.com/kakomon/29_aki/pm02.html

【設問2のa】について

当問題の答えは、「ウ」ですが、
ですが、「エ」だと思いました。

ウ:セマフォ変数Sの値が1であれば0に変更し,終了する。0であれば1になるまで,待った後,0に変更して終了する
エ:セマフォ変数Sの値が1であれば0に変更し,終了する。0であれば何もせずに終了する


理由は、「プロセスは、P操作行った後にセマフォ変数の値が1なら、値を0に変えてから【更新処理】をする」ものだと思ってしまい、
最初からセマフォ変数が0のときは、そのまま終了・・・問題文の「ただし、プロセスが待ち状態になれば,CPUは別のプロセスを実行させるものとする。」
の通り、放っておけば、そのうちまた当該プロセスの番が回ってくるものだ、と解釈したからのですが、深読みしすぎでしょうか??


この問題の意図は、「セマフォ変数が0のまま共有メモリにアクセスしたら問題が起きるから、1になるまで待ってなきゃダメだよ!」
ということを言いたったのでしょうか??


ご教授頂きたく、宜しくお願いします。
2021.02.25 15:31
落ち込み中さん  
(No.2)
言葉足らずでした。
思い込みが入った理由は、

理由は、プロセスは

if
P操作行った後にセマフォ変数の値が1なら、値を0に変えてから【更新処理】をする

else if
P操作行った後にセマフォ変数の値が0なら、終了する。すなわち待ちに入る。
→待っていればいずれ番が回ってくる


ものだと思ったからです。
2021.02.25 15:37
さーちゃんさん 
(No.3)
>この問題の意図は、「セマフォ変数が0のまま共有メモリにアクセスしたら問題が起きるから、1になるまで待ってなきゃダメだよ!」
ということを言いたったのでしょうか??
私は問題を作った人ではないので、推測での回答になってしまいますが...
選択肢エの解説に
「0の時に何もせずに終了してしまうと、資源の確保を行わないまま更新処理が実行されます。この場合、同時更新による更新消失を起こす可能性があるので不適切です」
とあるので、間違っていないと思います。
2021.02.25 17:55
落ち込み中さん  
(No.4)
さーちゃんさん(No.3)

レスありがとうございます。
問題文の解釈を間違えると、痛い目を見ますね・・・
気をつけていきたいところです汗
2021.02.25 21:09

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。

その他のスレッド


Pagetop