つくる
さがす
ログイン
登録
ゲスト
ログインしていません
ログイン
登録
メニュー
通知
検索
単語帳をつくる
マニュアル
フィードバック
お問い合わせ
開発者を支援
サービス稼働状況
Ankilotについて
ログイン
通知はありません
ホーム
コンシスw04 相互排除と同期
コンシスw04 相互排除と同期
暗記
テスト
出力
違反報告
表示設定
お気に入り
フルスクリーン表示
mike_l
2025年07月26日
カード
10
いいね
0
暗記
テスト
出力
広告
単語カード
設定
全面表示
並行プロセスにおいて、なぜ「同期」や「相互排除」が必要なのか?
複数のプロセスが、ファイルやメモリ領域、プリンタなどの「共有資源」に同時にアクセスしようとすると、データの破壊や意図しない結果を招く可能性があるからである 。これを防ぐために、あるプロセスが資源を使っている間は、他のプロセスを待たせる「相互排除」が必要となる 。
際どい領域(クリティカルセクション)」とは何か?
各プロセス内で、共有資源にアクセスするプログラム部分のことである 。この領域への同時アクセスを防ぐことが、相互排除の目的である 。
「プロセス間の同期」とは、どのような状況で必要になるか?
あるプロセスの処理が、他のプロセスの処理結果に依存する場合に必要となる 。例えば、生産者・消費者問題において、消費者は生産者が生産物をバッファに入れるまで待つ必要がある 。
「割り込み禁止」によって相互排除を実現する方法とその問題点を述べよ
際どい領域に入る際に割り込みを禁止し、出る際に許可することで、プロセスの切り替えを防ぎ、相互排除を実現する 。しかし、この方法は利用できる状況が限られ、複雑な処理には向かないという問題点がある 。
ロック変数を用いた相互排除には、どのような問題点があるか?
きわどい領域を使用中は1,未使用なら0となる変数を導入する。
ロック変数の値を確認してから値を変更するまでの間に、別のプロセスが割り込んでくる可能性があることである 。これにより、複数のプロセスが同時に際どい領域に入ってしまう可能性がある 。
セマフォとは何か?その基本的な2つの操作を説明せよ。
Dijkstraによって考案された、相互排除と同期のための仕組みである 。整数型のセマフォ変数に対し、以下の2つの不可分な操作を行う 。
Down (P) 操作: セマフォ変数の値を1減らす。もし値が0なら、プロセスはスリープ(待機)する 。
Up (V) 操作: セマフォ変数の値を1増やす。もし待機中のプロセスがあれば、そのうちの1つを起床させる 。
バイナリセマフォによる相互排除の例
計数セマフォを使うときはどんな時?
カウントを必要とするとき。
ex)生産者と消費者がいる場合。生産者はカウントを+1,消費者はカウントを-1する。カウントが0のときは消費者はプロセスを実行できない
計数セマフォによる相互排除の例
「モニタ」とは何か?セマフォに対する利点は何か?
共有資源とそれに対する操作手続きを一体化した、高水準な同期プリミティブである 。プログラマは際どい領域の処理をモニタ内の手続きとして定義するだけでよく、ロックやアンロックの操作を直接記述する必要がないため、Down/Up操作の順序を間違えるといったセマフォの欠点を解消できる 。
広告
コメント
コメントを送信
単語帳を共有
Twitter
LINE
はてな
アプリ
QRコード
URLコピー
キャンセル
表示設定
文字の色
デフォルト
白
シルバー
グレー
黒
赤
オレンジ
黄
黄緑
緑
水
青
紫
ピンク
文字の太さ
デフォルト
太字
文字の大きさ
デフォルトの文字サイズに加算・減算します。
px
チェック済を非表示
暗記でチェックをつけたカードを非表示にします。
カードの一部を隠す
カードの一部を指定して隠します。
表の文字
表のヒント
表の画像
裏の文字
裏のヒント
裏の画像
設定を適用する
つくる
さがす
ホーム
リスト
メニュー