Linuxで使用されるメモリ管理の原則


回答:


7

Linuxは両方を使用します。それはセグメンテーションを使用して、さまざまなアクセス権を与えながら、利用可能なすべてのアドレス空間をマッピングします。基本的には、カーネルとユーザー空間のビューです。いくつかの例については、KERNEL_DS(カーネルデータセグメント)のLinuxソースコードをgrepできます。

その後、ページングは​​仮想メモリの実装に使用されます(開始点として、カーネル内の「struct gdt_page」のGrep)。


6

Linuxでのメモリ管理は、ページングによってのみ機能します。

Linuxは「小さい」(通常は4kB)ページと「大きい」(2M)ページの両方をサポートしています。前者は特別なことを何も知らない、または実行しなくても「そのまま動作」し、後者は特別な処理が必要です(ブート時に予約し、特別なデバイスを介してマップする必要があります)。

Linuxで「セグメント」が現れる唯一のコンテキストは、プロセスのデータセグメントを増やすために使用されるbrk()syscallです(通常、これは必要ありません。mallocは、気にすることなくそれを行います)。ただし、どちらの方法でも、メモリはページ単位で提供され、ページ単位で管理されます。x86セグメンテーションとは関係ありません。


i386が登場したとき、X86セグメンテーションは廃止されました。Linuxは、メモリ管理にセグメンテーションを使用したことがありません。ELKSや(おそらく)uClinuxのようないくつかの派生物はそうかもしれません。
LawrenceC
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.