1.3 カーネルとシェル

Kernel and Shell

カーネルはハードウェアを抽象化しプロセスを管理する。シェルはユーザーとカーネルの間に立ち、コマンドを解釈して実行する。

システム構造

Linuxシステム構造

図1: Linuxシステムの層構造

Linuxシステムはカーネル空間とユーザー空間に分離される。カーネルは特権モードで動作し、ハードウェアに直接アクセスできる。ユーザープログラムはシステムコールを通じてカーネルの機能を利用する [1]。

カーネルの役割

機能 説明
プロセス管理 プロセスの生成・終了・スケジューリング
メモリ管理 仮想メモリ、ページング、メモリ保護
ファイルシステム VFS抽象化、ext4/xfs/btrfs等のサポート
デバイス管理 ドライバによるハードウェア抽象化

シェルの役割

シェルの動作

図2: シェルによるコマンド実行の流れ

シェル 特徴
bash 最も普及、POSIX互換、多くのディストリビューションの標準
zsh 高機能な補完、プラグイン拡張(oh-my-zsh)
fish ユーザーフレンドリー、構文ハイライト標準
# 現在のシェルを確認
echo $SHELL

# 利用可能なシェル一覧
cat /etc/shells
出典
[1] Love, R. (2010). Linux Kernel Development, 3rd Edition. Addison-Wesley.
[2] man bash - GNU Bourne-Again SHell.