![]() |
1
2
简短回答: 除非您随机分配大量的最小粒度(即4096字节)的非连续区域,否则不是这样。 长回答: 有点,
在现代体系结构中,您有几个层次的虚拟内存映射(或页表,无论您喜欢哪个术语),64位体系结构中,对于48位地址空间,通常有4个层次的内存映射(Intel即将推出的扩展将添加另一个层次,允许将4096字节的页面分割成256字节的页面)。每次在一个还没有映射的区域中分配一个页面时,内核都必须分配一个新的(通常
身体上
连续的;注意重点,相对而言,这是一个相当昂贵的操作)内存块,用于保存该内存空间区域的翻译映射。我将避免使用特定的术语,只需调用它们
现在,如果新的映射处于L3级别,并且有一个L3页表,那么新的映射将只涉及更改该区域中的一个条目来指示转换。如果没有L3页表,则必须分配新的L3页表,并将其输入到L2页表中。这样一直到l0页的表格。 一些简要说明:
|
![]() |
MaPo · Linux,设置锁定ICMP_过滤器选项 5 月前 |
![]() |
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 5 月前 |
![]() |
Bobby · 复合字面值总是左值吗? 5 月前 |
![]() |
9-Pin · C: 嵌套结构的堆栈内存分配 5 月前 |