FE EXAM

OSの役割と種類(カーネル・シェル・システムコール)

OS がアプリとハードウェアの間でどう動いているか、4つの層とシステムコールの流れで可視化します。

OS LAYER SIMULATOR
アプリ
シェル
カーネル
ハードウェア
現在のシナリオ
ファイルを開く(read システムコール)
テキストエディタが「ファイルを読み込む」操作をした際、OSの各層がどう連携するかを追います。
ステップ数
6
シナリオ
ステップ1 / 6
STEP 1/6アプリがユーザー操作を受け取るエディタ上でユーザーが「ファイル → 開く」を選択。アプリは「このファイルを読みたい」と決定するが、ディスクには直接アクセスできない(ユーザーモードなので)。

層をクリックすると詳細を表示します。点線はユーザーモード/カーネルモードの境界です。

解説

📌
OSとは — 仲介役のソフトウェア

アプリケーションOS(カーネル+シェル)ハードウェア

OS(Operating System)は、アプリケーションとハードウェアの間に立つ仲介役のソフトウェアです。ハードウェアの細かい違いをアプリから隠したり、複数のアプリが同時にCPUやメモリを使えるよう調整したりします。

身近な例えだと、OSは「マンションの管理人」に似ています。住人(アプリ)が共用設備(ハードウェア)を直接いじることはできず、必ず管理人を通してお願いを伝える仕組みです。これにより、1人の住人が他人の部屋に勝手に入ったり、設備を壊したりするのを防いでいます。

上のツールで「ファイルを開く」シナリオを ▶ 自動再生すると、アプリがOSを介してハードウェアにアクセスする一連の流れを動きで確認できます。

📌
OSの5大機能

プロセス管理メモリ管理ファイル管理入出力管理ユーザー管理

OS(特にカーネル)には5つの基本的な役割があります。いずれも基本となる重要な機能です。


プロセス管理:プログラムを実行単位(プロセス)として生成・終了・切り替え。複数アプリの同時実行を実現
メモリ管理:各プロセスにメモリを割り当て、空いたら回収。仮想メモリでディスクを延長として使う
ファイル管理:ディスク上のデータをファイル・ディレクトリ構造で扱う。アクセス権限の管理もここ
入出力管理:キーボード・ディスプレイ・ネットワークなどとのやり取りをドライバ経由で制御
ユーザー管理:誰がログイン中か、どのファイルにアクセスできるかを管理(マルチユーザー環境の権限制御)

上のツールで「プログラムを起動」シナリオのステップ3〜4を見ると、プロセス管理とメモリ管理が連携して新しいプログラムが立ち上がる様子が確認できます。

📌
カーネルとシェル — OSの中核と窓口

ユーザーシェル(窓口)↓ 命令カーネル(中核)

OS は内部的に大きく 「カーネル」「シェル」の2つに分かれます。


カーネル:OSの中核。プロセス・メモリ・ファイル・入出力をすべて管理する。特権モードで動き、ハードウェアを直接操作できる
シェル:ユーザーとカーネルの間の窓口。ユーザーが入力したコマンドや GUI 操作を、カーネルへの依頼(システムコール)に変換する

シェルにはCLI シェル(bash / zsh / PowerShell など、文字でやり取り)とGUI シェル(Windows Explorer / Finder など、画面で操作)があります。どちらもカーネルの機能を呼び出す「窓口」という点では同じです。

📌
システムコール — カーネルへの公式な「お願い窓口」

アプリ(ユーザーモード)read() open()カーネル(特権モード)

アプリはハードウェアを直接操作できません。これは安全性のため、わざと制限されています。代わりにシステムコールという公式な「お願い窓口」を経由してカーネルに依頼します。

代表的なシステムコール(Linux 系)の例:
open() / read() / write():ファイルを開く・読む・書く
fork() / exec():新しいプロセスを作成・起動
mmap():メモリ領域の確保
socket() / connect():ネットワーク通信

システムコールが発行されると、CPU はユーザーモードからカーネルモードへ切り替わる(コンテキストスイッチ)。処理が終わるとまたユーザーモードに戻ります。この切り替えにはコストがかかるため、頻繁に呼ぶと性能が落ちます。

📌
ユーザーモードとカーネルモード

ユーザーモード制限ありアプリ・シェルカーネルモード全権限カーネル

CPU には大きく2つの動作モードがあります。OS はこれを使い分けて「アプリの暴走がシステム全体に影響しないように」守っています。


