基本情報技術者試験 ハードウェア・OS完全対策
CPU・メモリ・仮想記憶・スケジューリング

ハードウェアとOS(オペレーティングシステム)は、コンピュータの内部構造と資源管理を学ぶ分野です。 基本情報技術者試験では、CPUの性能計算(MIPS・クロック計算)、キャッシュの実効アクセス時間計算、 仮想記憶のページング、プロセスのスケジューリングといった計算問題が頻出します。 公式を正確に覚えて数値を代入する練習を繰り返すことが、この分野の攻略の鍵です。

1. CPUの基本・クロック・MIPS計算

CPU(中央処理装置)はコンピュータの頭脳で、命令の読み込み・解読・実行を繰り返します。 動作のタイミングを刻む基準となるのがクロック信号で、その周波数(Hz)が高いほど1秒間に多くの命令を処理できます。 1GHz(ギガヘルツ)は1秒間に10億回のクロックを意味します。

クロックサイクル時間と処理時間の計算

クロック周波数とクロックサイクル時間(1クロックにかかる時間)は逆数の関係にあります。

クロックサイクル時間 = 1 ÷ クロック周波数 例)2GHz の場合 → 1 ÷ 2,000,000,000 = 0.5ナノ秒(ns)

命令の実行に必要なクロック数をCPI(Clocks Per Instruction)といい、処理時間は以下で求めます。

処理時間 = 命令数 × CPI × クロックサイクル時間

MIPS(Million Instructions Per Second)

MIPSは1秒間に何百万命令を実行できるかを示す性能指標です。試験では「クロック周波数とCPIからMIPSを求める」問題が頻出します。

MIPS = クロック周波数(MHz) ÷ CPI 例)400MHz のCPU、CPI=2 の場合 → 400 ÷ 2 = 200 MIPS

パイプライン処理

パイプラインは複数の命令を流れ作業のように並行処理する技術です。 1命令を「フェッチ→解読→実行→書き込み」の4段階に分け、各段階を重ねて実行することで1クロックごとに1命令を完了できる状態を目指します。 ただし、分岐命令(if文など)が来るとパイプラインの先読みが無駄になる「分岐ハザード」が発生することがあります。

CISC と RISC

方式特徴代表例
CISC複雑・高機能な命令セット。1命令で多くの処理ができるx86(IntelのPC用CPU)
RISC単純な命令のみ。1命令を高速に実行。パイプラインに向くARM(スマートフォン用CPU)

2. メモリ階層とキャッシュの実効アクセス時間

コンピュータの記憶装置は、速度・容量・コストのトレードオフで階層構造を形成しています。 上位ほど高速・小容量・高価で、下位ほど低速・大容量・低コストです。 この構造を「メモリ階層」と呼びます。

階層速度容量の目安種類
レジスタ最速(1クロック以下)数十〜数百バイトCPU内部
キャッシュメモリ(L1〜L3)高速(数〜数十ns)数KB〜数十MBSRAM
主記憶(メインメモリ)中速(数十〜百ns)数GB〜数十GBDRAM
補助記憶(SSD/HDD)低速(μs〜ms)数百GB〜数TBフラッシュメモリ・磁気ディスク

キャッシュメモリと実効アクセス時間の計算

キャッシュメモリは、CPUと主記憶の速度差を埋めるための高速な記憶装置です。 よく使うデータをあらかじめキャッシュに保持しておくことで、CPUが待つ時間を大幅に減らせます。 目的のデータがキャッシュに存在する確率をヒット率(h)といい、 ヒット率が高いほど全体の平均アクセス時間(実効アクセス時間)は短くなります。

実効アクセス時間 = h × キャッシュアクセス時間 + (1-h) × 主記憶アクセス時間 例)ヒット率 0.9、キャッシュ 10ns、主記憶 100ns の場合 → 0.9 × 10 + 0.1 × 100 = 9 + 10 = 19ns
💡 試験のポイント:「主記憶アクセス時間」の扱いに注意。問題文が「キャッシュアクセス後に主記憶もアクセスする」構成の場合は式が変わります(h × tc + (1-h) × (tc + tm) 形式)。問題文をよく読んで判断しましょう。

DRAM と SRAM の違い

種類速度コスト用途特徴
SRAM高速高いキャッシュメモリリフレッシュ不要。フリップフロップ回路で構成
DRAMやや低速安い主記憶(メインメモリ)定期的なリフレッシュが必要。コンデンサで構成

3. 仮想記憶・ページング・ページ置換アルゴリズム

