現代のオペレーティングシステムは一般に仮想メモリ管理(Virtual Memory Management)メカニズムを採用しており、これにはプロセッサ内のMMU(Memory Management Unit)によるサポートが必要です。まず、PA と VA の概念を紹介します。
1.PA (物理アドレス) ---物理アドレス
プロセッサに MMU がない場合、または MMU はあるが有効になっていない場合、CPU 実行ユニットによって送信されたメモリ アドレスが直接プロセッサに送信されます。下図に示すように、チップのピンをメモリチップ(以下、仮想メモリと区別するため物理メモリと呼びます)に渡すことをPA(Physical Address、以下PA)と呼びます。

物理アドレス
2.VA (仮想アドレス) ---仮想アドレス
プロセッサで MMU が有効になっている場合、CPU 実行ユニットによって送信されたメモリ アドレスは MMU によってインターセプトされ、CPU 実行ユニットからのアドレスはCPU から MMU への接続は仮想アドレス (以下、VA と呼びます) と呼ばれ、MMU はこのアドレスを別のアドレスに変換して CPU チップの外部アドレス ピンに送信します。つまり、図に示すように、VA を PA にマッピングします。下の図。

仮想アドレス
32ビットプロセッサの場合、内部アドレスバスは32ビットでCPU実行ユニットに接続されます(図では4本のアドレス線のみが概略的に描かれています)が、MMU変換後の外部アドレスバスは必ずしも32であるとは限りません-少し。つまり、仮想アドレス空間と物理アドレス空間は独立しています。32 ビット プロセッサの仮想アドレス空間は 4GB ですが、物理アドレス空間は 4GB より大きくても小さくても構いません。
MMUはVAをページ単位でPAにマッピングします。32ビットプロセッサのページサイズは通常4KBです。たとえば、MMU はマッピング項目を通じて VA の 0xb7001000 ~ 0xb7001fff のページを PA の 0x2000 ~ 0x2fff のページにマッピングできます。CPU 実行ユニットが仮想アドレス 0xb7001008 にアクセスする場合、アクセスされる実際の物理アドレスは 0x2008 です。物理メモリ内のページは、物理ページまたはページ フレームと呼ばれます。仮想メモリのどのページが物理メモリのどのページ フレームにマップされるかは、ページ テーブル (ページ テーブル) によって記述されます。ページ テーブルは物理メモリに格納されており、MMU はページ テーブルを検索して、VA がどの PA を使用するかを決定します。にマッピングされます。
3. プロセス アドレス空間
プロセス アドレス空間
x86 プラットフォームの仮想アドレス空間は 0x0000 0000~0xffff ffff で、一般的に最初の 3GB (0x0000 0000~0xbfff ffff) がユーザー空間、最後の 1GB (0xc000 0000~0xffff ffff) がカーネル空間です。
テキストセグメントとデータセグメント
テキストセグメント、.textセグメント、.rodataセグメント、.pltセグメントなどを含みます。 /bin/bash からメモリにロードされ、アクセス権限は r-x です。
データセグメント (.data セグメント、.bss セグメントなどを含む)また、/bin/bash からメモリにロードされ、アクセス権限は rw- です。
ヒープとスタック
ヒープ: ヒープとは、単にコンピューターのメモリに残っている領域のことで、ここで malloc 関数が動的にメモリを割り当てます。メモリを動的に割り当てると、ヒープ スペースがより高いアドレスに向かって拡大する可能性があります。ヒープ空間のアドレスの上限は Break と呼ばれ、ヒープ空間を高いアドレスに拡張するには、新しい仮想メモリ ページを物理メモリにマップするために、システム コール brk によって実現されます。また、関数は brk を呼び出してカーネル メモリからの割り当てを要求します。
スタック: スタックは特定のメモリ領域であり、高アドレス部分はプロセスの環境変数とコマンドラインパラメータを保存し、低アドレス部分は関数スタックフレームとスタックスペースを保存します。実際のアプリケーションでは大量のメモリを動的に割り当てることは珍しくありませんが、各層には数十の深い関数呼び出しがあるため、明らかにヒープ領域ほどの拡張の余地はありません。の呼び出しに多くのローカル変数が含まれることは非常にまれです。
プログラムを書くときにメモリ割り当てに注意しないと、ヒープやスタックで以下の問題が発生する可能性があります:
メモリリーク: 関数内で malloc を渡す場合ヒープ内にスペースを配置し、それを保存するためにスタック上にポインタ変数を宣言すると、関数が終了すると、ポインタ変数を含む関数のメンバー変数が解放され、スペースは回復されず、回復できません。解放されました。時間が経つと、次のようなメモリ リークの問題が発生する可能性があります。
スタック オーバーフロー: スタックに多すぎるデータ (大きな構造体や配列など) を置くと、「スタック オーバーフロー」問題が発生し、プログラムが終了する可能性があります。この問題を回避するには、そのような変数を宣言するときに、malloc を使用してヒープ領域を適用する必要があります。
ワイルドポインターとセグメンテーションフォルト: ポインターが指すスペースが解放されている場合、そのポインターを使用して解放されたスペースにアクセスしようとすると、「セグメントフォルト」の質問が発生します。この時点で、ポインタはワイルド ポインタになっているため、ワイルド ポインタは時間内に手動でクリアする必要があります。
4. 仮想メモリ管理の役割
仮想メモリ管理は、物理メモリのアクセス許可を制御できます。物理メモリ自体にはアクセスが制限されず、任意のアドレスの読み取りと書き込みが可能ですが、オペレーティング システムでは、異なるページに異なるアクセス権が必要になります。これは、CPU モードと MMU のメモリ保護メカニズムを使用することで実現されます。
仮想メモリ管理の主な機能は、各プロセスが独立したアドレス空間を持つことができるようにすることです。いわゆる独立したアドレス空間とは、異なるプロセスの同じ VA が MMU によって異なる PA にマッピングされることを意味し、あるプロセスの任意のアドレスにアクセスすると、他のプロセスのデータにアクセスできなくなります。これにより、どのプロセスも不正なメモリアクセスが発生することになります。命令や悪意のあるコードが他のプロセスのデータを誤って書き換えたり、他のプロセスの動作に影響を与えたりすることがないため、システム全体の安定性が確保されます。一方、各プロセスは仮想アドレス空間全体を排他的に所有していると考えるため、各プロセスのアドレス範囲が競合するかどうかを考慮する必要がなく、リンカとローダの実装が容易になります。

