一、存储体系
寄存器、高速缓存(Cache)
容量更小
速度更快
单位价格更贵
通常存储常用的数据
内存(主存)、本地外存(硬盘)、远程存储(云存储)
容量更大
速度更慢
单位价格更低
存储不常用数据
二、存储管理的任务
内存空间一般分为两个区域:
系统区:存放操作系统常驻部分,用户不能占用这部分空间
用户区:分配给用户使用,用于装入和存储用户程序和数据,随时变化。
存储管理的实质:
用户空间的管理
内存管理问题主要包括:
内存管理方法
内存的分配与释放算法
虚拟存储器的管理
控制内存和外存之间的数据流动方式
地址变换技术
内存数据保护和共享技术
1.内存的分配和回收
(1)功能
记住每个存储区域的状态:空闲与否
实施分配:用户提出请求,分配内存
回收:回收用户释放的区域
(2)内存分配表
位示图表示法
空闲页面法
空闲块表法
(3)内存分配方式
静态分配:程序运行前分配内存,不允许“搬家”
动态分配:程序运行时允许动态分配内存,且允许“搬家”。
2.存储共享
所谓存储共享是指两个或多个进程共用内存中相同区域。
包括:代码共享和数据共享。
目的:节省内存空间,提高内存利用率;通过内存共享实现进程通信。
3.存储保护
目的:为多个程序共享内存提供保障,使在内存中的各道程序,只能访问它自己的区域,避免各道程序间相互干扰。
方法:
(1)地址越界保护
(2)权限保护
4.“扩充”内存容量
用户在编制程序时,不应该受内存容量的限制,所以要采用一定技术来“扩充”内存的容量,使得用户得到比实际内存容量大得多得内存空间。
借助虚拟技术或交换技术完成,达到在逻辑上扩充内存容量的目的。
三、地址转换
1.地址重定位
(1)绝对地址:
存储器以字节为单位编址,每个字节都有对应的地址。假定内存容量为n,则编号顺序为0,1,2,...,n-1,该地址称为物理地址或绝对地址。
(2)物理地址空间:
由绝对地址对应的内存空间称为“物理地址空间”。
(3)逻辑地址:
在多道程序系统中,内存同时存储多个用户程序,每个用户不能预先知道他的程序被存储到了什么地方。为了方便,每个用户都可认为自己的程序和数据存储在一组“0”地址开始的连续空间中,用户程序中使用的地址,称为“逻辑地址”或“相对地址”。
(4)逻辑地址空间:
由逻辑地址对应的存储空间称为逻辑地址空间。
当用户把程序装入内存时,存储管理为他分配的内存空间可能是从某一单元开始的一组连续的地址空间,他的起始地址不固定,即逻辑地址与物理地址经常不一致。
把逻辑地址转换为绝对地址的工作称为“地址重定位”,分为“静态重定位”和“动态重定位”两种。
2.静态重定位
内存在装入一个程序时,把程序中的指令和数据地址全部装换为绝对地址,该过程在程序运行前进行,程序运行过程中无需再转换,这种转换方式成为“静态重定位”。
3.动态重定位
内存在装入程序时,不进行地址转换,而是直接把程序装入到分配的内存中,程序在执行过程中完成地址的转换,这种转换方式称为“动态重定位”。
四、固定分区
1.基本思想
多道程序环境下,整个用户空间划分为若干个固定大小的区域,每个分区中只装入一道作业,分区大小可以相同,也可以不同。
2.内存分配表与分区的分配、回收
内存分配表是一张分区是分区说明表,记录分区号、分区大小、分区起始地址及使用状态等。
分配时按照进程的内存需求,按一定策略从分区表中找到空闲分区进行分配。
回收时,将内存分区登记在分区说明表中,并将其状态置为空闲状态。
五、可变分区
1.基本思想
系统不预先划分固定分区,而是在装入程序时划分内存分区,使为程序分配的内存区的大小正好等于程序的需求量,且分区的个数是可变的。
2.紧缩技术
内存经过一段时间分配后,会存在很多很小的空间。
紧缩应注意的问题:
(1)增加系统开销
(2)移动是有条件的
比如进程正与设备交换信息,此时不能移动。
所以,采用紧缩技术时,应该尽可能减少需要移动的进程数和信息量。
3.可变分区的实现
(1)硬件支持
两个专用控制寄存器:基址寄存器和限长寄存器
(2)绝对地址形成
程序装入内存后,分区的起始地址和长度装入两个寄存器,程序执行后,取出指令中的逻辑地址,绝对地址=逻辑地址+基址寄存器内容
(3)地址越界
当逻辑地址>限长寄存器值时,产生“地址越界”中断。
4.可变分区的分配策略
(1)首次适应算法
思想:当接到内存申请时,查找分区说明表,直到找到一个大小能满足要求的空闲分区为止,将其分割并分配。
优点:简单,可以快速做出分配决定。
(2)最优适应算法
思想:当接到内存申请时,查找分区说明表,找到一个大小能满足要求的最小空闲分区,将其分割并分配。
优点:节约空间
缺点:形成许多碎片
(3)最坏适应算法
思想:当接到内存申请时,查找分区说明表直到找到一个大小能满足要求的最大空闲分区,将其分割并分配。
优点:碎片少
缺点:分割了大的空间,遇到较大申请,无法满足。
5.分区的回收
当用户程序执行结束后,系统回收已使用完毕的分区,将其记录在空闲区表中。假定归还的分区起始地址为S,长度为L。考虑如下四种可能性:
回收区与插入点的上邻空闲分区F1相邻接
回收分区与插入点的下邻空闲分区F2相邻接
回收区同时与插入点的上、下两个空闲分区相邻接
回收区既不与F1邻接,又不与F2邻接
6.分区的保护
两种方法:
(1)系统设置界限寄存器,包括:上、下界寄存器或基址、限长寄存器。
(2)保护键方法
六、分区管理方案的优缺点
优点:
简单、表格不多,实现起来容易,内存额外开销小,保护措施也简单。
在内存利用率方面可变分区比固定分区高。
缺点:
碎片多,不能为用户提供“虚存”,每个用户程序的存储受物理存储的限制。
七、覆盖技术
1.概念
是指一个程序的若干程序段,或几个程序的某些部分共享某一个存储空间。
2.实现
把程序划分为若干个功能上相对独立地程序段,按照其自身逻辑结构使那些不会同时执行的程序段共享同一块内存区域
3.解决的问题
从用户级彻底解决内存小装不下程序的问题。
4.优点
打破了需要将一个程序的全部信息装入内存后程序才能运行的限制。
在逻辑上扩充了内存空间,从而在某种程度上实现了在小容量内存上运行较大程序的功能。
5.缺点
对用户不透明,增加了用户的负担。
八、交换技术
1.交换的含义
进程从内存移到磁盘,并再移回内存。
2.适用场合
分时系统和大多数现在操作系统,是虚拟存储系统的基础。
3.主要内容
(1)换出进程的选择
(2)交换时机的确定
(3)交换空间的分配
(4)换入进程换回内存时位置的确定