仮想記憶(バーチャルメモリ)は、補助記憶(SSD/HDD)の一部を主記憶の延長として使い、 実際の物理メモリよりも大きなアドレス空間をプログラムに提供する仕組みです。 プログラムは物理アドレスを意識せず、仮想アドレスでメモリにアクセスできます。 OSとハードウェア(MMU:メモリ管理ユニット)が仮想アドレスを物理アドレスに変換します。

ページングとページフォールト

ページングは仮想記憶を固定長のブロック(ページ)単位で管理する方式です。 仮想アドレス空間をページに分割し、必要なページだけ主記憶に載せておきます。 プログラムがアクセスしようとしたページが主記憶にない状態をページフォールトといい、 発生するとOSが補助記憶から該当ページを主記憶に読み込みます。この読み込み処理(ページイン)は時間がかかるため、 ページフォールトの頻度を減らすことが性能改善の鍵になります。

セグメンテーション

ページングが固定長でメモリを分割するのに対し、セグメンテーションはプログラムのコード・データ・スタックなど 論理的な意味単位(可変長)で分割する方式です。 内部断片化(ページ内の未使用領域)が生じにくいですが、外部断片化(割り当て済み領域の隙間)が発生しやすいというトレードオフがあります。

ページ置換アルゴリズム

主記憶が満杯のときに新しいページをページインするには、既存のページを追い出す(ページアウト)必要があります。 どのページを追い出すかを決めるのがページ置換アルゴリズムです。

アルゴリズム方針特徴
FIFO最も古く読み込まれたページを置換実装が簡単。最適とは限らない
LRU(最近最も使われていない)最後に参照された時刻が最も古いページを置換頻出。キャッシュの置換にも使われる
LFU(最も使用頻度が低い)参照回数が最も少ないページを置換頻繁に使われたページを残せる
最適アルゴリズム(OPT)将来最も長く使われないページを置換理論上最適だが未来は予測不可能

スラッシング

スラッシングは、主記憶が不足してページフォールトが多発し、 処理よりもページの入れ替え(ページイン・ページアウト)の方に時間がかかってしまう状態です。 CPUの使用率が極端に低下するという逆説的な現象が起きます。 対策としては、主記憶の増設、同時実行プロセス数の削減、ページサイズの見直しなどがあります。

4. プロセスとスケジューリング

プロセスとは、実行中のプログラムのことです。 OSは複数のプロセスを管理し、CPUの使用権を次々に割り当てることで、複数のアプリが同時に動いているように見せます(マルチタスキング)。 どのプロセスにどの順番でCPUを割り当てるかを決めるのがプロセススケジューリングです。

プロセスの状態遷移

状態説明
実行可能状態(待機)CPUが空くのを待っている状態
実行状態CPUを使って命令を実行している状態
待ち状態(ブロック)入出力完了などのイベントを待っている状態

主なスケジューリング方式

方式説明特徴
FCFS(到着順)到着した順に処理する実装が簡単。長い処理が来ると後続が待たされる
SJF(最短ジョブ優先)処理時間が短いプロセスを優先平均待ち時間が短くなるが、長い処理は後回しになり続ける可能性がある(飢餓)
ラウンドロビン各プロセスに一定時間(タイムクォンタム)ずつ順番にCPUを割り当てる公平性が高く対話型システムに適している。試験で最頻出
優先度スケジューリング優先度の高いプロセスを先に実行する優先度の低いプロセスが長時間待たされる飢餓が起きうる
多段フィードバックキュー複数の優先度キューを用意し、実行するたびに優先度を下げる長時間のプロセスの優先度を自動的に下げる適応型

ラウンドロビンの計算例

タイムクォンタムを2msとして、3つのプロセスA(処理時間5ms)、B(処理時間3ms)、C(処理時間4ms)が同時に到着した場合、 実行順はA(2ms)→B(2ms)→C(2ms)→A(2ms)→B(1ms)→C(2ms)→A(1ms) となります。 プロセスAの完了時刻は12ms、Bは9ms、Cは11msです。

5. 割り込みとデバイス管理

割り込み(インタラプト)

割り込みとは、CPU が処理中に外部や内部からの信号によって現在の処理を中断し、 別の処理(割り込みハンドラ)を実行する仕組みです。 割り込みが終わると元の処理に戻ります。

種類原因
外部割り込み(ハードウェア割り込み)外部デバイスからの信号キーボード入力、タイマー満了
内部割り込み(例外)CPU内部のエラーや特殊命令ゼロ除算、ページフォールト、スーパーバイザーコール

割り込みによってCPUはI/O待ちで止まらずに別のプロセスの処理を進められるため、システム全体の効率が大きく向上します。 この仕組みを活用した入出力方式が割り込み駆動型I/Oです。

DMA(Direct Memory Access)