- VAからPAへのマッピングにより、不連続な物理アドレスを持つ複数のメモリブロックを連続したメモリブロックにマッピングすることができます。仮想アドレス。たとえば、malloc を使用して大きなメモリ領域を割り当てたい場合、十分な空き物理メモリはあるものの、十分な連続空きメモリがない場合は、複数の不連続な物理ページを割り当て、それらを連続した仮想ページにマップできます。アドレス範囲。

-
システムが同時に多数のプロセスを実行している場合、各プロセスに割り当てられたメモリの合計が、実際に利用可能な物理メモリよりも大きくなる場合がありますが、この場合でも仮想メモリ管理により各プロセスは正常に実行されます。各プロセスには仮想メモリ ページのみが割り当てられるため、これらのページのデータを物理ページにマッピングしたり、物理ページを占有せずにディスクに一時的に保存したりすることができます。ディスク上の仮想メモリ ページは一時的に保存されます。ディスク パーティション、またはスワップ デバイスと呼ばれるディスク ファイルの場合もあります。 物理メモリが十分ではない場合、使用頻度の低い物理ページのデータは一時的にスワップ デバイスに保存されます。その後、その物理ページは空きとみなされ、プロセスに再割り当てされます。このプロセスはスワップ アウト (ページ アウト) と呼ばれます。 )。プロセスがスワップアウトされたページを使用したい場合、スワップ デバイスから物理メモリにロードし直します。これはスワップ イン (ページ イン) と呼ばれます。スワップアウト操作とスワップイン操作はまとめてページングと呼ばれ、次のようになります:
システムに割り当て可能なメモリの総量=物理メモリのサイズ+サイズ下の図に示すように、スワップ デバイス

