スポンサーリンク

【応用情報技術者試験】ソフトウェアの基礎を固めよう!      ~第1章~基本ソフトウェア

近年のコンピュータは高性能なCPU、大容量のメモリ、高速通信が行えるネットワークカードなど、様々な高度な装置によって構成されています。これらの装置の性能を十分に発揮させるためには、しっかりとした管理が必要です。基本ソフトウェア(オペレーティングシステム:OS)は、コンピュータに備わるさなざまな装置を管理するソフトウェアです。

ネットワークカード(NIC:Network Interface Card)
PCやサーバーをLANやインターネットに接続するためのハードウェア部品です。

画像参照:https://pc-yougo.com/software/

オペレーティングシステム(OS)の役割と種類

OSとは、「オペレーティングシステム」の略で、コンピューターのハードウェアとアプリケーションを管理・制御し、ユーザーがコンピューターを使えるようにするための基本的なソフトウェアです。パソコンのWindows、スマートフォンのAndroidやiOS、macOSなど、様々な種類があります。 また、役割としては、CPU,メモリ,ハードディスク装置などのコンピュータ資源を管理することです。

OSの特徴を表す用語を下記に整理しています。

用語特徴
シングルタスク1回にひとつずつタスクを処理するプログラム管理方式のことです。
マルチタスク複数のタスクを同時に処理するプログラム管理方式のことです。
リアルタイムOS(RTOS)自動車、家電、医療機器など、決められた時間内に確実に処理を完了させる必要がある「組込みシステム」向けのOSです。
シングルユーザ「1人が使用できるライセンス形態」と「システムを1人でしか利用できないモード」の2つの意味があります。
マルチユーザ1台のコンピュータやシステムを、複数のユーザーがそれぞれ独立した環境で共有・利用できる仕組みのことです。
CUIキーボードで文字(コマンド)を入力してコンピューターを操作する方式です。
GUIマウスやタッチパネルなどのポインティングデバイスを使って、アイコンやボタンといったグラフィック要素を操作する方式です。

また、代表的なOSを下記に整理しています。

OSの名称説明
Unix系OS1969年に誕生したUNIXの仕様や思想を引き継いだオペレーティングシステム(OS)の総称です。主な特徴は、マルチユーザー・マルチタスク機能、シンプルな構造による安定性と軽快な動作、そしてCUIによる操作が基本です。
Windowsマイクロソフトが開発・販売するマルチタスク,マルチユーザ,GUIに対応したOSです。
MacOSAppleが開発・販売するMacシリーズのパソコン用のマルチタスク,マルチユーザ,GUIに対応したOSです。
AndroidGoogleが開発したオープンソースのモバイルオペレーティングシステムで、スマートフォンやタブレットなどに搭載されています。
iOSAppleが開発した、iPhoneやiPadなどのモバイルデバイス向けのOSです。

OSの3大機能

OSは、CPU,メモリ,ハードディスク装置といったコンピュータ資源を効率的に利用するための様々な機能を持っています。特に重要な機能を下記に整理します。

機能概要
タスク管理複数のタスク(プロセス)を効率的に実行するために、CPUやメモリなどのリソースを管理し、タスクの優先順位付けや実行状態の切り替えを行うことです。
記憶管理限られた主記憶装置を効率的に利用するために、プログラムやデータが使用するメモリ領域を確保し、解放することです。
ジョブ管理コンピューターが処理する一連の「ジョブ」(プログラムやバッチ処理などの仕事の単位)を、OSが自動で実行・監視・終了させる役割を担います。

タスクとジョブ

「ジョブ」は人間がコンピューターに依頼する仕事の単位であり、「タスク」はコンピューターが内部で処理する仕事の単位です。ジョブは、ファイルを開く、印刷データを生成する、プリンターに送信するといった複数のタスクに分割されて処理されます。OSは、複数のジョブやタスクを管理し、効率的に実行することで、マルチタスク(同時に複数の処理が動いているように見せる機能)を実現します。 