ユーザーモード:制限つき。ハードウェアに直接アクセスできない。アプリやシェルはここで動く
カーネルモード(特権モード):全権限。ハードウェアを直接操作できる。カーネルだけがここで動ける

もしアプリが直接ハードウェアを操作できたら、バグや悪意のあるアプリが他のアプリのメモリを覗いたり、ディスクを破壊したりできてしまいます。このモード分離が、現代のOSの安全性の根幹です。

📌
OSの種類 — 汎用OS と リアルタイムOS

カテゴリ代表例特徴主な用途
汎用OSWindows
Windows 10 / Windows 11 / Windows Server
GUI中心オフィスPC、家庭用PC、ゲームPC
汎用OSLinux
Ubuntu / CentOS / Debian / Red Hat
オープンソースWebサーバー、組込み機器、スパコン、Android のベース
汎用OSmacOS
macOS Sonoma / macOS Ventura
UNIX系(BSDベース)Apple 製 Mac 専用、開発者・デザイナーに人気
モバイルOSiOS / Android
iOS / Android / iPadOS
タッチ操作前提スマートフォン、タブレット
リアルタイムOSリアルタイムOS(RTOS)
VxWorks / TRON / μITRON / FreeRTOS
応答時間を保証車載システム、ロケット制御、医療機器、家電

OS は用途によって大きく 「汎用OS」「リアルタイムOS(RTOS)」に分かれます。


汎用OS:多用途。スループット(単位時間あたりの処理量)を重視。Windows / Linux / macOS が代表
リアルタイムOS応答時間を保証する。車のエアバッグ、医療機器、ロケット制御など「遅れたら大変なこと」になる用途で使う

「Linux はオープンソース」「リアルタイムOSは応答時間保証」など、特徴と種類を結びつけて整理しておくと分かりやすくなります。Android のベースが Linux カーネルである点も押さえておきましょう。

📌
ミドルウェア — OS とアプリの間にある共通基盤

アプリケーションミドルウェア(DB・Webサーバー)OS(カーネル+シェル)ハードウェア

実際のシステムでは OS とアプリの間にミドルウェアという中間ソフトが入ることがよくあります。

ミドルウェアの代表例:
データベース管理システム(DBMS):MySQL / PostgreSQL / Oracle
Webサーバー:Apache / nginx
アプリケーションサーバー:Tomcat / WebLogic

これらは多くのアプリが共通して必要とする機能(データ永続化・HTTP 通信など)を提供することで、各アプリが同じ機能をゼロから作らずに済むようにしています。OS の機能ではないがアプリでもない、中間的な存在と覚えておきましょう。

📌
なぜ OS に資源管理を任せるのか

OS なしApp AApp BCPU 取り合い!OS ありApp AApp BOS が調停公平に CPU 割り当て

もし OS がなかったらどうなるか、想像してみましょう。複数のアプリが好き勝手に CPU やメモリを使おうとすると、取り合いが起きてシステム全体が壊れます。OS はこれを防ぐ「調停役」として生まれた仕組みです。

OS が資源管理(=CPU・メモリ・ディスクなどを誰にどれだけ使わせるかを決める仕事)を引き受けることで、次の3つが実現します。
公平性:どのアプリも CPU を独占せず、順番に使える
安全性:あるアプリが他のアプリのメモリを勝手に読み書きできない
利便性:アプリ開発者がハードウェアの細かい仕様を知らなくてよい

身近な例で考えると、複数の乗客が同じバスに乗るイメージです。乗客(アプリ)が皆バラバラに運転しようとしたら大混乱ですが、運転手(OS)が1人乗って全員を安全に目的地まで運びます。OS の存在意義は「みんなが同じ資源を安全に共有できるようにすること」と言えます。

練習問題

🎯
基本情報技術者 練習問題

Q1.OS の機能として適切でないものはどれか。
A.プロセス管理
B.メモリ管理
C.文書の自動翻訳
D.ファイル管理
Q2.システムコールの説明として正しいものはどれか。
A.OS がアプリを定期的に呼び出して状態を確認する仕組み
B.アプリがカーネルの機能を利用するためのインターフェース
C.ハードウェアが OS に異常を通知する仕組み
D.シェルがコマンドを解釈する仕組み
Q3.カーネルモード(特権モード)でしかできない処理はどれか。
A.計算結果を変数に代入する
B.画面に文字を表示する
C.ハードウェアを直接操作する
D.ファイル名を変数に保存する

関連コンテンツ