• ベストアンサー

オペレーティングシステムという分野のプロセスの問題です

オペレーティングシステムという分野のプロセスの問題です プロセス(スレッド)は、「実行可能状態」「実行状態」「待ち状態」の 3つの遷移するが、「待ち状態」を設けることの利点と欠点を述べよ、 という問題があります 利点はわかったのですが、欠点がわかりません 「待ち状態」を設けることの欠点とは何ですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • R32C
  • ベストアンサー率39% (115/290)
回答No.4

回答ありがとうございます。 正直言いまして、貴殿の理解している利点というのは少し違うようです。 貴殿の説明する事例への解は、待ち状態がなくてもスケジューリングのアルゴリズムで解決可能なものです。ラウンドロビン以外にもスケジューリングアルゴリズムがあるので調べてみてください。 でも、だいたい欠点に求める切り口がどのへんか見当がついたので、私なりの回答をします。 1.デッドロックの可能性が発生する。  「哲学者の食事」で調べてもらったらわかると思います。  ようするに何かの変化によって待ちになるわけですが、お互いに待ちになってしまいシステムが動作 しない現象が発生しうることです。 2.プライオリティインバージョンが発生する。  1と似たようなことですが、実際にはセマフォの論理なのですが、優先順位スケジューラの場合に タスク1がタスク2の要求を待っている場合に関係のないタスク3が実行状態になるのですが、優先度が 1 > 3 > 2 の場合に、タスク2がスケジュールされないため、タスク1も動かない状況が発生してしまう問題。これも「プライオリティインバージョン」で調べてみればよいです。

m5ni840j
質問者

お礼

デッドロックは知っていましたが、哲学者の食事とプライオリティインバージョンについてはまったく知らなかったので勉強になりました。この2つが発生する恐れがあるので待ち状態がないと処理がおかしくなってしまう。そういうことなんですね。御意見ありがとうございました。

その他の回答 (3)

  • R32C
  • ベストアンサー率39% (115/290)
回答No.3

それって、問題の切り口によって答えは多岐にわたると思うよ。 まず、貴殿の理解したというか利点はなんですか? 実際にマイコンで待ち状態のないOS(これくらいになるとモニターというのが 習慣ですが)など使ったことはあります。そういう答えを求めているわけでも 無いように思えるので。

m5ni840j
質問者

お礼

御意見ありがとうございます。私が理解した待ち状態を設ける利点を言います。待ち状態がないと仮定します。プロセスはラウンドロビン方式のタイムスライス1で実行するとします。今考えているプロセスはA、B、Cの3つです。よってすべてのプロセスが実行状態に移る順序はABCABCABC…となります。待ち状態がないということは実行状態になっていないプロセスは実行可能状態に置かれ、順番が回ってくるのを待ちます。何回も仮定して悪いのですが、B、Cのプロセスをプロセス時間が3のプリンタの使用ということにしましょう。Aは違ったプロセスです。このときABCとCに実行状態の順番が回ってきたらプロセスCはまだプロセスBが終わっていないので割り当てられても使えないことになります。それだったらプロセスAを実行状態にしたほうがターンアラウンドタイムが小さくなります。しかし実行可能状態にあるのであれば順番が回ってきてしまう。それだったらプロセスCを待ち状態に遷移しておいて先にプロセスAを実行できるようにしよう。それが私が考えた待ち状態を設けることの長所です。長くなってすいません。

  • okwabaka
  • ベストアンサー率15% (11/73)
回答No.2

だからさぁ、無いと困る物にデメリットって言われてもね。

  • okwabaka
  • ベストアンサー率15% (11/73)
回答No.1

実行可能状態になってないから待ち状態が存在する。 実行可能状態になっていないのに実行可能状態になってしまって 順番がきて実行状態されたらどうなると思う?正しい結果が得られなかったり プロセスそのものがクラッシュすると思わないの?

m5ni840j
質問者

お礼