ジョブ

  • ユーザー視点の仕事の単位: 人間がコンピューターに依頼する1つのまとまった仕事です。
  • 具体例: 「文書を印刷する」という一連の作業全体が1つのジョブです。
  • 管理: OSはジョブ管理システムによって、ジョブの実行をスケジュールしたり、管理したりします。 

タスク

  • OS視点の処理単位: コンピューター内部で、ジョブを実行するためにOSが処理する最小単位です。
  • 具体例: 「ファイルを開く」「印刷データを生成する」「プリンターに送信する」など、ジョブを構成する個々の処理がタスクに当たります。
  • 実行状態: タスクは、「実行状態」「実行可能状態」「待ち状態」といった複数の状態を遷移しながら処理されます。
  • プロセス・スレッドとの関係: タスクは、実際にはより細かくOSに管理される「プロセス」や「スレッド」という単位で実行されます。文脈によっては、タスクとプロセスがほぼ同じ意味で使われることもあります。 

補足
プロセス:OSからメモリ領域等の割当てを受けて処理を実行しているプログラムのこと。
スレッド:プロセス内で並行して実行される最小の処理単位のこと。

画像参照:https://webpia.jp/thread_process/

マルチタスク

マルチタスクOSとは、複数のプログラムや処理(タスク)を、あたかも同時に実行しているかのように見せる機能を持つオペレーティングシステム(OS)です。単一のCPUコアでも、OSが非常に短い時間でタスクを切り替えることで、複数の作業を効率的に進められます。現代のPC用OSの多く(Windows、macOS、Linuxなど)が該当します。

仕組みと特徴

  • 同時に実行しているように見せる:実際には1つのCPUで順番にタスクを実行していますが、切り替えが非常に速いため、ユーザーには同時に動いているように見えます。
  • 効率的な作業:データ入力中にウェブを閲覧するなど、複数の作業を同時に行えるため、ユーザーの作業効率が向上します。
  • 現代のOSのほとんどがマルチタスクOS:Windows、macOS、Linux、iOS、Androidなど、現在一般的に使われているOSはすべてマルチタスクOSです。
  • シングルタスクOSとの対比:MS-DOSのような、複数の処理を同時に行えないOSはシングルタスクOSと呼ばれます。

方式

  • プリエンプティブ方式:OSがCPUの時間を管理し、タスクの優先度やCPU使用時間によって、実行するタスクを強制的に切り替えます。
    • 利点:1つのアプリケーションがフリーズしても、他のアプリケーションに影響を与えず、システム全体が停止するリスクが低い。
    • 現代のOSで主流:現在の多くのOSはこの方式を採用しています。
  • ノンプリエンプティブ方式:各タスクが自らOSに処理を渡すまで、CPUの使用を解放しません。
    • 利点:処理が単純になります。
    • 欠点:1つのタスクがCPUを使い続けると、他のタスクが待たされる、あるいはシステム全体がハングアップする可能性があります。
    • 歴史的OS:Windows 3.1や古いmacOSがこの方式でした。

ハングアップ
コンピュータやソフトウェアが処理不能になり、マウスやキーボード操作を一切受け付けなくなる「フリーズ」状態のこと。

カーネルとシェル

OSの核となる「カーネル」と、ユーザーが操作するための窓口となる「シェル」です。カーネルはハードウェアを直接制御し、メモリやCPUの管理などOSの中核機能を担います。シェルはユーザーからのコマンドを解釈し、カーネルに伝達し、実行結果をユーザーに分かりやすく表示する通訳のような役割を果たします。 

カーネル

  • 役割: OSの中核であり、ハードウェア(CPU、メモリ、ディスクなど)を直接制御・管理します。
  • 機能:
    • ハードウェアの抽象化: 異なるハードウェアを共通のインターフェースに置き換えて、ソフトウェアが特定の製品に依存しないようにします。
    • リソース管理: CPU、メモリ、ストレージ、ネットワークなどのリソースを管理します。
    • システムコール提供: ソフトウェアがカーネルの機能を利用するためのインターフェースを提供します。
  • 特徴: ユーザーが直接操作することはなく、OSが起動する際に最初に動作します。 

