オペレーティングシステム
OSの役割と構成、タスクの状態遷移とスケジューリング、実記憶と仮想記憶の管理、ユーザー管理などのOSの機能を理解できるようになります。
ねらい
ハードウェアとアプリケーションの間に立つ基本ソフトウェア、OSを学びます。このレッスンを終えると、OSの役割と構成、タスクの状態遷移とスケジューリング方式、実記憶と仮想記憶の管理、ユーザー管理の基本を説明できるようになります。
ストーリー
あなたはいま、音楽を聴きながら文書を書き、ブラウザで調べものもしています。プロセッサの数より多くの仕事が、同時に動いているように見えます。誰かが目にも留まらぬ速さで仕事を切り替え、メモリを割り振り、キーボードの入力を正しい相手に届けているからです。その「誰か」がオペレーティングシステム(OS)です。
OSの位置づけと構成
アプリケーションとハードウェアの間に立ち、資源の管理と基本機能の提供を受け持つソフトウェアがOSで、システムソフトウェアとも呼ばれます。UNIX、PC用OS、モバイル端末用OS、機器制御向けのリアルタイムOS、セキュリティを強化したセキュアOSなど、用途ごとの種類があります。
OSの中核部分をカーネルといいます。必要最小限の機能だけを核に残すマイクロカーネルと、多くの機能を核に持たせるモノリシックカーネルという設計があります。カーネルの処理は特権的なカーネルモード(スーパーバイザーモード)で動き、アプリケーションは制限されたユーザーモードで動きます。この区別が、アプリケーションの誤りからシステム全体を守ります。
電源投入時にOSを読み込んで起動する仕組みをブートストラップといい、ネットワーク経由で起動するネットワークブート、複数のOSを切り替えて起動するマルチブートなどの形態があります。
ジョブ管理とタスク管理
ジョブとタスク
利用者から見たひとまとまりの仕事の単位をジョブといい、ジョブはジョブステップで構成されます。バッチ処理では、ジョブスケジューラーが実行の順序を管理します。一方、OSの内部で処理を割り当てる実行の単位がタスク(プロセス)で、タスクの中のさらに細かい実行の流れをスレッドといいます。
タスクの状態遷移
タスクは、次の3つの状態を行き来しながら実行されます。
- 実行可能状態は、CPUの割当てを待っている状態です。
- 実行状態は、CPUを割り当てられて動いている状態です。
- 待ち状態は、入出力の完了などCPU以外の何かを待っている状態です。
実行可能状態のタスクにCPUを割り当てる役割を担うのがディスパッチャで、割当てをディスパッチといいます。入出力を待つ間はCPUが空くので、その間に別のタスクを実行すれば全体の効率が上がります。これが多重(マルチ)プログラミングの考え方です。タスクはこの3つの状態を、ディスパッチや入出力の発生・完了をきっかけに巡り続けます。
スケジューリング
どのタスクにCPUを割り当てるかを決める方式をスケジューリングといいます。OSが実行中のタスクからCPUを取り上げられるプリエンプティブ方式と、タスクが自発的に手放すまで待つノンプリエンプティブ方式に大別されます。代表的な方式には、優先度の高いタスクから実行する優先順方式と、タイムクウォンタムと呼ばれる一定の持ち時間(タイムスライス)ずつ順番に割り当てるラウンドロビン方式があります。
記憶管理:メモリを効率よく使う
実記憶管理
主記憶をタスクに割り当てる方式には、区画の大きさを固定する固定区画方式と、必要に応じて変える可変区画方式があります。割当てと解放を繰り返すと、空き領域が細切れに散らばるフラグメンテーションが起こります。細切れの空きを寄せ集めて連続した領域にする操作をコンパクションといい、不要になった領域を自動的に回収する仕組みをガベージコレクションといいます。
主記憶が足りないときは、実行中でないタスクの内容を補助記憶へ退避(スワップアウト、ロールアウト)し、必要になったら戻す(スワップイン、ロールイン)というスワッピングを行います。プログラムを分割して必要な部分だけを読み込むオーバーレイ方式(セグメント方式)という工夫もあります。
仮想記憶管理
実際の主記憶の容量に縛られない大きな記憶空間をプログラムに見せる仕組みが仮想記憶です。仮想的な番地と実際の番地の対応は、動的アドレス変換によって実行時に変換されます。方式には、ベースアドレス方式、セグメント方式、固定長のページに分けるページング方式、両者を組み合わせたセグメントページング方式があります。
ページング方式では、必要なページが主記憶にないとページフォールトが発生し、補助記憶から読み込みます。主記憶が満杯なら、どれかのページを追い出すページリプレースメントが必要です。追い出すページの選び方には、最も長い間参照されていないページを選ぶLRUと、最も古く読み込んだページを選ぶFIFOがあります。主記憶が不足してページの出し入ればかりが起こり、処理が進まなくなる現象をスラッシングといいます。
OSのその他の管理機能
OSはこのほかにも幅広い管理機能を持ちます。装置に依存しないファイルアクセスを提供するデータ管理、チャネルや入出力割込みを使う入出力管理、TCP/IPなどの通信プロトコルを扱うネットワーク制御、システムの始動と終了やモニタリングを受け持つ運用の管理です。
ユーザー管理では、利用者ごとにユーザーアカウントを作り、システム利用権やファイルアクセス権を与えます。すべての権限を持つ管理者をスーパーユーザーといい、UNIX系ではroot、Windows系ではAdministratorと呼びます。一時利用者にはゲストアカウントを使います。アカウントを組織全体で一元管理するディレクトリサービスの標準的なプロトコルがLDAPです。セキュリティ制御としては操作記録を残すロギング機能や監査のためのオーディット機能があり、障害管理はハードウェア障害とソフトウェア障害の検出や記録、リスタートを受け持ちます。
例題
次の問いに答えてください。
問1 タスクの3つの状態のうち、CPUの割当てを待っている状態を何といいますか。
問2 UNIX系のOSで、すべての権限を持つスーパーユーザーのアカウント名は何ですか。
解答と解説
問1の答えは実行可能状態です。CPUさえ割り当てられればすぐ動ける状態です。入出力の完了などを待っている待ち状態とは、待っている対象が違います。
問2の答えはrootです。Windows系ではAdministratorに当たります。強い権限を持つため、ふだんの作業では一般のアカウントを使うのが安全な運用です。
応用
本試験を意識した問題を解いてみましょう。
問 仮想記憶のページ置換えにおいて、最も長い間参照されていないページを追い出す方式はどれでしょうか。次の中から選んでください。
- LRU
- FIFO
- ラウンドロビン
- スワッピング
解答と解説
答えは1のLRUです。「最近使われていないページは、この先も使われにくいだろう」という考え方で追い出すページを選びます。2のFIFOは、参照されたかどうかに関係なく、最も古く読み込んだページから追い出す方式です。3のラウンドロビンは、タスクにCPUを一定時間ずつ順番に割り当てるスケジューリングの方式であり、ページ置換えの方式ではありません。4のスワッピングは、タスク単位で主記憶の内容を補助記憶へ出し入れする仕組みのことで、ページ単位の置換えアルゴリズムの名前ではありません。
分からなかった点・気になった点
読み込み中です。