【基本情報技術者試験】第6章 ソフトウェア完全解説|OS・ジョブ管理・タスク管理・仮想記憶・バックアップをゼロから学ぼう!
🎯 この記事を読み終わるころには、この問題が解けるようになります!
【例題】平成29年度 基本情報技術者試験 科目A
4つのジョブA~Dを次の条件で実行し印刷する。全ての印刷が完了するのは、ジョブを起動してから何秒後か。
条件: ①ジョブは一斉に起動し、多重度1で実行 ②優先順位A>B>C>D
③スプーリング機能が1台のプリンターで逐次印刷 ④実行時間と印刷時間:
A=実行50秒・印刷50秒、B=実行30秒・印刷40秒、C=実行20秒・印刷30秒、D=実行40秒・印刷20秒
ア. 100 イ. 160 ウ. 190 エ. 280
※ヒント:スプーリング=CPUと低速プリンターの間に補助記憶装置を挟む技術
前回はシステム構成と信頼性を学びました。今回は、コンピュータを動かす「ソフトウェア」の中核であるOSの仕組みを解説します。ジョブ管理・タスク管理・仮想記憶・バックアップ・開発ツールと幅広いテーマが出題されます!
目次
- OSとは|アプリとハードウェアの架け橋
- ジョブ管理|スプーリングとバッファ
- タスク管理|マルチタスクと状態遷移
- タスクスケジューリング|4つの方式
- 記憶管理|仮想記憶とページング
- ページの置き換えアルゴリズム(LRU・LFU・FIFO)
- スラッシング
- ファイルシステムと絶対パス・相対パス
- バックアップ(フル・差分・増分)
- 開発ツール(コンパイラ・リンカ・インタプリタ)
- オープンソースソフトウェア(OSS・Eclipse・コピーレフト)
- 過去問チャレンジ!
- この章のまとめ
1. OSとは|アプリとハードウェアの架け橋
▲ OSの構造と4つの機能
- OS (Operating System): アプリケーションソフトウェアとハードウェアの間で処理を仲介するソフトウェアです。
- 代表的なOS: Windows(最も普及)、macOS、iOS(iPhone)、Android(スマートフォン)などがあります。
- OSの4つの機能: ①ジョブ管理 ②タスク管理 ③記憶管理 ④データ管理 の4つが試験で重要です。
- アプリケーションソフトウェア: ユーザーに特定の機能を提供するソフトウェア(カメラ、メッセージなど)です。
2. ジョブ管理|スプーリングとバッファ
- ジョブ管理: ジョブの実行順序を管理する機能です。ジョブとは、ユーザーがコンピュータに依頼する仕事の単位(書類の印刷、ファイルの複製など)を指します。
- なぜ必要か: CPUとプリンターなどの処理速度が大幅に異なるため、プリンター印刷中に別のジョブをCPUに実行させるなど、CPUを有効活用するために必要です。
- スプーリング: CPUと低速の入出力装置の間のデータ転送を、高速の補助記憶装置に仲介させる技術です。代表例:印刷データをHDDに一時保存してプリンターに送ります。
- バッファ: 処理速度や転送速度の異なる2つの装置の差を補うためにデータを一時的に保存する記憶装置です。キャッシュメモリやディスクキャッシュもバッファの一種です。
📌 重要:試験頻出!
スプーリングとバッファは混同しやすいです!スプーリング=補助記憶装置を仲介する技術、バッファ=速度差を補う記憶装置、と区別しましょう。
3. タスク管理|マルチタスクと状態遷移
▲ タスクの状態遷移
- タスク(プロセス): OSがCPUに出す命令の単位です。ジョブをさらに細かく分割したものです。
- ジョブ vs タスク: ユーザーが出す命令=ジョブ、OSがCPUに出す命令=タスク です。
- マルチタスク: 複数のタスクを頻繁にすばやく切り替えることで、あたかも同時に実行されているかのように見せる技術です(実際には同時実行ではありません)。
- ディスパッチ: OSが実行可能状態のタスクを実行状態に移すこと(CPUの使用権を割り当てること)です。
-
タスクの3つの状態:
- ①実行可能状態: いつでもタスクを実行できる状態
- ②実行状態: タスクを実行している状態
- ③待ち状態: タスクの入出力処理の完了を待っている状態
-
プリエンプティブ vs ノンプリエンプティブ:
- プリエンプティブ=OSがCPU使用権を管理します。優先度高いタスクが発生したら横取りして切り替えます(現在主流)。
- ノンプリエンプティブ=タスク自身がCPU使用権を管理します。タスクが完了するまで切り替えません。
4. タスクスケジューリング|4つの方式
| 方式 | 説明 |
|---|---|
| 到着順方式 | 先に到着したタスクを先に実行(FIFO) |
| 処理時間順方式 | 処理時間の短いタスクを先に実行 |
| 優先度順方式(プリエンプティブ) | 優先度高いタスクが発生したら実行中のタスクを中断して切り替える |
| 優先度順方式(ノンプリエンプティブ) | 優先度高いタスクが発生しても現在のタスクが終了するまで待つ |
| ラウンドロビン方式 | タスクを一定時間ごとに切り替えて実行(均等にCPU時間を割り当て) |
📝 ポイント
ラウンドロビン=各タスクに均等にCPU時間を割り当てる方式。試験頻出です!
5. 記憶管理|仮想記憶とページング
▲ 仮想記憶・ページング方式
- 仮想記憶管理: 補助記憶装置の一部をあたかも主記憶装置であるかのように扱う方式です。プログラムが主記憶の容量を超える場合でも実行可能になります。
- 仮想記憶 vs 実記憶: 仮想記憶=OSが作る論理的な記憶領域、実記憶=主記憶装置上の物理的な記憶領域 です。
- ページング方式: 仮想記憶と実記憶をページと呼ぶ固定長の領域に分割して管理する方式です(試験頻出!)。
- ページテーブル: 仮想アドレスと物理アドレスを対応付ける表です。
- CPUのページアクセス手順: ①仮想アドレスへアクセス → ②ページテーブルで物理アドレスを参照 → ③実記憶の実体にアクセス します。
- ページフォールト: 実記憶に存在しないページへのアクセスによって起こる割込みです。
- ページイン: 必要なページを補助記憶から実記憶へ読み込むことです。
- ページアウト: 実記憶から不要なページを補助記憶へ書き出すことです。
6. ページの置き換えアルゴリズム(LRU・LFU・FIFO)
| アルゴリズム | 説明 | 置き換え対象 |
|---|---|---|
| LRU (Least Recently Used) | 最後に参照されてから最も長い時間が経過したページを置き換える | 最も最近使われていないページ(試験最頻出) |
| LFU (Least Frequently Used) | 参照頻度が最も少ないページを置き換える | 参照回数が最も少ないページ |
| FIFO (First In First Out) | 読み込んでから最も長い時間が経過したページを置き換える | 最も早く読み込まれたページ |
📝 具体例
ページA(読込0:00、最終参照0:05、参照回数9)、ページB(0:02、0:03、4)、ページC(0:03、0:07、2)の場合:
- LRU → ページB(最後の参照が最も古い 0:03)
- LFU → ページC(参照回数が最も少ない 2)
- FIFO → ページA(最も先に読み込まれた 0:00)
7. スラッシング
- スラッシング: 仮想記憶管理において、割り当てられる実記憶の容量が小さいときに、ページアウトとページインが頻繁に起こる現象です。
- 原因: 実記憶の容量に比べてデータが大きく、空きページがなくなるため発生します。
- 影響: コンピュータ全体のスループット(処理能力)が低下します。
📌 重要:試験頻出!
スラッシングが発生するとシステムのパフォーマンスが著しく低下します!解決策は実記憶(RAM)を増やすことです。
8. ファイルシステムと絶対パス・相対パス
- ファイルシステム: データを「ファイル」として管理しやすくする機能です。
- ディレクトリ(フォルダ): ファイルを格納する場所です。
- ツリー構造(木構造): ファイルシステムはファイルとディレクトリをツリー構造で管理します。
| 用語 | 説明 |
|---|---|
| ルートディレクトリ | 階層構造の最上位のディレクトリ |
| カレントディレクトリ | ユーザーが現在作業しているディレクトリ |
📝 パスの4つのルール
ルール1: ディレクトリやファイルは「/」(スラッシュ)で区切る
ルール2: パスが「/」で始まる場合は左端にルートディレクトリが省略されている(絶対パス)
ルール3: カレントディレクトリは「.」(ドット)で表す(相対パス)
ルール4: 1階層上のディレクトリは「..」(ドット2つ)で表す
相対パス(カレントが画像フォルダ): ./高解像度/みかん.jpg
1つ上の階層へ: ../音楽/どんぐりころころ.mp3
📌 重要:試験頻出!
絶対パス=「/」から始まる(ルートから指定)、相対パス=「./」か「../」から始まる(現在の場所から指定)。試験では必ず出題されます!
9. バックアップ(フル・差分・増分)
▲ バックアップの3種類
| 種類 | バックアップ内容 | バックアップ時間 | 復旧時間 | 復旧に必要なデータ |
|---|---|---|---|---|
| フルバックアップ | 常にすべてのデータをバックアップ | 長い | 短い | フルのみ1つ |
| 差分バックアップ | フルバックアップ以降の追加分のみ | 中程度 | 中程度 | フル+差分の2つ |
| 増分バックアップ | 前回のバックアップからの追加分のみ | 短い | 長い | フル+複数の増分 |
📌 重要:試験頻出!
フルが最も復旧が簡単・時間がかかります。増分は最もバックアップが速い・復旧が複雑です。試験頻出です!
その他の用語: レプリケーション=リアルタイムでデータを別コンピュータに複製して同期、アーカイブ=長期間保存のためにデータをコピー することです。
10. 開発ツール(コンパイラ・リンカ・インタプリタ)
▲ 開発ツールとコンパイルの流れ
- プログラムが実行されるまでの流れ: ソースコード → コンパイラ → 目的モジュール → リンカ → ロードモジュール → ローダ → 実行
| 開発ツール | 説明 |
|---|---|
| コンパイラ | ソースコード全体を一括で機械語に変換。最適化コンパイラ=実行効率を高めたオブジェクトコードを生成 |
| リンカ | 複数の目的モジュールとライブラリを結合して1つのロードモジュールを生成(試験頻出) |
| ローダ | ロードモジュールを主記憶装置にロードして実行する |
| デバッガ | プログラムの実行を監視してバグを検出・修正するツール |
| インタプリタ | ソースコードを1文ずつ解釈しながら実行。コンパイルなしで実行可能(メリット)が、実行効率が低い(デメリット) |
| テストツール | 説明 |
|---|---|
| 静的テストツール | プログラムを実行せずにソースコードを解析してエラーを検出(ソースコード解析ツール) |
| 動的テストツール | プログラムを実行してテスト(テストカバレージツール等) |
📌 重要:試験頻出!
リンカ=「複数のモジュールを結合してロードモジュールを生成する」がキーワード!インタプリタ=「1文ずつ解釈して実行」がキーワードです!
11. オープンソースソフトウェア(OSS・Eclipse・コピーレフト)
- OSS (Open Source Software): ソースコードが公開されており、誰でも自由に閲覧・変更・再配布できるソフトウェアです。
- Eclipse: OSSの代表的な統合開発環境 (IDE: Integrated Development Environment) です。Java言語の開発などで広く利用され、試験でよく出題されます。
| ソフトウェアの種類 | 説明 |
|---|---|
| 商用ソフトウェア | 企業が有料販売。ソースコードは非公開 |
| OSS (オープンソースソフトウェア) | 誰でも自由に閲覧・改変・再配布可能 |
| パブリックドメインソフトウェア | 著作権が放棄されたソフトウェア |
- コピーレフト: プログラムの著作権は作者が保持するが、誰もがプログラムの複製・改変・再配布ができ、2次著作物(派生物)にもオリジナルと同じ配布条件を適用する考え方です。
📌 重要:試験頻出!
コピーレフトのポイント=「2次著作物にも同じ条件を適用する(改変して再配布する場合はソースコードも公開しなければならない)」です。
12. 過去問チャレンジ!
🎯 記事冒頭の例題に、もう一度チャレンジ!
【例題・再掲】平成29年度 基本情報技術者試験 科目A
4つのジョブA~Dを次の条件で実行し印刷する。全ての印刷が完了するのは、ジョブを起動してから何秒後か。
条件: ①ジョブは一斉に起動し、多重度1で実行 ②優先順位A>B>C>D
③スプーリング機能が1台のプリンターで逐次印刷 ④実行時間と印刷時間:
A=実行50秒・印刷50秒、B=実行30秒・印刷40秒、C=実行20秒・印刷30秒、D=実行40秒・印刷20秒
ア. 100 イ. 160 ウ. 190 エ. 280
✅ 解答・完全解説
正解:ウ(190秒後)
解説:
優先順位A>B>C>DでCPUが実行します。スプーリングにより、プリンターは実行完了後に順次印刷を行います。
- CPU処理: A(0-50秒) → B(50-80秒) → C(80-100秒) → D(100-140秒)
- 印刷: A(50-100秒) → B(100-140秒) → C(140-170秒) → D(170-190秒)
したがって、全ての印刷が完了するのは 190秒後 となります。よって正解は ウ です。
【過去問 その2】ページング問題(平成29年度)
ページング方式の説明として適切なものはどれか。
ア. 仮想記憶空間と実記憶空間をそれぞれ固定長の領域に区切り、対応づけて管理する方式
イ. 主記憶装置の異なった領域で実行できるように、プログラムを再配置する方式
ウ. 主記憶装置を、同時に並行して読み書き可能な複数の領域に分ける方式
エ. 補助記憶装置に、複数のレコードをまとめて読み書きする方式
💡 解答・解説
正解:ア
仮想記憶と実記憶をそれぞれ固定長のページに分割して管理する方式がページング方式です。
【過去問 その3】バックアップ問題(令和元年度)
バックアップ方式の説明のうち、増分バックアップはどれか。
ア. 最初のバックアップの後、ファイル更新情報があるファイルだけをバックアップし、更新情報は変更しない
イ. 全バックアップ。最初のバックアップの後、すべてのファイルをバックアップし、更新情報はリセット
ウ. 直前のバックアップの後、ファイル更新情報があるファイルだけをバックアップし、更新情報はリセット
エ. 直前のバックアップの後、全ファイルをバックアップし、更新情報は変更しない
💡 解答・解説
正解:ウ
増分バックアップは「直前のバックアップからの追加分のみ」をバックアップし、ファイル更新情報をリセットします。
13. この章のまとめ
📌 ソフトウェアのまとめ
- OS = アプリとハードウェアの架け橋。4機能:ジョブ管理・タスク管理・記憶管理・データ管理
- ジョブ = ユーザーの仕事単位、タスク = OSがCPUに出す命令単位
- スプーリング = CPUと低速入出力装置の間に高速補助記憶装置を仲介させる技術
- バッファ = 2つの装置の速度差を補う記憶装置
- マルチタスク = 複数のタスクを素早く切り替えて擬似的に同時実行
- ディスパッチ = 実行可能状態のタスクをCPUに割り当てて実行状態に移すこと
- タスク状態: 実行可能状態 ⇔ 実行状態 ⇔ 待ち状態
- ラウンドロビン = 各タスクに均等にCPU時間を割り当てる
- ページング = 仮想記憶と実記憶を固定長のページに分割して管理
- LRU = 最後に参照した時刻が最も古いページを置き換える(試験最頻出)
- スラッシング = ページイン・アウトが頻発してパフォーマンス低下
- 絶対パス = 「/」から始まる(ルートから指定)、相対パス = 「.」または「..」から始まる
- フルバックアップ = 復旧簡単・時間長、差分 = フル+差分の2つ必要、増分 = 最速・復旧複雑
- リンカ = 複数の目的モジュールを結合してロードモジュールを生成
- インタプリタ = 1文ずつ解釈して実行(コンパイラより効率低い)
- OSS = ソースコード公開、Eclipse = OSSの代表的統合開発環境
- コピーレフト = 2次著作物にも同じ配布条件を適用
学習難易度:★★★★★
覚える用語が多い章ですが、ページングやパス、バックアップの種類など出題パターンが決まっているものが多いので、過去問を繰り返し解きましょう!
この記事について
基本情報技術者試験の合格を目指す方のために、参考書の内容を初心者向けにわかりやすく噛み砕いて解説しています。ITの基礎をしっかり固めて、一緒に合格を目指しましょう!
