用語集

カーネルとは何か

  このページはDeepLによって自動的に翻訳されました。 Switch to English

カーネルはオペレーティングシステムの核であり、アプリケーションとハードウェアの間で動作する部分です。コンピューターのリソース(CPU、メモリ、ストレージ、デバイス)を管理し、ソフトウェアがそれらを利用するための安全で一貫した方法を提供します。衝突なくすべてを円滑に動かす交通整理係であり、翻訳者であると考えることができます。

Kernel_Layout.svg

カーネルは実際に何をするのか?

大まかに言えば、カーネルは:

  • スケジューラは動作する。どのプログラムがいつCPU時間を取得するかを決定する。
  • メモリを管理します。各アプリのデータを分離し、必要に応じてRAMを割り当てます。
  • デバイスとファイルを処理します。GPU、SSD、ネットワークカード、ファイルシステムのドライバーと連携します。
  • I/Oを仲介します。アプリに代わってファイルやネットワークデータの読み書きを行います。
  • 安全性を確保します。 ユーザーモード(アプリ)とカーネルモード(OSの中核)を分離し、欠陥のあるアプリがシステム全体をクラッシュさせることを防ぎます。
image-406

カーネルはオペレーティングシステムと同じものですか?

そうとは言い切れない。「オペレーティングシステム」には通常、カーネルに加えてユーザースペースのツールやサービス(シェル、ライブラリ、デスクトップ環境、バックグラウンドサービスなど)が含まれる。日常会話ではこれらの用語が混同されがちだが、厳密に言えばカーネルは他のすべてが依存する特権的な中核に過ぎない。

アプリはどのようにカーネルと「通信」するのか?

アプリがファイルを保存したりネットワークパケットを送信したりする必要がある場合、システムコールを発行します。これはユーザーモードからカーネルモードへ移行する制御された要求です。カーネルは権限を確認し、要求を適切なサブシステムやドライバへルーティングし、結果をアプリへ返します。この境界により、アプリ同士やハードウェアの危険な部分からアプリが保護されます。

infra-sync

カーネルには種類があるのでしょうか?

はい。いくつかの大まかな設計が議論されているのがわかるでしょう:

  • モノリシックカーネルは、コアサービスと多数のドライバをまとめて提供します。(例:Linuxカーネル)
  • マイクロカーネルは中核を小さく保ち、より多くのサービスをカーネル外部に押し出して分離を図る。
  • ハイブリッドまたはモジュラー型アプローチは、実用的なシステムにおいて、パフォーマンスや安全性の観点からコンポーネントをカーネル境界内へ取り込んだり、境界外へ引き出したりする手法を組み合わせたものである。

これらすべては同じ目標を目指している:ハードウェアの信頼性の高い高速制御である。(例えばAppleのXNUは、MachマイクロカーネルとBSDレイヤーを組み合わせている。Windowsは階層化されたカーネルアーキテクチャを文書化している。)

「カーネル」を直接更新することはあるのか?

プラットフォームによって異なります:

  • Windows/macOS:カーネルの更新は通常のOS更新の一部として提供されます。
  • Linux および多くのサーバー/デバイス:カーネルは別個のパッケージであり、ディストリビューションまたはベンダー経由で更新できます。長期サポート (LTS) カーネルは、新機能と引き換えに安定性を提供します。

更新によりハードウェアサポート、パフォーマンス調整、セキュリティ修正が提供されますが、本番システムでは通常、事前にテストを行います。

起動時には何が起こるのか?

非常に簡略化した説明:ファームウェア/UEFIが最初に実行され、ブートローダーがカーネルをメモリにロードします。カーネルはハードウェアとドライバを初期化し、ストレージをマウントした後、残りのシステムを起動する最初のユーザ空間プロセスを起動します。その後、カーネルはバックグラウンドで継続的にタスクをスケジューリングし、I/O処理を管理します。

私の携帯電話にはカーネルがありますか?

もちろんです。Androidスマートフォン、ゲーム機、ルーター、スマートテレビのほとんどは、内部でカーネルを備えた何らかのOSを実行しています。この概念はデスクトップやノートパソコンだけに限ったものではありません。

android kernel

なぜクラッシュは「カーネルパニック」(または「ブルースクリーン」)と呼ばれるのか?

カーネル内部で重大な問題(致命的なドライバエラーなど)が発生した場合、OSはデータ破損のリスクを避けるため、動作を停止することが多い。Unix系システムではカーネルパニックが発生し、Windowsではストップエラー(「ブルースクリーン」)が表示される。劇的な現象だが、これはファイルを保護するための最終的な安全対策である。

簡単なまとめ

  • カーネルは、CPU、メモリ、デバイス、およびI/Oを管理するOSの特権的な中核部分である。
  • アプリケーションは、ユーザーモードとカーネルモードの境界を越えたシステムコールを介してこれとやり取りする。
  • 異なるカーネル設計(モノリシック、マイクロカーネル、ハイブリッド)、パフォーマンス、分離性、保守性のバランスを取る。

関連用語

  • ユーザー空間 / カーネル空間:通常のアプリケーションとカーネルがそれぞれ実行される領域。
  • システムコール (syscall):アプリケーションからカーネルサービスへの制御されたエントリポイント。
  • ドライバ:特定のデバイスを操作する方法を知っているカーネルまたはユーザ空間のコンポーネント。
  • スケジューラ:次に実行するスレッドを決定するカーネルコンポーネント。
  • 仮想メモリ:各プロセスに独自のアドレス空間を提供するカーネル機能。
  • ブートローダー:起動時にカーネルをメモリにロードするプログラム。
  • カーネルパニック/ストップエラー:システムを停止させて損傷を防ぐ致命的なカーネルモード障害。

関連コンテンツ