差分

移動先: 案内検索

カーネルの構造と機能

2,981 バイト追加, 2007年10月18日 (木) 11:09
/* プロセス間通信 */
メッセージキュー(message queue)はプロセス間でメッセージ(データ)を送出、受信の順序を約束し受け取る機能です。しかしながら、FIFO名前付きパイプと同じような役割です。さらにいえば FIFO 名前付きパイプの方が簡単で便利です。たぶん過去のUNIX System Vの互換のために用意しているのでしょう。
 
 
=== 記憶管理 ===
 
記憶管理はプロセスが使っているメモリ空間の割り当ての管理です。メモリ空間といってもプロセス自体はハードウェアのメモリを直接意識していません。カーネル側がプロセスに割り当てた仮想的に扱う記憶空間を管理しているため、プロセスは実際に搭載しているハードウェアのメモリの容量よりも大きな記憶空間を利用することができます。
 
 
 
記憶参照時に記憶領域としては存在しているがハードウェアのメモリ上に存在していない場合は、実行できるようにハードウェア上に読み込みます。この時、記憶領域として扱う単位のことをページといいます。その入れ換えとして実行に不必要のない記憶領域はハードウェア上のメモリから他のデバイス(主にハードディスク)へ退逃します。この入れ換えのことをLinuxではスワップといっています。
 
 
;補足: 本来のスワップの意味はプロセスが利用してい記憶空間をまるごと入れ替えることを指します。このあたりの用語は実際に使っている用語と歴史的経緯から使っている用語と混乱していますので理解時に注意してください。
 
 
mmapはファイルやデバイスを記憶領域にマップする機能を提供します。たとえばファイルをmmapすると、記憶領域をアクセスするのと同じ方法でファイルへのアクセスします。別の言い方をすると、記憶領域もファイルも同じ扱いになります。
 
 
シェアードメモリはプロセス間で同じ記憶空間を共有するメカニズムです。
 
 
 
=== ネットワーク ===
 
現代において、ネットワークの機能はオペレーティングシステムの中でも重要な役割を果たすようになっています。TCP/IPは1983年に4.2BSDへ組み込まれて以来、UNIXでは重要な位置を占めてきました。ただし安定して使えるようになって来たのは1986年に出て来た4.3BSDになってからです。
 
 
;補足: Berkeley DARPA UNIX projectはTCP/IPを実装するプロジェクトで、そのプラットフォームとして彼らの使っていた4BSD UNIXに組み入れられたのです。
 
 
GNU/Linuxとして使う場合、TCP/IP以外のネットワークプロトコルを扱う以外を使うことは滅多にはありませんが、LinuxはTCP/IP以外にも色々なネットワークプロトコルをサポートしています。
 
 
あと分類という観点からいけば、同じマシン上に存在しているプロセス間の通信に使われるUNIXソケットも実装はネットワークに分類されています。
 
 
;調べてみよう: 使っているカーネルのバージョンでは、どんなプロトコルをサポートしているだろうか。
匿名利用者