CSAPP虚拟内存

2019-01-13  本文已影响0人  王加冰

一、为什么会有虚拟内存

系统中的进程和其他的程序进程共享 CPU 和主存资源。当系统中太多的进程需要太多内存,其中一些进程就无法运行。内存还很容易被破坏,如果某个进程不小心写入到另一个进程使用的内存中,它就可能会以某种完全和程序逻辑无关的方式失败。

为了更加有效的管理内存减少出错,现代系统提供了一种对主存抽象的概念,虚拟内存。虚拟内存是硬件异常,硬件地址翻译,主存,磁盘文件和内核软件的完美交互。为每一个进程提供一个大的、一致的和私有的地址空间。虚拟内存三个重要的能力:

1)它将主存看成是一个存储在磁盘上的地址空间的高速缓存。在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据,通过这种方式,高效使用主存。

2)为每一个进程提供一致的地址空间,从而简化了内存管理。

3)它保护了每个进程的地址空间不被破坏

二、地址

传统的寻址方式 现代处理器的寻址方式

三、页表

同缓存一样,虚拟内存系统必须有某种方法来判定一个虚拟页是否缓存在DRAM(主存)中,如果是,系统还需要确定这个虚拟页放在哪个物理页中,如果不命中,系统还必须判断这个虚拟页放在磁盘的那个地方,物理内存中选择某一个牺牲页,并将虚拟页从磁盘复制到DRAM中,替换这个牺牲页。这些功能是软硬件联合提供的,包括操作系统软件,MMU的地址翻译硬件和一个存放在物理内存中叫做页表的数据结构。

上一篇下一篇

猜你喜欢

热点阅读