我正在研究galvin的虚拟内存管理,我无法理解这句话:
除了将逻辑内存与物理内存分开之外,还有虚拟内存 内存允许两个或多个进程共享文件和内存 通过页面共享。这带来了以下好处
虚拟内存可以允许在使用fork()系统调用创建进程期间共享页面,从而加快进程创建。
如何与fork()
共享网页?请澄清。
答案 0 :(得分:1)
我认为该文本指的是为fork()完成的写时复制优化。
基本上fork()克隆进程,复制其整个内存。 这可能需要很长时间,特别是对于使用大量资金的流程。而且,fork()紧跟一个exec()非常常见,使前一个副本毫无意义。
而不是为每个fork()执行所有这些工作现代Unix创建新进程,但不要复制所有内存。他们只是将原始进程和新进程的虚拟内存页面指向相同的物理页面。
在减少副本和减少内存使用方面,这大大降低了fork()的成本。
缺点是无论何时fork()ed进程或原始进程写入页面,写入都会引发异常(因为物理页面被标记为只读),并且页面将被复制。 幸运的是,事实并非经常发生这种情况。
答案 1 :(得分:0)
页面。他们在页面表中有相同的帧号输入