本記事では、プログラミング初心者向けに向けて「カーネルとは何か」について、分かりやすく解説いたします!
なお、本記事を執筆したのは、プログラミングスクール「アキバ・テックドリーム・アカデミー」(以下、テクドリ)の運営企業であるメディアファイブ株式会社(以下、メディアファイブ)に所属している現役のITエンジニア職の社員です。
カーネルとは
カーネル(kernel)とは、コンピュータのオペレーティングシステム(OS)の中心核となるソフトウェアです。
リソースの効率的な利用やハードウェアとソフトウェアの仲介など、コンピュータシステムのなかでも重要なタスクを担っています。
カーネルの機能
カーネルの主な機能として、下記が挙げられます。
プロセス管理
プロセスとはコンピュータで実行されているプログラムの単位を指します。
カーネルは、いつ・どれだけの期間、どのプロセスがCPUを使用するかを制御しています。
これにより、プロセス間でのCPUの取り合いを防ぐことができます。
メモリへのアクセス管理
メモリとはデータを一時的に記録するための部品です。
カーネルは、コンピュータで処理を実行するにあたって、プロセスごとのメモリの割り当てや不要となったメモリの解放を行っています。
これにより、効率的にメモリを使用することができます。
周辺機器のデバイス管理
カーネルは、デバイスドライバを提供しています。
デバイスドライバとは、ハードウェアデバイス(マウスやキーボードなど)をコントロールするソフトウェアで、カーネルを介してアプリケーションとのやり取りを行います。
ファイル管理(ファイルシステム)
カーネルはファイル単位でストレージデバイス(以下、ディスク)を管理しています。
ディスクはブロック番号ベースでデータの読み書きを行っていますが、どのデータがファイルのどの部分にあたるのかは分かりません。
カーネルは、ストレージのどこに何のデータがあるのかを記録し、アプリケーションからの要求に応じて、ディスクに読み書きしたいデータの位置情報を渡します。
これにより、効率的にデータを取得、保存することができます。
ユーザーモードとカーネルモード
CPUはユーザーモードとカーネルモードという2つのモードで動いています。
実行するプログラムによってモードを切り替えることで、システムの安定性とセキュリティを保っています。
ユーザーモード
アプリケーションは基本的にユーザーモードで動作します。
OSの核心部分へのアクセスが制限されているため、アプリケーションが重要なOSのデータへ悪影響を及ぼすことを防ぐことができます。
カーネルモード
前述のカーネルの機能はカーネルモードで動作します。
アクセスに制限がなく、システムに影響を及ぼす処理であってもすべての命令を実行することができてしまいます。
そのため、カーネルモードのソフトウェア開発は慎重に行う必要があります。
シェルとの関わり
PCやスマートフォン、タブレットといった機器は、ほぼ例外なくOSによって動いています。
ユーザーの要求をOSで実行するにあたって、コマンドの実行をカーネルへ伝達する役割を担っているのがシェル(shell)です。
このシェルもコンピュータシステムを理解するうえで重要なプログラムなので押さえておきましょう。
まとめ

カーネルとは、コンピュータのオペレーティングシステム(OS)の中心核となるソフトウェアです。
アプリケーションの実行はユーザーモード、カーネル(プロセス管理、メモリへのアクセス管理、周辺機器のデバイス管理、ファイル管理など)の実行はカーネルモードと切り分けることによって、OSの核心部分へのアクセスを制限し、システムの安定性とセキュリティを保っています。
カーネルを理解して、コンピュータの仕組みに対する知識を深めましょう。
無料のプログラミングスクール「テクドリ」の卒業生のインタビュー動画を、インスタグラムほか公式SNSにて公開中!