存储管理

人们提出“分层存储器体系”的概念,在这个体系中,计算机有若干兆高速缓存,数千兆内存,几T磁盘存储,另外还有诸如DVD和USB等可移动存储装置。操作系统的工作是将这个存储体系抽象为一个有用的模型并管理这个抽象模型。

操作系统中管理分层存储器体系的部分称为存储管理器。他的任务是有效管理内存。

最底层的高速缓存由硬件完成。

几种存储管理方案:

无存储器抽象

最简单的存储器抽象就是没有抽象。每一个程序直接访问物理内存。

在这种情况下要想在内存中同时运行两个程序是不可能的。

地址空间

把物理地址暴露给进程会带来几个问题。

1.用户程序可以寻址内存中每一个字节,容易破坏操作系统。

2.同时运行多个程序是困难的。

要保证多个应用程序同时处于内存中互不影响,需要解决两个问题:保护和重定位

每个进程有自己的地址空间,并且这个地址空间独立于其他进程的地址空间(除了在一些特殊情况下进程需要共享他们的地址空间)。

动态重定位

把每个进程的地址空间映射到物理内存的不同部分。当一个程序运行时,程序的起始物理地址装载到基址寄存器,程序的长度装载到界限寄存器。

虚拟内存

程序大于内存的问题在计算时代就产生了。

虚拟内存的思想:

存储管理

分页

程序产生的地址称为虚拟地址,它们构成虚拟地址空间。虚拟地址空间不是直接被送到内存总线上,而是被送到内存管理单元(MMU),MMU把虚拟地址映射为物理地址。

存储管理

物理内存对应的单元称为页框(page frame),页面和页框大小通常一样。RAM和磁盘之间的交换以页面为单位。
页表

虚拟地址被分为虚拟页号(高位部分)和偏移量(地位部分)。

虚拟页号可作为页表索引,已找到虚拟页面对应的页表项,由页表项找到页框号。

页表项结构

结构与机器密切相关。

存储管理

“在/不在”位表示该表项对应虚拟页面在不在内存;

存储管理

加速分页过程

每个进程都需要自己的页表(因为他有自己的虚拟地址空间)。

1.转换检测缓冲区。

大多数程序总是对少量页面进行多次访问。

存储管理

针对大内存的页表

1.多级页表

存储管理

存储管理

2.倒排页表

存储管理

存储管理

存储管理