高度なUnixのプログラミング環境調査の概要(A)

ブログのこのシリーズは、彼が頻繁に尋ねた、または多分質問をされたインタビューのための高レベルのプログラミング環境のためのUnixの内容の要約を行っています。

Unixのアーキテクチャ:

コア環境は、カーネル、システムコールインタフェースが呼び出され、システムコールインタフェースにおける公共図書館の設立だけで、アプリケーションがシステムコールを使用することができます、また、パブリックライブラリを使用することができます。シェルは、他のプログラムを実行するためのインタフェースを提供し、特別なアプリケーションです。

シェルは、最も一般的に使用されるシェル、次の/ binに/ SHであり、多くがあります。

入力と出力:

ファイルディスクリプタ:通常小さい負でない整数は、特定のプロセスを識別するカーネルファイルがアクセス可能である、ファイルを開いたり、ファイルディスクリプタが返されるファイルを作成します。

標準入力、出力、エラー:新しいプログラムが実行されるたびに、シェルは、入力、出力、およびエラーを担当し、その3つのファイルディスクリプタを開きます。3つのディスクリプタは、端末にリンクされています。リダイレクション記号ストリームのように<>を使用することができます。

バッファなしIO:読み取り、機能が開いて、書く、のlseekは、近いIOはバッファリングされていない提供し、後に詳細を記述します。

標準IO:共通のprintf、getc関数、PUTC。

文件I/O:

オープンとopenat機能:

ユーザーがファイルを開く、パラメータは、パス、およびフラグであり、

このよう読み取り専用、書き込み専用のため、非常に、非常に多くの追加の操作、具体的な使用とは、説明することができ、ルックアップとして開くフラグの開発の主なパラメータ、。

openatを使用するように、ちょうどopenatは、絶対パスのみを使用し、オープン、ファイルを開くには、相対パスを使用することができます。

 

機能のlseek:

各開いているファイルは、ファイルの先頭からのバイト数を測定するために、彼は通常、非負の整数であり、オフセットに関連するファイルがあります。同様に、パラメータは、状況に応じて異なるオフセットを設定し、このメソッドが呼び出されるフラグを渡す必要があります。

 

Unixファイルシステム:

 

カーネルは、3つのデータ構造が開いているファイルを表し使用し、彼らの関係が発生する可能性があり、別のプロセスのプロセスにおけるファイル共有の影響を決定します

(1)各プロセスは、プロセス・テーブル内のレコードエントリを有し、テーブルエントリは、各ファイルに、記述子当たり、ベクトルとして考えることができるオープン・ファイル記述子が含まれ記述子が関連付けられています。

  。ファイルディスクリプタフラグ。

  B。ファイルエントリへのポインタをポイントします。

(2)開いているすべてのファイルをカーネルとファイルテーブルを維持し、各エントリはファイルが含まれています。

  。ファイル状態フラグ(同期、非ブロッキングなど、追加書き込み、書き込み、読み出し)

  B。現在のファイルオフセット

  C。ファイルのエントリノードvへのポインタ

(3)各開いているファイルは、(デバイスが考えられる)、構造のノードvがあり、Vノードはさらに、ノードvを含む、ファイルの種類、ほとんどの文書のために、この機能の各種操作へのファイルポインタを含みますiノード・ファイル(iノードインデックスノード)。すべての関連情報ファイルが容易に利用可能であるように、例えば、メモリにファイルを開くときに情報がディスクから読み込まれ、ノードiは、ディスク上の実際のデータブロックを指すファイルの所有者、ファイル長、ファイルが含まれています場所にポインターなど。

スティッキービット:

  プログラムは最初の終了時に実施された後、あなたがスティッキービットを設定した場合、それはメモリが速く、次回の実行をロードすることができ、メモリにコピーを保存します。

おすすめ

転載: www.cnblogs.com/derek-dhw/p/11096224.html