- ベストアンサー
オペレーティングシステムという分野のプロセスの問題です
オペレーティングシステムという分野のプロセスの問題です プロセス(スレッド)は、「実行可能状態」「実行状態」「待ち状態」の 3つの遷移するが、「待ち状態」を設けることの利点と欠点を述べよ、 という問題があります 利点はわかったのですが、欠点がわかりません 「待ち状態」を設けることの欠点とは何ですか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
回答ありがとうございます。 正直言いまして、貴殿の理解している利点というのは少し違うようです。 貴殿の説明する事例への解は、待ち状態がなくてもスケジューリングのアルゴリズムで解決可能なものです。ラウンドロビン以外にもスケジューリングアルゴリズムがあるので調べてみてください。 でも、だいたい欠点に求める切り口がどのへんか見当がついたので、私なりの回答をします。 1.デッドロックの可能性が発生する。 「哲学者の食事」で調べてもらったらわかると思います。 ようするに何かの変化によって待ちになるわけですが、お互いに待ちになってしまいシステムが動作 しない現象が発生しうることです。 2.プライオリティインバージョンが発生する。 1と似たようなことですが、実際にはセマフォの論理なのですが、優先順位スケジューラの場合に タスク1がタスク2の要求を待っている場合に関係のないタスク3が実行状態になるのですが、優先度が 1 > 3 > 2 の場合に、タスク2がスケジュールされないため、タスク1も動かない状況が発生してしまう問題。これも「プライオリティインバージョン」で調べてみればよいです。
その他の回答 (3)
- R32C
- ベストアンサー率39% (115/290)
それって、問題の切り口によって答えは多岐にわたると思うよ。 まず、貴殿の理解したというか利点はなんですか? 実際にマイコンで待ち状態のないOS(これくらいになるとモニターというのが 習慣ですが)など使ったことはあります。そういう答えを求めているわけでも 無いように思えるので。
お礼
御意見ありがとうございます。私が理解した待ち状態を設ける利点を言います。待ち状態がないと仮定します。プロセスはラウンドロビン方式のタイムスライス1で実行するとします。今考えているプロセスはA、B、Cの3つです。よってすべてのプロセスが実行状態に移る順序はABCABCABC…となります。待ち状態がないということは実行状態になっていないプロセスは実行可能状態に置かれ、順番が回ってくるのを待ちます。何回も仮定して悪いのですが、B、Cのプロセスをプロセス時間が3のプリンタの使用ということにしましょう。Aは違ったプロセスです。このときABCとCに実行状態の順番が回ってきたらプロセスCはまだプロセスBが終わっていないので割り当てられても使えないことになります。それだったらプロセスAを実行状態にしたほうがターンアラウンドタイムが小さくなります。しかし実行可能状態にあるのであれば順番が回ってきてしまう。それだったらプロセスCを待ち状態に遷移しておいて先にプロセスAを実行できるようにしよう。それが私が考えた待ち状態を設けることの長所です。長くなってすいません。
- okwabaka
- ベストアンサー率15% (11/73)
だからさぁ、無いと困る物にデメリットって言われてもね。
- okwabaka
- ベストアンサー率15% (11/73)
実行可能状態になってないから待ち状態が存在する。 実行可能状態になっていないのに実行可能状態になってしまって 順番がきて実行状態されたらどうなると思う?正しい結果が得られなかったり プロセスそのものがクラッシュすると思わないの?
お礼
御意見ありがとうございます。なるほど確かにそうですね。でも生意気なことを言わせてもらうとこれは待ち状態を設けることの長所だと思うんですよね。私が知りたいのは欠点です。何か知っていますか?
お礼
デッドロックは知っていましたが、哲学者の食事とプライオリティインバージョンについてはまったく知らなかったので勉強になりました。この2つが発生する恐れがあるので待ち状態がないと処理がおかしくなってしまう。そういうことなんですね。御意見ありがとうございました。