DMAは、CPUを介さずにメモリとI/Oデバイスの間で直接データ転送を行う仕組みです。 大量のデータ転送(ディスクからメモリへの読み込みなど)の際にCPUの負荷を大幅に軽減できます。 転送が完了したらDMAコントローラがCPUに割り込みを発行して完了を通知します。

💻 ハードウェア・OSの問題をゲームで解いてみよう!
⚔️ IT王国の勇者でハードウェア問題に挑戦

6. 計算例題で確認

問1. クロック周波数が500MHz、平均CPI(1命令あたりのクロック数)が4のCPUの性能は何MIPSか。
答え: 125 MIPS。MIPS = クロック周波数(MHz) ÷ CPI = 500 ÷ 4 = 125。
問2. キャッシュメモリのアクセス時間が5ns、主記憶のアクセス時間が80ns、ヒット率が0.95のとき、実効アクセス時間は何nsか。
答え: 8.75ns。実効アクセス時間 = 0.95 × 5 + 0.05 × 80 = 4.75 + 4 = 8.75ns。ヒット率が高いとキャッシュに近い速度になることを確認しよう。
問3. 仮想記憶でページフォールトが多発し、CPUの使用率が極端に低下する現象を何というか。
答え: スラッシング。主記憶が不足してページの入れ替えが処理よりも多くなる状態。主記憶の増設などで対策する。
問4. タイムクォンタム3msのラウンドロビン方式で、プロセスAが処理時間7ms、プロセスBが処理時間4ms、同時到着した場合、Bが完了するのは開始から何ms後か。
答え: 7ms後。実行順はA(3ms)→B(3ms)→A(3ms)→B(1ms)→A(1ms)。Bは3+3+1=7ms後に完了する。
問5. CPUを介さずにメモリとI/Oデバイスの間で直接データ転送を行う仕組みを何というか。
答え: DMA(ダイレクト・メモリ・アクセス)。CPU の負荷を軽減し、大量データ転送を効率化する。
問6. ページ置換アルゴリズムのうち、最後に参照された時刻が最も古いページを置き換える方式はどれか。
答え: LRU(Least Recently Used)。キャッシュ管理でも広く使われる代表的なアルゴリズム。

7. よくある質問(FAQ)

Q. MIPS計算でつまずきます。何から押さえればいいですか?

A. まず「MIPS = クロック周波数(MHz) ÷ CPI」の公式を丸暗記してください。次に、問題文の単位(GHzならMHzに変換するなど)に気をつけながら数値を代入する練習をくり返せば解けるようになります。

Q. 実効アクセス時間の計算で「主記憶アクセス時間の定義」が問題によって違う気がします。

A. 正しい認識です。「キャッシュにない場合のみ主記憶にアクセス」か「常にキャッシュと主記憶の両方にアクセス」かで式が変わります。問題文の「キャッシュミス時のアクセス時間」や注釈をよく読んで判断するのが正解への近道です。

Q. メモリ階層が覚えられません。

A. 「レジスタ→キャッシュ(SRAM)→主記憶(DRAM)→補助記憶(SSD・HDD)」の順で、上ほど速く・小さく・高価、と一直線で覚えましょう。「速い→小さい→高い」の3セットがセットで来る、と覚えると整理しやすいです。

Q. 仮想記憶とページングの違いがよくわかりません。

A. 「仮想記憶」は補助記憶を使って大きなメモリ空間を作る仕組み全体の概念、「ページング」はその実現方法の一つです。ページングのほかにセグメンテーションという方式もありますが、試験ではページングの出題が多いです。

Q. スラッシングとページフォールトの違いは?

A. ページフォールトは「必要なページが主記憶にない」という単発の現象。スラッシングは「ページフォールトが多発しすぎてCPUが本来の処理をほとんどできない」という深刻な状態です。原因はページフォールトですが、スラッシングはその連鎖反応によるシステム全体の機能不全を指します。

Q. ラウンドロビンのタイムクォンタムはどう設定すればよいですか?

A. タイムクォンタムが短すぎるとコンテキストスイッチ(プロセスの切り替えオーバーヘッド)が増えてかえって非効率になり、長すぎるとFCFSに近くなり応答性が悪化します。試験では「適切なタイムクォンタムを設定すべき」という知識として押さえておけば十分です。

Q. 割り込みとDMAはどう使い分けられるのですか?

A. 割り込みは「イベント発生をCPUに知らせる」仕組み全般で、キーボード入力・タイマーなど少量のデータに使われます。DMAは「大量データ転送をCPUを使わずに行う」仕組みで、ディスク読み書きなどに使われます。DMAが完了したときもCPUへの割り込みで通知するので、両者は組み合わせて使われます。