最近在看一些操作系统的书籍。假设: 硬件支持 MMU,且 enable 了 MMU 。使用的是虚拟存储(VM). 支持多个程序并发执行。分时系统。
那么当程序 P1 切换到 P2 运行的时候(P1 没有结束退出),有没有可能 P2 需要的物理内存不够,从而把 P1 占用的物理内存的内容临时放到 磁盘( disk ) 上,从而腾出物理内存空间挪给 P2 用。如果是,具体的细节有哪些:
1.比如 P1 占用的堆的内容会不会临时存到 disk 上。如果是,是存到哪里?( linux 是 swap 分区?).程序中的代码段是不是不需要存,因为这些本来就已经在 disk 上了?
2.P1 的 page table 是不是也要更新?
3.如果可以把其他程序占用的物理内存临时存到 disk 上,那 Linux 上的 OOM 是怎么发生的? swap 分区也不够了?
大家回答的时候,可以针对具体的操作系统来讨论这些策略,也可以说一些 general 的原理或者设计。谢谢!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.