x86について読みましたが、セグメントサイズは最大4 GB(32ビット)アーキテクチャまで上がることができると述べました。
セグメントサイズが制限を超えていることを知っているか、経験した人がいますか?それとも、実際の生活におけるセグメントサイズの制限は何ですか?最大制限を超えると、異なるサイズのセグメントに分割されますが、セグメント間の移行をどのように管理しますか?複数のセグメントを収容できるほどRAMが小さい場合
答え1
オペレーティングシステムは、割り当てテーブルで処理できるよりも多くのメモリを使用しません。
32ビットで表現できる最大バイト数は4294967296なので、メモリ制限は4GBです。したがって、64ビットシステムでは、最大値は18 446 744 073 709 551 616バイト(16 777 216 TB)であり、これは明らかに何十年も問題ではありません。 64ビットシステムのメモリ制限は、ハードウェアが積極的に処理できるメモリ量によって異なります。
最大ファイルサイズには通常同じ制限が適用されますが、一部のシステムではこの制限を克服する方法を実装しています。
答え2
ほとんどの最新のオペレーティングシステムは、Intel 80286によって導入されたセグメント概念を使用しないフラットメモリモデルとして設計されており、Linuxもその1つです。
OS kernel
パフォーマンスを向上させるために、ユーザープロセスのメモリスペースはカーネルによって直接アドレス指定可能である必要があるため、2^32アドレススペースはカーネルとユーザースペースプロセスの間で分割されます。 32ビットLinuxの場合、比率は1:3です。仮想アドレス空間の上位1Gはカーネルとドライバ用に予約され、仮想アドレス空間の下位3Gはプロセス用に予約されています。
多くの作業には3G RAMで十分です。ただし、一部のアプリケーションは、アドレス指定可能な(物理的に使用可能な)RAMとそのパフォーマンスの間に直接依存関係を持ちます。良い例は次のとおりです。リレーショナルデータベース、さまざまなデータ分析、画像処理、科学コンピューティングなど