御意見ありがとうございます。なるほど確かにそうですね。でも生意気なことを言わせてもらうとこれは待ち状態を設けることの長所だと思うんですよね。私が知りたいのは欠点です。何か知っていますか?

関連するQ&A

  • マルチプロセスの利点、欠点

    OSの課題で、 複数のプロセスで処理を実行する利点、欠点を述べる問題なのですが、 利点は 1.並列して処理を進めると、適切な処理の切り替えによってシステム全体の処理効率が上がることがある 2.信頼性向上に繋がる  ・fail-softなシステムを容易に構築できる  ・fail-tolerantなシステムを容易に構築できる 3.複数のCPUによる多重プログラミング環境においても、ソフトウェアを再設計することなく直ちにハードウェアに見合った性能向上が期待できる だと思うのですが、 欠点が調べてもなかなかわかりません。 どなたかご存知の方教えてください。

  • 開始するオペレーティングシステムを

    まず、今に至る経緯ですがリカバリをミスしてしまい、起動できなくなりOSを再インストールしたところインストールするドライブを間違ってしまったのか開始するオペレーティングシステムのところにVistaが2つ表示されるようになってしまいました。 ドライブにはCとDの両方にWindowsとProgramfailがある状態です。 しばらくこの状態で使っていたのですが、電源を入れるたびにOSを選ぶのが面倒なのでCドライブをフォーマットしてみたのですが中身は空っぽになっているのに開始するオペレーティングシステムのところがまだ2つの中から選ぶ状態になったままです。 この状態を回復できる方法をご教授おねがいします。 ちなみにオペレーティングシステムを選ぶときになぜかマウスもキー操作も受け付けてくれません。。

  • オペレーティングシステムの選択!

    自作組み立てパソコンです。マザーボードはAopenのAX4BPro-533です。 今まではCドライブにWindowsXPを入れて動かしてましたが具合が悪くなりKドライブに試験的に他のWindowsXPを入れて動かしてました、その時に最初にオペレーティングシステムの選択が出てどちらのWindowsを動かすかの設定画面出て選択Windowsを立ち上げてました、Cドライブの状態が改善されKドライブを削除しましたがオペレーティングシステムの選択が出てしまいます。この選択画面を出なくしCドライブのWindowsを直接起動させたいのですがどうしたら良いかわかりません、だれか教えてください。

  • Windows オペレーティングシステムを確認

    お世話になっております。 コンピューターで実行されている Windows オペレーティングシステムが 32 ビット版か 64 ビット版かを確認する方法で、 バッチ(MS-DOS・コマンドプロンプト)での識別をしたいので、システム変数等で識別する方法を教えていただけませんか。(Windows7 及び WindowsXPで) よろしくお願いします。

  • タスクやプロセス管理について

    このカテゴリでよいか迷ったのですが質問させていただきます。 私は今までの仕事で、某セキュリティ会社の防犯監視システム開発、某携帯電話開発(UI)に携わってきました。 そこではリアルタイムOSマルチタスク環境でのプログラム開発だったのですが、マルチタスクといっても当然タスク毎に"実行可能状態"、"待ち状態"、"実行中状態"等(その他いろいろ)、各種状態を持ち、タスクプライオリティに従いOSがタスクのスケジューリングを行い順次タスクが切り替わって制御されているという感じだったのですが(何が言いたいかというと優先順位の違う複数のタスクが並列で動くことはないですよね?と言いたいのですが)、 今回LinuxOS(MontaVista)でのプログラム開発を行ってみて違いに戸惑いを感じました。(マルチ)プロセスとは何ぞや?から始まり、さらにそのプロセス内で作成されるスレッド、そのプロセス・スレッドは他のプロセス・スレッドと並列で動く等等。(正確にはあたかも同時に動作しているかのように見えるってことですよね?) 前半の"タスク"と後半の"プロセス"とはこのように別物なのですよね? 今までの経験では並列動作という概念が無かったもので、どうもしっくりこなく意見をあおぐ為投稿させていただきました。 かなり漠然としたことで恐縮なのですが、今まで述べたことでなにか勘違いしているんじゃないかとか間違えていることとかありますか? 長文となり申し訳ありません。

  • プロセス、

    大学でオペレーティングシステムの講義を受けているのですが その中でプロセスということばが出てきます。 日本語に訳すと「過程」とでてきます。 しかし訳せても何をイメージしたらいいかわかりません。 ワードがどうとかエクセルどうとか説明してほしいです。 ほんとになんとなくで困ってます。

  • 子プロセスの利点

    プロセスについての質問なのですが、 親プロセスでプログラムを実行するのではなく、 子プロセスを生成してその上でプログラムを実行する利点などはどのようなことがあるのか? わかる方がいらしたら質問にお答えいただけると幸いです。

  • 不要なプロセスを抹殺したいのですが><

    タスクマネージャーにあるプロセスが、結構あるので、削除したいと思います。 (1)ここで削除しても、パソコンを立ち上げるとまた消したプロセスが実行されるんでしょうか?? (2)消して良いプロセスと消したら危険そうなプロセスの区別が付きません。どういう判断で消したら良いかの判別をすれば良いでしょうか?? (3)プロセスの中で、『イメージ名』は全部バラバラですが、『ユーザー名』はる程度まとまっているので、この『ユーザー名』の一覧で不要な分野は消してもいいのでしょうか? ……ユーザー名一覧 ・Owner ・SYSTEM ・LOCAL SERVICE ・NETWORK SERVICE …このうち一斉に消して良い物はありますか?教えて下さい。

  • プロセスの状態遷移について

    初投稿です. プロセスは3つの状態があるのですが,何故4つしか状態遷移がないのでしょうか? よろしければ教えてくださいませんか?

  • オペレーティングシステムの選択

    PC初心者です。よろしくお願いします。 DELL デスクトップ Vostro 220s です。 不具合によりOSの再インストールを試みましたが、方法を間違えてしまい(後で間違いに気づきました)、再インストールできませんでした。 その後、起動すると、下記のメッセージが出ます。 (*1)-------------------------------------------------  オペレーティングシステムの選択   Microsoft Windows XP Professional   Microsoft Windows XP Professional セットアップ  項目を選択し、Enterキーを押してください。  ------------------------------------------------- 「Microsoft Windows XP Professional セットアップ」がハイライトしていて、そのまま放っておくと、再び同じ画面になります。 「Microsoft Windows XP Professional」を選択すると、きちんとXPが立ち上がります。 この選択を起動するたびに行うのが面倒なので、ネットで調べて、下記の方法を見つけました。 (*2)---------------- マイコンピュータのプロパティ→システムのプロパティ →詳細設定→起動と回復→設定→既定のオペレーティングシステムにWindows XP を選択し、 「オペレーティングシステムの一覧を表示する時間」のチェックを外して、OKをクリックする。 ----------------- を実行しました。 この後、下記のエラーメッセージが表示され、行き詰まりました。 (*3)「The file cdrom.sys could not be found. Press any key to continue.」 any key を押しても正常に立ち上がらず、他のエラーメッセージが出ます。 「Set up failed. Press any key to restart your computer.」 any key を押すと、Dellのロゴが出ますが、画面右上に F2:Set up F12:Boot me が表示され、放っておくと(*3)のエラーメッセージに戻ってしまいま す。 戻る前に、 「F2」を押すと「CMOS Set up Utility....」画面になります。 「F12」を押すとこれまた、初心者には理解できない画面になります。 教えていただきたいのは 1.(*2)の設定を破棄して、(*1)の状態にもどす。(戻してからバックアップしてなかったデータをバックアップします。) 2.その後に、(*1)を表示せずにXPが立ち上がるようにする。 初心者ですのでわかりやすく教えていただけると有り難いです。 よろしくお願いします。