以上が仮想メモリ管理の詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Linuxネットワークの構成は、次の手順で完了できます。1。ネットワークインターフェイスを構成し、IPコマンドを使用して、構成ファイルの永続性設定を一時的に設定または編集します。 2。固定IPを必要とするデバイスに適した静的IPを設定します。 3.ファイアウォールを管理し、iPtablesまたはFirewalldツールを使用してネットワークトラフィックを制御します。

メンテナンスモードは、Linuxシステム管理において重要な役割を果たし、修復、アップグレード、構成の変更を支援します。 1.メンテナンスモードを入力します。 Grubメニューから選択するか、コマンド「sudosystemctlisolaterscue.target」を使用できます。 2。メンテナンスモードでは、ファイルシステムの修理およびシステムの更新操作を実行できます。 3.高度な使用法には、ルートパスワードのリセットなどのタスクが含まれます。 4.メンテナンスモードに入ったり、ファイルシステムをマウントできないなどの一般的なエラーは、GRUB構成をチェックしてFSCKコマンドを使用して固定できます。

Linuxメンテナンスモードを使用するタイミングと理由:1)システムが起動するとき、2)主要なシステムの更新またはアップグレードを実行するとき、3)ファイルシステムメンテナンスを実行するとき。メンテナンスモードは、安全で制御された環境を提供し、運用上の安全性と効率を確保し、ユーザーへの影響を減らし、システムセキュリティを強化します。

Linuxの不可欠なコマンドは次のとおりです。1.LS:リストディレクトリの内容; 2.CD:作業ディレクトリを変更します。 3.mkdir:新しいディレクトリを作成します。 4.RM:ファイルまたはディレクトリを削除します。 5.CP:ファイルまたはディレクトリをコピーします。 6.MV:ファイルまたはディレクトリの移動または名前を変更します。これらのコマンドは、カーネルと対話することにより、ユーザーがファイルとシステムを効率的に管理するのに役立ちます。

Linuxでは、ファイルおよびディレクトリ管理ではLS、CD、MKDIR、RM、CP、MVコマンドを使用し、許可管理はCHMOD、CHOWN、およびCHGRPコマンドを使用します。 1。LS-Lなどのファイルおよびディレクトリ管理コマンドは、詳細情報、MKDIR-Pを再帰的に作成するディレクトリを再帰的に作成します。 2。CHMOD755FILEセットファイル許可、CHOWNUSERFILEファイル所有者、CHGRPGROUPFILEの変更ファイルグループなどの許可管理コマンド。これらのコマンドは、ファイルシステム構造とユーザーおよびグループシステムに基づいており、システムコールとメタデータを介して動作および制御します。

メンテナンスメモデンリンリンアスピアルブーテンビロンメント、criticalsystemmaincencetasks.itallowsadministratorstopertopertopertopersetstingtingpasswords、Repainingfilesystems、およびRecoveringfrombootfailurureSinaMinimalenvironment.

Linuxのコアコンポーネントには、カーネル、ファイルシステム、シェル、ユーザー、カーネルスペース、デバイスドライバー、パフォーマンスの最適化とベストプラクティスが含まれます。 1)カーネルは、ハードウェア、メモリ、プロセスを管理するシステムのコアです。 2)ファイルシステムはデータを整理し、Ext4、BTRFS、XFSなどの複数のタイプをサポートします。 3)シェルは、ユーザーがシステムと対話するためのコマンドセンターであり、スクリプトをサポートします。 4)システムの安定性を確保するために、ユーザースペースをカーネルスペースから分離します。 5)デバイスドライバーは、ハードウェアをオペレーティングシステムに接続します。 6)パフォーマンスの最適化には、システム構成とベストプラクティスのチューニングが含まれます。

Linuxシステムの5つの基本コンポーネントは次のとおりです。1。Kernel、2。Systemライブラリ、3。Systemユーティリティ、4。グラフィカルユーザーインターフェイス、5。アプリケーション。カーネルはハードウェアリソースを管理し、システムライブラリは事前コンパイルされた機能を提供し、システムユーティリティはシステム管理に使用され、GUIは視覚的な相互作用を提供し、アプリケーションはこれらのコンポーネントを使用して機能を実装します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

Dreamweaver Mac版
ビジュアル Web 開発ツール

WebStorm Mac版
便利なJavaScript開発ツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ホットトピック









