カーネル状態 ユーザー状態
カーネルの状態
オペレーティング・システム・カーネルの動作モード。コンピュータのハードウェア・リソースを制御し、上位レイヤーのアプリケーションに実行環境を提供します。
ユーザーランド
ユーザーアプリケーションが実行される状態は、カーネルの状態に依存します。 悪用によるシステムクラッシュを避けるため、ユーザー状態での特権を制限しています。
システムコール
オペレーティングシステムは、ユーザー状態からカーネル状態のリソースにアクセスするためのインターフェイスを提供します。システムコールを使用すると、ユーザー状態からカーネル状態にプロセスを切り替えることができます。
ユーザーランドからカーネルランドへの切り替え方法
システムコール
例外
ユーザーランドプロセスで例外が発生すると、例外を処理するカーネルプログラムに切り替わります。
ハードウェアデバイス割り込み
ハードウェア・デバイスが要求を完了すると、CPU に割り込み信号が送信され、CPU は現在のスレッドを一時停止し、割り込み信号に対応する割り込みハンドラを実行します。
Linuxファイルシステム
LinuxやUnixシステムでは、すべてがファイルです。
ハードディスク
ハードディスクの最小読み取り単位はブロックであり、通常4KBのサイズです。
ハードディスクの最小記憶単位はセクタで、各セクタは512B = 0.5Bです。
一度に1ブロック、通常は8セクタを読み込みます。
ファイルのメタデータ(uid、gid、作成時刻、最終アクセス/変更時刻、パーミッション、サイズ、ファイル・タイプなど)はInodeに格納され、それぞれのInodeには異なるファイルを区別するための番号が振られています。
ファイルの種類
共通ファイル
ディレクトリファイル
ディレクトリ内のファイル、すなわちそれらへのポインタを格納します。
リンクファイル
ハード・リンク・ファイル
ファイルがソース ファイルと同じ Inode を持つ場合、それは同じファイルです。 同じInodeのファイルを削除する前に、同じInodeのファイルをすべて削除してください。
ソフトリンク
ソース・ファイルへのリンクを保持します。 は別のInodeファイルです。
デバイスファイル
キャラクタデバイスファイル
データへのバイト/文字アクセス、データ・デバイスへのシーケンシャル・アクセス、通常はキーボードやシリアル・ポートなどのランダム・アクセスをサポートしていません。
ブロックデバイスファイル
ランダム・アクセス・データ・デバイス、ブロック・デバイス上の任意の場所にアクセス可能、キャラクタ・アドレッシングはサポートしていません。 ハードディスク、フロッピーディスク、CD-ROMなど。
パイプファイル
mkfifo を使用して作成されたプロセス間通信用のファイル。
Socketソケットファイル
ローカルまたは異なるマシン間のネットワーク通信に使用されるファイル。