虚拟存储器放在磁盘的哪个位置

2021-12-30 13:51:38 +08:00
 liuwei137885

最近复习 CSAPP ,对虚拟内存有些困惑,图中的虚拟存储器是放在磁盘的哪个地方,虚拟存储器的大小有限制吗

1639 次点击
所在节点    Linux
8 条回复
ShadowPower
2021-12-30 14:00:50 +08:00
> 虚拟存储器是放在磁盘的哪个地方
swap 分区或者 swapfile 中
> 虚拟存储器的大小有限制吗
有,取决于操作系统
liuwei137885
2021-12-30 14:08:30 +08:00
swap 分区不是在物理内存不足的时候使用吗,那新起一个进程,在加载 elf 文件的时候,代码段和数据段会新建虚拟页,这些虚拟页也是在 swap 分区吗
ShadowPower
2021-12-30 15:27:17 +08:00
@liuwei137885 虚拟页是虚拟内存那块的概念,页表上有逻辑地址,运行的时候才转成物理地址。
默认都是先分配在物理存储器上。如果内存不足,就用最近最少使用算法把物理存储器里的一些页面置换到虚拟存储器里,然后在页表中把它标记为缺页。
liuwei137885
2021-12-30 15:41:33 +08:00
虚拟存储器不是虚拟页的集合吗
liuwei137885
2021-12-30 19:11:13 +08:00
还有,如果禁用 swap 会怎样,这时虚拟存储器会放在哪
liuwei137885
2022-01-23 00:37:50 +08:00
有大佬回答一下吗
kingcanfish
2022-01-26 17:20:50 +08:00
好问题 虚拟存储页直接上就磁盘的抽象并不是说存在哪个磁盘上面 你可以看 CSAPP9.8 节内存映射内容,简单来理解 就是 虚拟页面都可以在磁盘上找到映射关系,物理内存可以看成是磁盘的高速缓存,地址->物理内存->磁盘
物理内存不够怎么办 ,LRU 算法找到需要替换出来的页面, 把他写到 swap 中
如果你又要访问 swap 中的内存页了, 又把 swap 中的内容换进物理内存
虚拟储存大小实际上和物理内存+ swap 大小相关 因为你 malloc 的内存不可能超过 物理内存+swap 的限制,虚拟内存已分配的页面

> 如果禁用 swap 会怎样
不会怎么样,因为现在内存比之前大很多了,很少会发生因为内存不够而换出到 swap 的情况了

如果有错误或者表达不清楚的话可以一起探讨
kingcanfish
2022-01-26 21:35:56 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/825285

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX