Linux-環境変数、仮想アドレス空間


1つは、環境変数です。

環境変数は、オペレーティングシステムのオペレーティング環境を指定するためにオペレーティングシステムで使用されるパラメータです。

注:環境変数は通常、システム内でグローバルな特性を持っています。

1.1一般的な環境変数

  1. PATH:コマンドの検索パスを指定します。

ここに画像の説明を挿入します

  1. HOME:ユーザーの作業ディレクトリ。(率直に言って、ユーザーはLinuxシステムのデフォルトディレクトリにログインします)
  2. SHELL:SHELLの値は通常/ bin / bashです。

1.2環境変数に関連するコマンド

  1. エコー:環境変数の値を表示します

  2. export:
    一時的に有効な環境変数を設定します
    export [environment variable name] = $ [environment variable name]:/ your path
    ここに画像の説明を挿入します
    最初に.cファイルをvimし、次にmain実行可能ファイルをgccします。mainを実行すると、上記の結果は次のようになります。表示されます。次の図に示すように、mainコマンドを正常に実行するために、exportを使用してmainの環境変数をPATHに追加します。
    ここに画像の説明を挿入します

    永続的な効果:
    通常、Linuxのコーディングが少ない場合は、vimcppと呼ばれるものをインストールします(これにより、プログラミングがよりスムーズになります)。インストールプロセス中に、最後のステップを実行するときに、次のコマンドを実行します。ソース〜/ .bashrc "。なぜこのようなものを実装したいのですか?「〜/ .bashrc」は環境変数ファイルであるため、source +「〜/ .bashrc」を使用して、システムにファイルの内容を再度読み取らせます。この環境変数ファイルの内容を見てみましょう。
    ここに画像の説明を挿入します
    このファイルの最後の行に、なじみのあるかどうかに関係なく、最初の単語「export」が表示されます。したがって、永続的に有効にする場合は、ファイルにexportコマンドを記述します。

  3. env:すべての環境変数を表示します

  4. 未設定:環境変数をクリアします

  5. セット:ローカルで定義されたシェル変数と環境変数を表示します

1.3環境変数の編成

ここに画像の説明を挿入します
上記のメイン関数には、コマンドラインパラメーターの数、コマンドラインパラメーターの値、および環境変数を表す3つのパラメーターがあります。

次の図に示すように、3番目のパラメータenvは実際にはポインタの配列です。
ここに画像の説明を挿入します
すべてのプログラムは文字ポインタの配列である環境テーブルを受け取り、各ポインタは\ 0で終わる環境文字列を指します。

次に、仮想アドレス空間

CPUを設計するとき、32ビット、64ビット、128ビットなどの非常に多くのアドレスラインが使用されます。しかし、それでも大容量ストレージに対するCPUの要求には応えられず、より大きなストレージスペースが必要になります。実際の使用では、メインメモリアドレスに従ってアクセスされます。これはおそらく仮想アドレススペースの存在の意味です。 。
ここに画像の説明を挿入します
64ビットオペレーティングシステムの場合、アドレス範囲は0〜2 ^ 64であり、物理メモリはこの範囲よりも小さいことが多く、残りの部分は仮想アドレス空間です。図1に示すように。
仮想アドレス空間は物理空間の拡張であり、ストレージシステムのストレージ容量が非常に大きくなります。

2.2仮想アドレス空間のアクセスプロセス

仮想アドレスを使用してメモリにアクセスすると、システムは仮想アドレス空間を物理アドレス空間にマップします。仮想アドレスに対応するストレージユニットが物理アドレス空間にある場合、直接アクセスはヒットと呼ばれます。物理アドレス空間にない場合はミスと呼び、ミスした場合は、ストレージユニットとその周辺ユニットのすべてのデータを仮想空間からメインメモリに転送してから、ストレージユニットにアクセスする必要があります。

注:一般的に、仮想アドレス空間と物理アドレス空間の間にはマッピング関係があります。

第三に、仮想アドレス空間の管理方法

仮想アドレス空間には、ページ管理、セグメント管理、セグメントページ管理の3つの主要な管理方法があります。

3.1ページ管理

ページ管理は、仮想メモリと物理メモリを固定ページと等しいページに分割します。サイズは通常4KBから1Gです。マッピングの過程で、仮想アドレスページと物理アドレスページは1対1で対応していません。つまり、仮想アドレスは物理アドレスの任意のページ位置に対応できます。仮想アドレスは、仮想ページ番号とページ内のアドレスで構成され、物理アドレスもページ番号とページ内のアドレスで構成されます。どのプロセスでも、仮想アドレスは物理アドレスに対応します。ストレージスペースをページに分割し、ページに従ってそれらを管理するこの方法は、ページ管理と呼ばれます。次の図は、ページ管理仮想メモリ空​​間のマッピングです。