シェル

  • 役割: ユーザーとカーネルの間を取り持つインターフェースです。
  • 機能:
    • コマンド入力の受付: ユーザーがキーボードなどで入力したコマンドを待ち受けます。
    • コマンドの解釈・実行: 入力されたコマンドを解釈し、カーネルに処理を依頼します。
    • 結果の表示: カーネルから渡された処理結果を、ユーザーが理解できる形で画面に表示します。
  • 特徴: グラフィカルユーザーインターフェース(GUI)のものや、コマンドラインインターフェース(CUI)のものなど、様々な種類があります(例: Bash、Zsh)。シェルはカーネルの「殻(shell)」のように、カーネルを覆い隠し、安全に操作できるようにしています。 

よく出る問題

① プロセス管理(最頻出)

■典型問題

  • 状態遷移(実行・待ち・準備など)
  • コンテキストスイッチとは何か
  • プロセスとスレッドの違い

■超重要ポイント

  • 実行状態 → 入出力待ち → 準備状態 → 実行
  • コンテキストスイッチ=CPUの切替コスト

👉 午前でも午後でも出る

コンテキストスイッチ
CPUが現在実行中のタスク(プロセスやスレッド)を一時中断し、別のタスクに切り替えて実行を再開する一連の処理のこと。


② CPUスケジューリング

■よく出る方式

  • FCFS(First-Come, First-Served):先着順
  • SJF(Shortest Job First):短いジョブ優先
  • ラウンドロビン
  • 優先度スケジューリング

■典型問題

  • 平均待ち時間を計算
  • ターンアラウンドタイムを求める

👉 計算問題ほぼ確定で出る


③ メモリ管理

■頻出テーマ

  • 仮想記憶
  • ページング
  • セグメンテーション
  • ページ置換アルゴリズム

■よく出る問題

  • ページフォルト回数を求める(FIFO / LRU)
  • 仮想アドレス → 物理アドレス変換

👉 ここも計算系で狙われる


④ ファイルシステム

■出題内容

  • ディレクトリ構造(階層型)
  • ファイル割当方式(連続・リンク・インデックス)

■ポイント

  • どの方式が高速か / 断片化しやすいか

⑤ 入出力管理

■頻出

  • 割込み処理
  • DMA(ダイレクトメモリアクセス)

■典型問題

  • 割込みの流れを正しく並べる
  • CPU負荷軽減の仕組み

⑥ デッドロック

■超重要(ほぼ毎年)

  • 発生条件(4つ)
    1. 相互排他
    2. 保持と待ち
    3. 非奪取
    4. 循環待ち

■出題パターン

  • 条件のどれを崩せば防げるか
  • 資源割当グラフ

👉 「どれがデッドロック回避か」は鉄板


⑦ 排他制御

■よく出る

  • セマフォ
  • ミューテックス
  • クリティカルセクション

セマフォ
並列処理において複数のタスクが共有リソースを同時利用する際、アクセス権を制御して「競合」を防ぐ仕組みです。

ミューテックス
プログラムの並行処理において、複数のスレッドやプロセスが同時に共有リソース(データやデバイス)へアクセスするのを防ぎ、1つだけが占有できるようにする同期・排他制御の仕組みです。

クリティカルセクション
マルチスレッドやマルチタスクプログラムにおいて、共有リソース(変数、ファイル、デバイスなど)へ同時にアクセスすると不具合が生じるコード領域。

■典型問題

  • 排他制御しないと何が起きるか(競合状態)

⑧ 仮想化・OSの役割

■基本問題

  • OSの役割(資源管理・抽象化)
  • 仮想化技術(ハイパーバイザ)

🔥頻出ランキング(体感)

1位:プロセス管理 / スケジューリング
2位:メモリ管理(ページング)
3位:デッドロック
4位:排他制御
5位:ファイル・入出力


🎯対策のコツ(重要)

正直に言うと、全部を深くやる必要はないです。

点を取りに行くなら👇

  • 計算問題(スケジューリング・ページング)は必ず解けるようにする
  • デッドロック4条件は暗記
  • 用語問題(セマフォ・DMA)は意味を一言で説明できるように

コメント