From: リスキルテクノロジー 松田航
新宿本校にて、、、
「カーネル(Kernel)」
Linuxを学んでいると
必ず一度は耳にする言葉です。
カーネルとは和訳すると
「核」
という意味で、
文字通りLinuxの中心的役割を持っています。
今回はカーネルの基本について
お話ししましょう。
カーネルの役割は「橋渡し」
コンピューターには
ディスプレイやマウスなど
さまざまな機器が接続されています。
そしてコンピューターには
メールソフトやブラウザーなど、
さまざまなアプリケーションが動作しています。
アプリケーションの動作には
メモリーやハードディスクなど、
数多くの装置を動かす必要がありますが…
複数のアプリケーションが
メモリーやハードディスクなどの制御を奪い合うと
収拾がつかなくなってしまいますよね。
そこで活躍するのがカーネルです。
カーネルの役割は
アプリケーションとハードウェアが
上手に連携するための、
「橋渡し」
…をすることが役目です。
Linuxを起動した時に
カーネルはコンピューターの状態を初期化し、
アプリケーションが実行できる
環境を整えてくれます。
初期化した後は、
アプリケーションの動作にあわせて
コンピューター内部の
連携をコントロールしているのです。
カーネルを呼び出すシステムコールとは?
アプリケーションが
ハードディスクなどの
接続されている機器にアクセスするには...
「システムコール」
と呼ばれる方法が使われています。
システムコールとは
アプリケーションがカーネルに仕事を依頼することで、
コンピューターに接続されている
さまざまな機器を使えるようになるのです。
たとえば
あるアプリケーションがファイルを開いて、
ファイル内容を読み込むとしましょう。
アプリケーションからは
ハードディスクにあるファイルに
直接アクセスすることができません。
そこでアプリケーションは...
「ファイルを読み込みたい」
...とカーネルにシステムコールを行います。
すると、
カーネルはそのアプリケーションに対して
「ファイルを開いてもいいですよ」
...と、ファイルを開く権限を与えます。
このように、
カーネルから権限が与えられて初めて
アプリケーションはファイルを読み込むことができるのです。
2つの権限
特権モードと非特権モード
先ほどの例で
「カーネルがアプリケーションに権限を与える」
という内容がありましたが、
これについてもう少しお話ししましょう。
Linuxでは
カーネルとアプリケーションを正しく動作させるために、
「特権モード」と「非特権モード」
...という2つの権限を設定しています。
カーネルは特権モードの権限を持ち、
あらゆるハードウェアにアクセスすることができます。
対して、
アプリケーションは
非特権モードで動作しており、
ハードウェアに対して
直接アクセスすることができません。
カーネルが管理している領域に
アプリケーションが自由にアクセスすると、
深刻なシステムエラーが発生する可能性が高くなるためです。
アプリケーションが
ハードウェアにアクセスするためには、
システムコールをして、
カーネルに特権モードへと切り替えてもらい、
ハードウェアにアクセスすることができるのです。
カーネルを知ることでLinuxの理解度が深まる
LinuxはPCだけでなく
家電製品やスマートフォンなど
さまざまな環境で使用されています。
それぞれによって
接続されるハードウェアは違いますが、
カーネルをカスタマイズすることで
あらゆる環境でLinuxを動作させることができるのです。
また、
カーネルのパラメータを変更して
Linuxの性能をカスタマイズすることもできます。
開発エンジニアを目指すにしても、
インフラエンジニアを目指すにしても、
カーネルの仕組みを知ることで、
Linux学習の理解度がより深くなります。
今の段階では概要で構いませんので、
カーネルのイメージを掴んでおいてください。
リスキルテクノロジー
松田
PS
カーネルの
設定変更やコンパイルの方法などの
理解はサーバーエンジニアにとって必須です。