为什么要进行存储管理:
存储器是冯诺依曼体系结构的基础,是计算机的重要资源。必须要仔细管理,实现高的资源利用率。
存储管理要完成的三个任务:
1、记录存储器的使用情况
2、分配和回收内存
3、交换
基本的存储管理方式:
最简单的是单道程序存储管理。即把内存分为两部分,一部分给操作系统使用,另一部分给应用程序使用。给应用程序使用的内存中最多只运行一个程序。
好处:管理简单。
坏处:cpu利用率低。
多道程序管理。同样把内存分为两部分,一部分给操作系统使用,另一部分给应用程序使用。给应用程序使用的部分再划分为固定大小的若干分区,每个分区都可以运行一个独立的程序。
多道程序管理最初使用多队列的方式,但是这样做内存利用率低,所以后改用单一队列方式调度程序进入内存。
重定位和存储保护:
重定位:
当程序被编译完成后,程序中定义的实体(变量、函数等)会有一个逻辑地址。程序的各种操作都是依赖这个逻辑地址实现的。
当程序被装载入内存时,实体会有一个物理地址。
而逻辑地址和物理地址不一定相等。这就需要我们把逻辑地址转换为物理地址,以保证程序正常运行。这个过程就是地址重定位。
地址重定位有两种方式:静态重定位(提前计算出程序所有实体的物理地址)和动态重定位(在需要的时候计算出实体的物理地址)。
存储保护:
采用固定分区的多道程序内存管理,就可能出现多个程序同时运行在内存中的不同分区中的情况。显然,我们应该保证一个分区中的程序不应该访问另一个分区中的内存。这就是存储保护。
实现存储保护的方式:设置基址寄存器、边界寄存器。(也被用来进行动态重定位)。