Windowsの「カーネル」とは何か? いまさら聞けないOSの“基本の基”:IT担当者のためのカーネル入門【前編】
Windowsの中核機能を担う「カーネル」について理解することは、IT担当者にとっての基本だ。押さえておくべきカーネルの役割や主要機能をおさらいしよう。
OSには「カーネル」と呼ばれるソフトウェアが組み込まれており、各種操作やアプリケーションが依存する中核的な命令セットとして機能する。その本質的な役割を理解しておくことは、IT担当者にとって不可欠だ。
特に近年、Microsoftは同社のOS「Windows」のカーネルに幾つかの重要な変更を加えており、IT担当者は経験の有無にかかわらず新たな知識を求められる場面が増えている。本稿では、まずWindowsカーネルの役割や主要機能などの基本をおさらいしよう。
いまさら聞けない「Windowsカーネル」の役割と主要機能
併せて読みたいお薦め記事
Windows OSについてもっと詳しく
カーネルはOSの中核を担い、以下のような主要な機能を実装している。
デバイスの制御
カーネルは各種デバイスドライバ(デバイスごとの制御ソフトウェア)と通信し、ハードウェアとOSとの橋渡し約を担う。これにより、プリンタ、ネットワークインタフェース、USBメモリ、ストレージデバイスなどとOSの連携が可能になる。
メモリの管理
OSにとってメモリ管理は極めて重要かつ複雑な処理だ。プロセス(プログラムの実行単位)を動作させるためにはメモリを割り当てる必要がある。物理メモリ(RAM)はデータの一時記憶領域として使われ、その管理はOSが担う。必要に応じて、ストレージを一時的な記憶領域(スワップ領域)としてメモリ代わりに利用することもある。
ただし、メモリは有限であり、管理が非効率だとメモリフットプリント(メモリの使用量)が増加し、システム性能に悪影響を及ぼす可能性がある。カーネルは、アプリケーションやプロセスへのメモリ割り当てとアクセスを制御する「交通整理役」として機能し、アプリケーションのクラッシュやOSの不安定化を引き起こすメモリエラーを回避するよう設計されている。
スレッドおよびプロセスの管理
「スレッド」はCPUリソースの処理単位であり、カーネルがそのスケジューリングと管理を担う。複数のスレッドの並行処理が可能な「マルチスレッドアプリケーション」では、カーネルが各スレッドの実行順序やリソース配分を適切に管理することで処理効率を高め、競合やデッドロック(処理の行き詰まり)などのエラーを防いでいる。
ファイルシステムの管理
ファイルシステムの管理機能はエンドユーザーにとって最も身近な部分で、Windowsでは「エクスプローラー」や「ファイルマネージャー」として表示される。ファイルシステムは、ストレージのファイルの保存や取得、管理を担う。セキュリティ機能と連携して、ファイルやフォルダごとにセキュリティトークンを割り当て、アクセス制御を実施する。
セキュリティとポリシーの適用
カーネルの重要な役割の一つが、OS全体のセキュリティと安定性の確保だ。ファイルアクセスの制御に加えて、セキュリティポリシーの適用、マルウェアなど外部攻撃からの防御も担う。動作不良を引き起こすアプリケーションやドライバからOSを保護し、意図的な不正および偶発的なエラーからシステムを守る役割を果たす。
カーネルとアプリケーションの違いから見えるWindowsの内部構造
IT担当者は、「カーネル」と「カーネルの機能を利用するアプリケーション」を混同しないよう注意が必要だ。アプリケーションはさまざまなプログラミング言語で記述され、カーネルとは異なるレイヤーに位置付けられる。
例えば「PowerShell」は、MicrosoftがWindows向けに開発したコマンドラインツールおよびスクリプト言語で、今ではWindowsの中核的な要素となっている。従来のCLI(コマンドラインインタフェース)を進化させたもので、データと処理(メソッド)をまとめた「オブジェクト」をプログラムの基本要素とする「オブジェクト指向」の考え方を取り入れた管理フレームワーク(管理タスクの自動化やスクリプト処理のための土台)として設計されている。
PowerShellはWindowsだけでなく、「macOS」「Linux」でも動作する。「Microsoft Azure」「Amazon Web Service」「Google Cloud」などのクラウドサービスや、メールサービス「Exchange Online」とも連携可能だ。このように、アプリケーション層の技術はクロスプラットフォーム対応が進んでおり、その一例としてPowerShellは極めて象徴的な存在だ。
こうした流れの中で、Microsoftは以下のようなアプリケーション開発向けの技術を開発してきた。
- .NET
- 「Windows NT」以降で動作するように設計されたWindowsアプリケーションの開発フレームワーク。初期のPowerShellは「.NET Framework」を基盤として開発され、現在は後継である.NET(.NET Core/.NET 5以降)で動作している。
- Windows Runtime API
- 「JavaScript」「HTML5」「CSS」などのWeb技術を活用したクロスプラットフォームアプリケーションの開発を可能にする。
次回は、Microsoftがカーネルにプログラミング言語「Rust」を導入したことと、その理由を解説する。
TechTarget発 先取りITトレンド
米国Informa TechTargetの豊富な記事の中から、最新技術解説や注目分野の製品比較、海外企業のIT製品導入事例などを厳選してお届けします。
Copyright © ITmedia, Inc. All Rights Reserved.