| English | 意味 |
|---|---|
| process/ˈprəʊses/ | プロセス |
| scheduler/ˈʃedjʊlə/ | スケジューラ |
| multi-tasking/ˈmʌlti ˈtæskɪŋ/ | マルチタスク |
| spooling/ˈspuːlɪŋ/ | スプーリング |
| caching/ˈkæʃɪŋ/ | キャッシュ |
| round robin/raʊnd ˈrɒbɪn/ | ラウンドロビン |
| context switch/ˈkɒntekst swɪtʃ/ | コンテキストスイッチ |
| process control block/ˈprəʊses kənˈtrəʊl blɒk/ | プロセス制御ブロック |
なぜ全てが凍結してもマウスは動くのか
- プログラムがロックアップします。ウィンドウは再描画されず、スピナーは止まり、何も応答しません。しかし、マウスカーソルはまだ以前と同じように画面を滑っています。
- これはオペレーティングシステムが何かを教えてくれています:マシンが停止しているわけではなく、ある プロセス が停止しているだけです。スケジューラは依然としてプロセッサのスライスを割り当てており、凍結したプログラムはそのスライスを使って何も有用なことをしていないだけなのです。
- マシンのあらゆるリソース就是这样共有されています:プロセッサは時間で、メモリは空間で、プリンタはキューで。
- この授業では、OSがこれらのリソースを最大限に活用する方法と、プロセスの生成から終了までの管理方法を解説します。
リソースを最大限に活用する
- マルチタスク: プロセッサはプロセス間で高速に切り替わるため、一度に実行されているのは1つだけですが、複数のプロセスが同時に動作しているように見えます。
- ページング: メモリをRAMとディスク間で移動させることで、物理メモリより多くのプログラムを同時に開くことができます。
- スプーリング: 低速デバイスの出力をディスク上のキューに格納するため、プロセッサはプリンターの処理を待つ必要がありません。キャッシュは最近使用されたデータを高速メモリに保持し、再度取得する必要をなくします。
- OSはこのすべての処理を、コマンドラインまたはGUIであるユーザーインターフェースの背後に隠しています。
マルチタスクにより、複数のプログラムが同時に実行されているように見せるために以下を行います:
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
OSは単一のCPUをプロセス間で高速に切り替えることで、すべてが同時に進行しているように見せます。
計算例: スプーリングが有用な理由
- スプーリングがコンピュータのリソース利用をどのように改善するか説明しなさい。 [3]
- プリンターはプロセッサより数千倍遅いため、出力を直接送るプログラムは待たされ、プロセッサはアイドル状態になります。
- スプーリングを使用すれば、出力はディスク上のキューに素早く書き込まれ、プログラムは即座に次の処理に進みます。
- 別プロセスがプリンターを独自の速度で処理するため、プロセッサが他の作業を行う間に、複数のジョブをキューに積むことができます。低速デバイス、キュー、そしてプロセッサが代わりに行う作業の名前を述べよ。
スプーリングがシステムに役立つ理由は:
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
スプーリングは印刷ジョブをディスクにバッファリングするため、高速なCPUが遅いプリンタによって阻害されません。
OSがリソースを最大限に活用するために役立つ技術はどれですか?すべて該当するものを選択してください。
難易度 2/5 · 140 コイン + 今日初回完了時に小ボーナス付与
時間共有、遅いデバイスへのキュー化、ホットデータcloseに保持すること。待機中のプロセスを殺すことは、ユーザーの作業を失うだけで、利用率を向上させません。
プロセスとスケジューラ
- プロセスとは実行中のプログラムであり、そのコード、現在の状態、メモリ、開いているファイルを含みます。ディスク上のプログラムはプロセスではなく、実行中のプログラムがプロセスです。
- スケジューラは、次にどの準備完了プロセスを実行するか、またどの程度実行させるかを決定します。その目標は、プロセッサを忙しく保つこと、インタラクティブなユーザーに素早く応答すること、公平であることです。
- ラウンドロビンは各準備完了プロセスに一定のタイムスライスを与え、その後キューの最後へ送ります: 単純で、公平かつ応答性が高いです。他のポリシーには先来者順 (FCFS)、最短作业优先 (SJF)、剩余時間最短があります。

誰にも欠けがなく、誰もプロセッサを独占しません
ラウンドロビンスケジューリングは、各レディプロセスに固定されたタイムスライスを割り当て、その後キューの末尾に移動することで、公平かつ応答性を確保します。
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
均等なタイムスライスを順次割り当てることで、いずれかのプロセスがCPUを独占することを防ぎ、インタラクティブなプログラムの応答性を維持します。
プロセスとは何ですか?
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
ディスク上のファイルはプログラムですが、読み込まれて実行され、独自の状態を持つようになれば、それはプロセスとなります。
プロセスの状態
- New: 作成中。Ready: 実行可能で、プロセッサのみを待機中。Running: 現在実行中。Blocked: 入出力などの外部イベントを待機中。Terminated: 終了済み。
- 状態遷移は試験で問われる内容です。タイムスライスの満了によりRunningがReadyへ移行。I/O要求によりRunningがBlockedへ移行。I/O完了によりBlockedがReadyへ移行。スケジューラによって選択されることでReadyがRunningへ移行します。
- 非対称性に注意してください: Blocked状态のプロセスが直接Runningに戻ることはありません。Readyキューに戻り、順番を待ちます。

