単語 | 意 味 | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
カーネル kernel |
オペレーティング・システムのことで、プログラムのために ファイルシステム、メモリ管理、CPU のスケジューリング、デバイスの I/O といったサービスを提供します。 | ||||||||||||||||||||||||
プロセス process |
オペレーティング・システムによって実行されているプログラムの インスタンスです。UNIX システムでは、新しいプロセスを生成する 唯一の方法は fork システムコールを使う方法です。 | ||||||||||||||||||||||||
システムコール system call |
UNIX のカーネルは、決まった数のエントリ・ポイントを提供します。
アクティブなプロセスは、このエントリ・ポイントを使ってカーネルのサービス
を利用します。このエントリ・ポイントをシステムコールと呼び、
カーネルはこの番号を解釈することで、どのシステムコールが起動されたかを知る。
標準の UNIX の C ライブラリがこれらのシステムコールへの インタフェースを提供しています。これによって、システムコールの呼び出しは 通常の関数呼び出しのように見えます。 |
||||||||||||||||||||||||
プロセス ID PID |
すべてのプロセスは、PID すなわちユニークなプロセス ID を持ちます。
PID は整数で、通常 0 から 30000 までの値をとります。
カーネルは新しいプロセスが生成されると PID を割り当てます。
プロセスは getpid() システムコールを用いてその PID を取得できます。 |
||||||||||||||||||||||||
親プロセス ID PPID |
すべてのプロセスは、親プロセスとそれに対応する PPID を持ちます。
カーネルは新しいプロセスが生成されると PPID を設定します。
プロセスは getppid() システムコールを用いてその PPID を取得できます。 |
||||||||||||||||||||||||
シェル Shells |
UNIX と会話形式でやりとりするためのプログラムです。
典型的なシェルは、端末あるいはファイルからユーザのコマンドを読みこみ、
実行するようなコマンドインタプリタとして機能します。
そればかりか、プログラミング言語でもあります。
ユーザが UNIX システムにログインすると、パスワードファイル中の エントリの shell フィールドで指定されるプログラムがログインシェル として実行されます。 現在のシェルがなんであるかを知るには以下のようにします。 env | grep SHELL |
||||||||||||||||||||||||
デーモン daemon |
端末やログインシェルなしにバックグラウンドで動作し、 イベントが起きるのを待っているか、特定のタスクを定期的に行うプロセスのこと | ||||||||||||||||||||||||
メジャ・デバイス番号 major device |
デバイスエントリを得るための大域配列のインデックス | ||||||||||||||||||||||||
v ノード v node |
UNIX カーネル内のファイルを表現するもので、
ファイルへのインタフェースと全操作の関数へのチャネルを定義している。
/,/usr 等:vnode.h v ノードは、抽象オブジェクトで、例えば NFS では r ノードであり、 ufs では i ノードです。 |
||||||||||||||||||||||||
i ノード i node |
各ファイルごとの属性を管理している構造体。:ufs_inode.h | ||||||||||||||||||||||||
vfs virtual file system |
UNIX カーネル内のファイルシステムで、rootvfs ではじまり、NULL で終わる 異なるファイルシステムを含むことが可能。:vfs.h |
||||||||||||||||||||||||
RISC | Reduced Instruction Set Computer | ||||||||||||||||||||||||
コールアウト callout |
カーネルが後で実行しなければならない関数を登録できるメカニズム | ||||||||||||||||||||||||
スピン・ロック spin lock |
ロックの中で最も単純なもの。ロック変数は、不可分な test-and-set 命令を用いたビジー待機ループで操作される:mutex | ||||||||||||||||||||||||
advisory ロック advisory lock |
プロセスがチェックするロック:lockf(3c) | ||||||||||||||||||||||||
mandatory ロック mandatory lock |
カーネルが強制的にするもので、ロックと衝突する操作は拒否される | ||||||||||||||||||||||||
RAW I/O | ブロック型デバイスへのバッファリングなしのアクセスを許可する機能 | ||||||||||||||||||||||||
非同期 I/O async I/O |
プロセスがブロックすることなしに、I/O を遂行できる機構です。 ストリームに対する読み書き要求は、ただ単に要求キューに置かれ、 ブロックすることなく戻る。I/O が完了すると、SIGPOLL シグナルを介して報告される。 | ||||||||||||||||||||||||
ストリーム stream |
双方向データ転送を行える、カーネル領域のドライバとユーザ領域の プロセスとの間のデータ転送路で、カーネル内に実装されている。 ストリームの I/O 処理は非同期です。 | ||||||||||||||||||||||||
STREAMS | ストリームの作成や使用、削除が可能な、システムコールやカーネル資源、
カーネル内のユーティリティ・ルーチンの集合体であり、デバイス・ドライバを
開発する場合のフレームワークでもある。
STREAMS は、ドライバを開発する場合の約束事やガイドラインを規定しているし、 ドライバをモジュール指向で開発するための機構やユーティリティを提供する。 |
||||||||||||||||||||||||
クロック・ティック CLK_TIC |
UNIX マシンには、一定間隔でシステムに割り込みをかける
ハードウェア・クロックがあります。
この間隔は、CPU ティックあるいはクロック・ティックと呼ばれます。
ほとんどの UNIX の実装では、1秒間のティック数を param.h で定義される
HZ で保持しています。
多くの UNIX は、CPU ティックを10ミリ秒に設定しています。 ほとんどの UNIX の実装では、クロック周波数すなわち1秒間のティック数を param.h で定義される HZ で保持しています。 10ミリ秒ティックの場合、HZ は100になります。 カーネル関数は、時間を秒数やミリ秒単位でなく、このティック数で計測します。 当該マシンの CLK_TIC は、以下のコマンドで知ることができます。 > getconf CLK_TIC | ||||||||||||||||||||||||
ワーキングセット working set |
プロセスのページで近い将来必要になるページ群をいう | ||||||||||||||||||||||||
スラッシング thrashing |
起動されているプロセス数が多すぎて、各プロセスに充分な メモリがないと、ページフォルトが多発してその処理におわれて プロセスがほとんど動かなくなってしまう現象 | ||||||||||||||||||||||||
メモリマップファイル mmap |
ファイルをメモリにマップする機構 | ||||||||||||||||||||||||
バックグラウンド プロセスグループ Background Process Group |
制御端末との接続を確立したセッションにおける、 フォアグラウンドプロセスグループを除くすべてのプロセスグループ。 | ||||||||||||||||||||||||
制御プロセス Controlling Process |
制御端末との接続を確立したセッションのリーダプロセス。 | ||||||||||||||||||||||||
制御端末 Controlling Terminal |
セッションに対応している端末。
各セッションは制御端末を 1 つだけ持つことができ、 また 1 つの制御端末は 1 つのセッションにだけ対応できます。 制御端末から入力されるある種のシーケンスは、 その制御端末に対応するセッション中のプロセスグループへのシグナル送信を伴います。 詳しくは termio(7I) を参照してください。 | ||||||||||||||||||||||||
ディレクトリ Directory |
ファイルを階層構造システムに組織化するためのもので、
ディレクトリはその階層構造におけるノードとなります。
ディレクトリもファイルの一種であり、 その内容は一群のファイル、 および一群の他のディレクトリ(サブディレクトリと呼ぶ)です。 階層構造においてサブディレクトリは、 当該ディレクトリのすぐ下のレベルに位置します。 ディレクトリ中の項目はリンクと呼ばれ、 リンクはファイル記述子とファイル名を対応付けます。 通常、各ディレクトリには、最低 2 つのリンクが含まれます。 それは .(ドット)と ..(ドットドット)です。 ドットは自分自身を指すリンクで、 ドットドットは自身のすぐ上のレベルのディレクトリ(親ディレクトリ) を表すリンクです。 階層構造の頂点にあるルートディレクトリにとっては、 親ディレクトリも自分自身となります。 ルートディレクトリのパス名は / で、その親ディレクトリのパス名も / となります。 | ||||||||||||||||||||||||
ダウンストリーム Downstream |
ストリームにおける、ストリームヘッドからドライバへの方向を指します。 | ||||||||||||||||||||||||
ドライバ Driver |
1 つのストリームでは、
ドライバが周辺ハードウェア機器とストリームとのインタフェースを提供します。
ドライバは、マルチプレクサやログドライバ( log(7D) 参照) のような擬似ドライバの形をとることもあります。 この場合ハードウェアデバイスは無関係です。 | ||||||||||||||||||||||||
実効ユーザ ID と 実効グループ ID Effective User ID and Effective Group ID |
稼動中の各プロセスは実効ユーザ ID と実効グループ ID
を 1 つずつ持っていて、これらはファイルへのアクセス権(後述)
を検査する際に使用されます。
この両 ID は、当該プロセスの実 ユー ザ
ID および実グループ ID とそれぞれ同一です。
ただし当該プロセスまたはその先祖がユーザ ID セットのビットまたはグループ ID セッ トのビットが設定されたファイル( exec(2) 参照) から生成されている場合を除きます。 | ||||||||||||||||||||||||
ファイルの アクセス権 File Access Permissions |
以下のいずれかの条件が満たされるとき、ファイルへの読み取り、
書き込み、実行/検索権がプロセスに対して与えられます。
上記の条件のいずれもが偽の場合、 そのプロセスが要求する種類のアクセス権は拒否されます。 | ||||||||||||||||||||||||
ファイル記述子 File Descriptor |
ファイルへの I/O を実行するのに使用される小さな整数値。
最小値は 0 で、最大値は NOFILES の値マイナス 1 です。
各プロセスは、NOFILES 値を超える数のファイル記述子を同時にオープンすることはできません。 ファイル記述子は open や pipe などのシステムコールにより返されます。 また read、write、ioctl、close などのシステムコールの引数として用いられます。 | ||||||||||||||||||||||||
ファイル名 File Name |
通常ファイル、特殊ファイル、およびディレクトリに与えられる名前。
名前を構成する文字数の最小値は 1 で、最大値は NAME_MAX の値です。
ファイル名には \0(ナル)および /(スラッシュ)の ASCII コードを除くすべての文字が使用できます。 ただし、*、 ?、 [、 ] の 4 文字はシェルに対して特別な意味を持つので ( sh(1)、 csh(1)、および ksh(1) 参照)、 通常は使用しないでください。また印刷不能な文字は、 使用することは許されていますが、避けてください。 ファイル名はパス名の 1 項目とも考えられます。 パス名の各項目の解釈は、その項目の接頭辞に対応した NAME_MAX および _POSIX_NO_TRUNC の値により異なります。 つまりパス名中のある項目の長さが NAME_MAX 値を超えていて、 かつその項目のパス接頭辞に対して _POSIX_NO_TRUNC が有効な場合 ( fpathconf(2) および limits(4) 参 照)、 その環境ではその項目はエラーとなります。 _POSIX_NO_TRUNC が有効でなければ、その項目の先頭部分 (バイト数は NAME_MAX 値に等しい)が項目名として用いられます。 | ||||||||||||||||||||||||
フォアグラウンド プロセスグループ Foreground Process Group |
制御端末と接続を確立したセッションは、
そのセッションのプロセスグループ群のうちの 1
つを制御端末のフォアグラウンドプロセスグループとして認識します。
このグループは、他のグループ(バックグラウンドプロセスグループ) には許されないような特別なアクセスを制御端末に対して行うことができます。 | ||||||||||||||||||||||||
{IOV_MAX} | struct iovec 配列の項目の最大数。 | ||||||||||||||||||||||||
{LIMIT} | 中かっこ {LIMIT} は、 インプリメンテーションごとに決められた大きさの制限を表示するのに使われます。 これは、ヘッダファイル({} はなし)によって決定できる値、 またはコンフィギュレーション調査(引数 _PC_LIMIT を使った pathconf(2)) を呼び出すことによって実行時に得ることができる実際の値を示しています。 | ||||||||||||||||||||||||
マスク Masks |
指定された mode
引数中のアクセス権ビットをクリアするための生成関数コールの呼出し時に使用される、
プロセスのファイルモード生成マスク。
umask( cmask)中にセットされていたビットは、 生成されるファイルのモードではクリアされています。 | ||||||||||||||||||||||||
メッセージ Message |
ストリーム中におけるデータまたは情報の何ブロックかの集まりで、
STREAMS 制御構造体を伴います。
メッセージにはいくつかのタイプが定義されていて、
それはメッセージの内容の種類を表しています。
ストリーム中においては、 メッセージがデータ送信および通信の唯一の手段です。 | ||||||||||||||||||||||||
メッセージキュー Message Queue |
ストリーム中において、 モジュールまたはドライバによる処理を待っているリンクされたメッセージ群。 | ||||||||||||||||||||||||
メッセージキュー 識別子 Message Queue Identifier |
msgget システムコールにより生成される一意な正の整数で、
メッセー ジを識別します。msqid とも表されます。
各 msqid は、メッセージキューとそれに対応したデータ構造体を含んでいます。 データ構造体は msqid_ds と表され、以下のメンバからなります。 struct ipc_perm msg_perm; struct msg *msg_first; struct msg *msg_last; ulong msg_cbytes; ulong msg_qnum; ulong msg_qbytes; pid_t msg_lspid; pid_t msg_lrpid; time_t msg_stime; time_t msg_rtime; time_t msg_ctime;msqid_ds 構造体の各フィールドを以下に説明します。
| ||||||||||||||||||||||||
メッセージ操作用 アクセス権 Message Operation Permissions |
msgop と msgctl の両システムコールの説明では、
操作に必要なアクセス権を {token} で表していて、
この token はアクセス権の種類で以下のように解釈されます。
00400 ユーザによる読み取り 00200 ユーザによる書き込み 00040 グループによる読み取り 00020 グループによる書き込み 00004 その他による読み取り 00002 その他による書き込み以下のいずれかの条件が満たされるとき、 msqid への読み取りおよび書き込み権が、プロセスに与えられます。
上記の条件のいずれもが偽の場合、 そのプロセスが要求する種類のアクセス権は拒否されます。 | ||||||||||||||||||||||||
モジュール Module |
データの I/O 用の処理ルーチンの集まり。常にストリームの中間、
つまりストリームヘッドからドライバまでの間に存在します。
ストリームにおけるモジュールは、 シェルパイプラインにおけるコマンドと似ています。 ただしモジュールには、双方向(ダウンストリームとアップストリーム) のデータ送信と処理を独立して実施することを可能にするための 2 つの関数が含まれています。 | ||||||||||||||||||||||||
マルチプレクサ Multiplexor |
複数のユーザプロセスに対応したストリーム群を 1 つのドライバに接続したり、
複数のドライバを 1 つのユーザプロセスに接続することを可能にするドライバ。
STREAMS は一般的な多重化用ドライバを備えてはいませんが、 ストリームを構築したり多重化されたストリーム群を接続したりする機能を提供します。 | ||||||||||||||||||||||||
オーファン プロセスグループ Orphaned Process Group |
グループ内の全メンバの親が、そのグループのメンバか、 あるいはグループのセッションのメンバではないようなプロセスグループ。 オーファンとは「孤児」の意味です。 | ||||||||||||||||||||||||
パス名 Path Name |
スラッシュ(/)で区切られたディレクトリ名の集まりで、
NULL 文字で終わる文字列。先頭がスラッシュの場合や、
最後がファイル名の場合もあります。
パス名の先頭がスラッシュの場合、 パスの検索はルートディレクトリから始まります。 先頭がスラッシュでなければ、検索は現在の作業ディレクトリから始まります。 スラッシュ 1 つだけからなるパス名はルートディレクトリを指します。 特に断わりのない限り、 NULL のパス名は「存在しないファイルを表す」 ものと解釈されます。 | ||||||||||||||||||||||||
プロセス ID Process ID |
各プロセスは、システム中に存在している間、
つまり寿命が終わるまでプロセス ID と呼ばれる一意な正の整数で認識されます。
あるプロセス ID を割り当てた後、その ID を持つプロセス、 プロセスグループ、およびセッションの寿命がすべて終わるまで、 システムはその ID を再使用しません。 プロセス中には thread_t および LWPID_t と呼ばれているスレッド ID を持つスレッドがあります。 これらのスレッドは外のプロセスからは見えません。 | ||||||||||||||||||||||||
親プロセス ID Parent Process ID |
現在動作中のプロセスが新たなプロセスを生成した場合( folk(2) 参照)、 現プロセスが新プロセスの親プロセスとなり、現プロセス のプロセス ID が親プロセス ID となります。 | ||||||||||||||||||||||||
特権 Privilege |
特権を持つということは、 システムによる制限を受けずに動作する権利を持つことです。 | ||||||||||||||||||||||||
プロセスグループ Process Group |
システム中の各プロセスは、必ずあるプロセスグループのメンバです。
各グループはプロセスグループ ID により認識されます。
現在プロセスグループリーダではないプロセスは、 新たなグループを生成してそのグループのリーダとなることができます。 さらに現在プロセスグループリーダではないプロセスは、 同じセッション中の他の既存のプロセスグループに加わることができます。 新たに生成されたプロセスは、 その親プロセスが属するプロセスグループのメンバとなります。 | ||||||||||||||||||||||||
プロセスグループ リーダ Process Group Leader |
プロセスグループ ID と同一のプロセス ID を持つプロセス。 | ||||||||||||||||||||||||
プロセスグループ ID Process Group ID |
動作中の各プロセスは、必ずあるプロセスグループのメンバであり、
プロセスグループはプロセスグループ ID
と呼ばれる正の整数により認識されます。プロセスグループ ID は、
そのグループのリーダのプロセスのプロセス ID です。
プロセスをグループ化することにより、 関連したプロセス群に一括してシグナルを送信できます( kill(2) 参照)。 | ||||||||||||||||||||||||
プロセスの寿命 Process Lifetime |
プロセスの寿命とは、フォークされたときから、 終了した旨を親プロ セスが認識するまでの間を指します。 wait(2) を参照してください。 | ||||||||||||||||||||||||
プロセスグループ の寿命 Process Group Lifetime |
プロセスグループの寿命は、 プロセスグループリーダによりグループが生成されたときから、 そのグループの最後のプロセスの寿命が終わるとき、 または最後のプロセスがグループから離れるときまでを指します。 | ||||||||||||||||||||||||
読み込みキュー Read Queue |
ストリームにおけるモジュールまたはドライバ中のメッセージキューで、 アップストリーム方向のメッセージを含んでいます。 | ||||||||||||||||||||||||
実ユーザ ID と 実グループ ID Real User ID and Real Group ID |
システム上に存在することを許されたユーザは、
実ユーザ ID と呼ばれる正の整数(範囲は 0 から MAXUID の値まで)
により認識されます。
各ユーザはグループのメンバでもあります。 各グループは、実グループ ID と呼ばれる正の整数により認識されます。 動作中のプロセスの実ユーザ ID と実グループ ID は、 そのプロセスを生成したユーザの実ユーザ ID と実グループ ID にセットされています。 | ||||||||||||||||||||||||
ルートディレクトリ と作業ディレクトリ Root Directory and Current Working Directory |
各プロセスには、 ルートディレクトリと現在の作業ディレクトリが対応付けられています。 この目的は、パス名の検索方法を定義するためです。 プロセスのルートディレクトリは、 ルートファイルシステムのルートディレクトリと同じである必要はありません。 | ||||||||||||||||||||||||
保存されたユーザ ID と保存された グループ ID Saved User ID and Saved Group ID |
保存されたユーザ ID と保存されたグループ ID の値は、 ユー ザセットまたはグループセットファイルモードビットがセットされたファイルを、 実行する前の実効ユーザ ID および実効グループ ID の値である( exec(2) 参照)。 | ||||||||||||||||||||||||
セマフォ識別子 Semaphore Identifier |
セマフォ識別子(semid)は、
semget システムコールにより生成される一意な正の整数です。
各 semid は、一群のセマフォとそれに関連したデータ構造体を持つ。
このデータ構造体は semid_ds と呼ばれ、次のメンバから構成されます。
struct ipc_perm sem_perm; /* operation permission struct */ struct sem *sem_base; /* ptr to first semaphore in set */ ushort sem_nsems; /* number of sems in set */ time_t sem_otime; /* last operation time */ time_t sem_otime; /* last operation time */ time_t sem_ctime; /* last change time */ /* Times measured in secs since */ /* 00:00:00 GMT, Jan. 1, 1970 */semid_ds 構造体の各フィールドを以下に説明します。
セマフォは、次のメンバからなる sem という名のデータ構造体です。 ushort semval; /* semaphore value */ pid_t sempid; /* pid of last operation */ ushort semncnt; /* # awaiting semval > cval */ ushort semzcnt; /* # awaiting semval = 0 */
| ||||||||||||||||||||||||
セマフォ操作 アクセス権 Semaphore Operation Permissions |
semop と semctl の両システムコールの説明では、
操作に必要なアクセス権を {token} で表していて、
この token はアクセス権の種類で以下のように解釈されます。
00400 ユーザによる読み取り 00200 ユーザによる変更 00040 グループによる読み取り 00020 グループによる変更 00004 その他による読み取り 00002 その他による変更以下のいずれかの条件が満たされるとき、 semid への読み取りおよび変更権がプロセスに対して与えられます。
| ||||||||||||||||||||||||
セッション Session |
セッション ID と呼ばれる識別子により認識される一群のプロセスで、
制御端末との接続を確立する機能を持っています。
現在プロセスグループリーダではないプロセスは、 新たなセッションとプロセスグループを生成することができます。 そのときそのプロセスは、新セッションのセッションリーダとなり、 さらに新プロセスグループのプロセスグループリーダとなります。 プロセスが新たに生成されると、 そのプロセスはそれを生成したセッションに属することになります。 | ||||||||||||||||||||||||
セッション ID Session ID |
システム中の各セッションは、その寿命が続く間、セッション ID という正の整数値により一意に認識されます。 このセッション ID は、セッションリーダとなっているプロセスのプロセス ID です。 | ||||||||||||||||||||||||
セッションリーダ Session Leader |
セッション ID と同一のプロセス ID およびプロセスグループ ID を持つプロセス。 | ||||||||||||||||||||||||
セッションの寿命 Session Lifetime |
セッションの寿命は、セッションリーダによりセッションが生成されたときから、 そのセッションの最後のプロセスの寿命が終わるとき、 または最後のプロセスがセッションから離れるときまでを指します。 | ||||||||||||||||||||||||
共有メモリ 識別子 Shared Memory Identifier |
共有メモリ識別子( shmid)は、
shmget システムコールにより生成される一意な正の整数です。
各 shmid は、共有メモリセグメントと呼ばれるメモリ領域と、
それに対応したデータ構造体を持っています。
(ユーザは、共有メモリセグメントへの参照が終わったら、 必ずそのセグメントを削除しなければなりません。) データ構造体は shmid_ds と呼ばれ、以下のメンバで構成されます。 struct ipc_perm shm_perm; /* operation permission struct */ int shm_segsz; /* size of segment */ struct region *shm_reg; /* ptr to region structure */ char pad[4]; /* for swap compatibility */ pid_t shm_lpid; /* pid of last operation */ pid_t shm_cpid; /* creator pid */ ushort shm_nattch; /* number of current attaches */ ushort shm_cnattch; /* used only for shminfo */ ushort shm_cnattch; /* used only for shminfo */ time_t shm_atime; /* last attach time */ time_t shm_dtime; /* last detach time */ time_t shm_ctime; /* last change time */ /* Times measured in secs since */ /* 00:00:00 GMT, Jan. 1, 1970 */shmid_ds 構造体の各フィールドを以下に説明します。
| ||||||||||||||||||||||||
共有メモリ操作 アクセス権 Shared Memory Operation Permissions |
shmop と shmctl の両システムコールの説明では、
操作に必要なアクセス権を {token} で表していて、
この token はアクセス権の種類で以下のように解釈されます。
00400 ユーザによる読み取り 00200 ユーザによる書き込み 00040 グループによる読み取り 00020 グループによる書き込み 00004 その他による読み取り 00002 その他による書き込み以下のいずれかの条件が満たされるとき、 shmid への読み取りおよび書き込み権がプロセスに対して与えられます。
上記の条件のいずれもが偽の場合、 そのプロセスが要求する種類のアクセス権は拒否されます。 | ||||||||||||||||||||||||
特殊プロセス Special Processes |
プロセス ID の値が 0 または 1 のプロセス( kill(2) 参 照)。 ID が 0 のプロセスは proc0 と呼ばれるプロセススケジューラです。 ID が 1 のプロセスは proc1 と呼ばれる初期化プロセス(init)で、 システム中の他のすべてのプロセスの先祖であり、 プロセス構造体を制御するために使用されます。 | ||||||||||||||||||||||||
STREAMS | カーネルメカニズムの集合体で、
ネットワークドライバおよび通信ドライバの開発をサポートする機能を持っています。
STREAMS はカーネル内部およびカーネルとユーザレベルのプロセスとの間での、 文字の I/O に関するインタフェース基準を定義します。 STREAMS メカニズムは、各種のユーティリティルーチン、カーネル機能、 およびデータ構造体から構成されます。 | ||||||||||||||||||||||||
ストリーム stream |
カーネル内におけるユーザプロセスとドライバルーチンとの間の全二重データパス。
主な内容は、1 つのストリームヘッド、1 つのドライバ、 そしてその両者の間に位置するいくつか(0 個の場合もある) のモジュールです。ストリームはシェルのパイプラインと似ていますが、 データの流れと処理が双方向に行われる点が異なります。 | ||||||||||||||||||||||||
ストリームヘッド Stream Head |
ストリームの両端のうち、
ストリームとユーザプロセスとのインタフェースを提供する端。
ストリームヘッドの主要な機能は、 STREAMS に関連したシステムコールを処理すること、 およびストリームとユーザプロセス間でデータや情報を送信することです。 | ||||||||||||||||||||||||
スーパユーザ Super-user |
実効ユーザ ID の値が 0 のプロセス(スーパユーザプロセス) に対応するユーザ。スーパユーザプロセスには、 ファイルがアクセス権で保護されていてもアクセスできるなどの特権が与えられています。 | ||||||||||||||||||||||||
アップストリーム Upstream |
ストリームにおける、ドライバからストリームヘッドへの方向を指します。 | ||||||||||||||||||||||||
書き込みキュー Write Queue |
ストリームにおけるモジュールまたはドライバ中 の メッセージキューで、 ダウンストリーム方向のメッセージを含んでいます。 | ||||||||||||||||||||||||
セグメンテーション segmentation |
もし、CPUが16bitデータしか扱う能力がない時に、32bitアドレスを扱いたい 時にはどうすればよいだろうか? 80x86 architecture などでは、
segmentation という技術が使われている。これは、CPUから出力されるアドレスをCPUの アドレスレジスタだけでなく、Segment Register と
の組で表すものである。 通常は単なるshift + 加算で処理が行われる。
Paging を行う場合は、Segment RegisterにはPage Entry Table そのものを 使っても良い。この場合は、Segment Register の数値にはさま ざまな意味が 与えられる。 8086 では、Segment register は4つ(CS,DS,ES,SS)あり、アドレス を指示できるアドレスレジスタは6つである(BX,SI,DI,BP,SP,IP)。 それぞれ 16bit幅であり、Segment register は 4bit shiftされて アドレスレジスタに加算される。CS:IP で CS segemnet を使って、 segment の中で IP のoffset を持つアドレスを指示することになる。 | ||||||||||||||||||||||||
バッファキャッシュ buffer cache |
バッファキャッシュには、
ブロックデバイスドライバが使用するデータバッファが含まれている。
これらのバッファは固定サイズ(たとえば、512 バイト)で、 ブロックデバイスから 読み出されたか、 そこに書き込まれた情報のブロックが入っている。 ブ ロックデバイスとは、データアクセスの際に、 固定サイズのブロック単位でのみ読み書きできるデバイスを指す。 すべてのハードディスクはブロックデバイスである。 バッファキャッシュは、 デバイス識別子と必要なブロック番号とでインデックス付けされていて、 データブロックをすばやく見つけだすために使用される。 ブロックデバイスは、バッファキャッシュを経由しなければアクセスできない。 データがバッファキャッシュに見つかれば、 ハードディスクのような物理ブロックデバイスから読み出す必要がなくなるので、 アクセスがずっと高速になる。 | ||||||||||||||||||||||||
ページキャッシュ page cache |
ページキャッシュは、
ディスク上のイメージやデータへのアクセスを高速化するために使用される。
これは、ページ単位でファイルの論理的な内容をキャッシュし、 ファイル名と そのファイル内のオフセットを使ってアクセスされる。 ページがディスクからメモリ に読み出されると、 それらはページキャッシュにキャッシュされる。 | ||||||||||||||||||||||||
アップストリーム Upstream |
ストリームにおける、ドライバからストリームヘッドへの方向を指します。 | ||||||||||||||||||||||||
マジックナンバー magic number |
ファイルに定義されたファイル固有の番号で、
ファイルの先頭の数バイトに設定されています。
file コマンドは、 ファイルが特定のマジックナンバーで始まるかどうかでファイルの種類を識別します。 【 関連項目 】magic(4),file(1) |