ここに画像の説明を挿入します
ページ管理のアドレス変換:
最初に、仮想アドレスのベース番号(つまり、ユーザープログラム名)に従ってページテーブルのベースアドレステーブルを検索し、ページテーブルの開始アドレスを見つけます。次の図に示すように、Pは、仮想アドレスのページ番号に従って、Pを実際のアドレスとしてページテーブルでページ開始アドレスを検索し、仮想アドレスでページアドレス(下位セグメント)を開始します。物理メインメモリ内のページで開始アドレス(上位セグメント)は、物理的な実アドレスを構成します。

ここに画像の説明を挿入します

3.2セグメント管理

セグメント管理では、各プログラムモジュールは物理メモリ内の特定のセグメントに割り当てられます。アドレス指定のために、各プログラムモジュールの情報を記録するテーブルが設定されます。このテーブルはセグメントテーブルと呼ばれます。セグメントテーブルの各行には、ユーザープログラムのセグメント番号、開始アドレス、およびセグメント長が記録されます。

仮想メモリには、ユーザーのプログラムモジュールまたはデータがセグメント形式で保存されます。プログラムを実行する必要がある場合は、最初にセグメント番号に従ってセグメントテーブルが検索され、テーブル内のセグメントの開始アドレスは次のようになります。取得され、仮想アドレス内のセグメント内部アドレスが結合されて、物理メインメモリ内のアドレスが形成されます。

ここに画像の説明を挿入します
上の図は、第1レベルのセグメント管理システムを構成するセグメントテーブルを示しています。第1レベルのセグメント管理システムの場合、ユーザープログラムの論理アドレスは2つの部分に分割され、上部はセグメント番号、位置はセグメント内のアドレス(オフセットとも呼ばれます)です。アドレスを変更するときは、論理アドレスの上位ビットに従ってテーブルを検索してセグメントの実際の開始アドレスを取得し、それを論理アドレスのセグメント内アドレスと組み合わせて実際の物理アドレスを取得します。次の図に示されています。

ここに画像の説明を挿入します

ユーザープログラムの論理アドレスは、ベース番号、セグメント番号、セグメント内のアドレスの3つの部分に分かれています。基数はプロセス名に対応し、上図のPに示すように、基数に従ってセグメントテーブルのベースアドレステーブルでセグメントテーブルの開始アドレスが検索されます。次に、セグメント番号に従って開始アドレスとしてPを使用してセグメントテーブルを検索し、セグメント開始アドレスを取り出して論理アドレスのセグメントアドレスに追加し、物理メインメモリアドレスを形成します。

3.3段落管理

セグメントページ管理は、論理モジュールに従ってメモリスペースをセグメント化し、各セグメントをいくつかのページに分割することです。メモリにアクセスするときは、セグメントテーブルといくつかのページを通過する必要があります。これにより、セグメント管理とページ管理の利点が一元化されます。セグメント管理によりデータセグメントの保護が容易に実現し、ページ管理によりページ置換が容易に実現します。

注:セグメントページ管理を使用する場合、セグメントのサイズはページの整数倍である必要があり、セグメントの開始アドレスはページの開始アドレスである必要があります。

次の図に示すように、セグメントテーブルとセグメント内のページテーブルを組み合わせると、論理アドレスの特定のページの物理メインメモリで対応するページを見つけることができます。

ここに画像の説明を挿入します
セグメントページ管理アドレス変換を次の図に示します。これには、セグメントテーブルのベースアドレステーブル、いくつかのセグメントテーブル、および多数のページテーブルが含まれます。論理アドレスのベース番号はプロセス名に対応します。プロセス名は、図Aに示すように、セグメントテーブルのベースアドレステーブルでセグメントテーブルの開始アドレスを検索し、セグメント内の論理アドレスを追跡するために使用されます。セグメント番号は、図Pに示すように、ページテーブルの開始アドレスを検索し、最後に、PをPとして、ページテーブルの論理アドレスのページ番号に従ってページテーブルを検索します。実際のアドレス。

ここに画像の説明を挿入します
Pを開始アドレスとするページテーブルでページテーブルが見つかると、対応する物理メインメモリ内のページの開始アドレスが取り出され、論理アドレス内のページアドレスと組み合わされて、物理アドレスの実際のアドレスが形成されます。メインメモリ。

おすすめ

転載: blog.csdn.net/xhuyang111/article/details/115052574