5つの状態と、それぞれの矢印の理由
各プロセスの状態とその意味を対応させてください。
難易度 2/5 · 140 コイン + 今日初回完了時に小ボーナス付与
プロセスはレディ → 実行中 → (ブロック) → レディへと循環し、終了するまで続きます。
計算例: プロセスのトレース
- あるプロセスがファイルの読み込みを要求した瞬間、それが実行されていました。このプロセスに何が起こるか説明しなさい。
- データ到着まで続行できないため、RunningからBlockedへ移行します。スケジューラは待たず、直ちに別の準備完了プロセスにプロセッサを割り当てます。
- ディスクの読み込みが完了すると、プロセスはBlockedからReadyへ移行します。すぐに実行を再開するわけではなく、準備完了キューに加わります。
- 後でスケジューラによって選択され、ReadyからRunningへ移行して、中断していた地点からそのまま実行を続けます。
プロセスのライフサイクル
ループ内を巡回するプロセスの軌跡を確認してください。スケジューラによって選択された時にのみ実行され、I/Oが必要になるとブロックされ、タイムスライスが終了するとレディに戻り、完了するまで繰り返されます。
実行中のプロセスがファイルの読み込みを要求しました。次に起こることを順序立てて記述してください。
難易度 3/5 · 200 コイン + 今日初回完了時に小ボーナス付与
ブロックされたプロセスは直ちに実行中に戻りません:レディキューに加わり、番を待機します。
コンテキストスイッチ
- 実行中のプロセスを変更するために、OSは現在のプロセスの状態、レジスタ、プログラムカウンタ、ステータスをプロセス制御ブロック (PCB) に保存し、次に実行するプロセスの状態をそのプロセス固有のブロックからロードします。
- これをコンテキストスイッチと呼びます。これには現実的なコストがかかります: コントロールスイッチ中、プロセッサはユーザーの作業を行わず、家務(管理作業)を行 onlyします。
- そのため、タイムスライスはトレードオフです。長すぎるとインタラクティブなプログラムが重く感じられ、短すぎると機械が計算よりも切り替えに時間を割いてしまいます。
コンテキストスイッチには以下が含まれます:
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
OSは実行中のプロセスのレジスタ/PCをそのPCBに保存し、次のプロセスのものをロードします。これは各スイッチごとに小さなオーバーヘッドです。
コンテキストスイッチの間、プロセスのレジスタとプログラムカウンラーは ____ に保存されます。
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
次に、次のプロセスの状態が自身のブロックからロードされます。保存と復元の処理は実際の作業であり、これがスイッチに時間がかかる理由です。
インターラプトとカーネル
- カーネルはOSのコアであり、実際にこれを遂行します。デバイスやプログラムからのインターラプトに応答し、インターラプトとは実行中のプロセスからOSへのコントロールの返却のことです。
- タイムスライスの終了点におけるタイマーインターラプトこそが、プレエンプティブ・スケジューリングを可能にしています。これなければ、 yieldedしないプログラムがプロセッサを永遠に占有してしまいます。
- これが冒頭のクイズの答えです: フリーズしたプログラムは自分のタイムスライス以上のプロセッサを占有していないため、マウスは動き続けます。
見落としやすいポイント
- プロセスは実行中のプログラムであり、ディスク上のファイルではありません。
- BlockedからReadyへ、直接Runningへはなりません。スケジューラが次に実行するタイミングを選びます。
- コンテキストスイッチはプロセス制御ブロックを通じて状態を保存・復元しますが、これにはコストがかかります。
- マルチタスクとは、プロセスが非常に速い順番で交代するため同時に実行しているように見えることであり、単一コア上で真に一度に実行されていることを意味しません。
理解できましたか
- OSはマルチタスク、ページング、ディスクキューへのスプーリング、キャッシュによってリソース利用を最大化します。
- プロセスは実行中のプログラムであり、スケジューラは次の準備完了プロセスを選択し、ラウンドロビンは各プロセスに一定のタイムスライスを与えます。
- 状態はNew, Ready, Running, Blocked, Terminatedです: タイムスライスの満了はRunningをReadyへ、I/O要求はRunningをBlockedへ、I/O完了はReadyへ戻します。
- コンテキストスイッチはプロセス制御ブロックを介して状態を保存・復元し、コストがかかるため、スライスの長さはトレードオフとなります。