存储管理
存储管理的功能
存储器的层次
1.高速缓冲存储器(cache)
2.内存(主存)
3.外存(辅存)
内存分为:
系统区、用户区:存储器管理要管理的区域
物理地址:把内存分为若干个大小相等的存储单元,每个单元给一个编号,这个编号称为内存地址(物理地址、绝对地址、实地地址),存储单元占8位,称为字节
物理地址空间:物理地址的集合称为物理地址空间(主存地址空间),他是一个一维的线性空间
内存的物理组织:
程序地址:用户编程时所用的地址(逻辑地址、虚地址)基本单位可与内存的基本单位相同,也可以不同。
程序地址空间(逻辑地址空间、虚地址空间):用户的程序地址的集合称为逻辑地址空间,它的编址总是从0开始的,可以是一维线性空间,也可以是多维空间。
虚拟存储器的定义:
在具有层次结构的计算机系统中,采用自动实现部分装入和部分对换功能,为用户提供一个比物理主存容量大得多,可寻址的一种”主存储器“
程序的局部性原理:
指程序在执行过程中的一个较短的时间内,所执行的指令地址或操作数地址分别局限于一定的存储区域中,又可细分为时间局部性和空间局部性
第一:程序中只有少量分支和过程调用,大都是顺序执行的指令。
第二:程序包含若干循环,是由相对较少的指令组成,在循环过程中,计算被限制在程序中很小的相邻部分中
第三:很少出现连续的过程调用,相反,程序中过程调用的深度限制在小范围内,一段时间内,指令引用被局限在很少几个过程。
第四:对于来纳许访问数组之类的数据结构,往往是对存储区域中相邻位置的数据的操作
第五:程序中有些部分是彼此互持的,不是每次运行时都用到的,如出错处理程序。
实现虚拟存储器必须解决好以下问题
1.主存辅存统一管理问题
2.逻辑地址到物理地址的转换问题
3.部分装入和部分对换问题
虚拟存储管理主要采用技术实现
1.请求分页虚拟存储管理
2.请求分段虚拟存储管理
3.请求段页式细腻存储管理
地址变换
1.绝对地址:主存空间的地址编号
2.物理地址空间:与绝对地址相对应的主存空间
3.相对地址:用户程序中使用的地址
4.逻辑地址空间:与相对地址对应的存储空间
5.地址变换(重定位):把相对地址转换成绝对地址
转换方式两种:静态地址重定位和动态地址重定位。
静态地址重定位:
在装入一个作业时,把作业中的指令地址和数据地址全部转换成绝对地址。地址转换工作在作业执行前集中一次完成。在作业执行过程中就无需再进行地址转换。
优点:不需要硬件支持。
缺点1:使用就静态重定位方法进行地址变换无法实现虚拟存储器。
缺点2:必须占用连续的内存空间,这就难以做到程序和数据的共享。
动态地址重定位:
程序执行过程中,在CPU访问内存之前,将要访问的程序或数据地址转换成内存地址。动态重定位依靠硬件地址变换机构完成。
地址重定位机构需要一个(或多个)基地址寄存器BR和一个(或多个)程序虚拟地址寄存器VR。
指令或数据的内存地址MA与虚拟地址的关系为:MA=(BR)+(VR)这里,(BR)与(VR)分别表示寄存器BR与VR中的内容。
动态地址重定位如图:
动态重定位主要优点:
可以对内存进行非连续分配。
对于同一进程的各分散程序段,只要把各程序段在内存中的首地址统一存放在不同的BR中,则可以由地址变换机构变换得到正确的内存地址。
动态重定位提供了实现虚拟存储器的基础。
在动态重定位的基础上,在执行期间采用请求方式为那些不在内存中的程序段分配内存,以达到内存扩充的目的。
有利于程序段的共享。
内外存数据传输的控制
1.用户程序自己控制内外之间的数据交换技术—覆盖技术:用户清楚的了解程序的结构,并指定各程序段调入内存的先后顺序。
覆盖是一种早期的主存扩充技术。使用覆盖技术,用户负担很大,且程序段的最大长度仍受内存容量限制。覆盖技术不能实现虚拟存储器。
操作系统控制方式分为两种:
一种是交换方式另一种是请求调入方式和预调入方式
交换方式:
操作系统把那些在内存中处于等待状态的进程换出内存,而把那些等待事件已经发生、处于就绪态的进程换入内存。
交换方式一般不进行部分交换,即每次交换都交换那些除去常驻内存部分后的整个进程
即使能完成部分交换,也不是按照执行的需要而交换程序段,只是把受资源限制、暂时不能执行的程序段换出内存。
请求调入方式:
在程序执行时,如果所要访问的程序段或数据段不在内存中,则操作系统自动地从外存将有关的程序段和数据段调入内存的一种操作系统控制方式
预调入方式:
由操作系统预测在不远的将来会访问到的那些程序段和数据段部分,并在它们被访问之前系统选择适当的时机将它们调入内存的一种数据流控制方式
只有请求调入方式和预调入方式可以实现进程大小不受内存容量限制的虚拟存储器。
内存的分配与回收:
设计内存的分配和回收方法时,必须考虑和确定以下几种策略和数据结构:
1.分配结构:登记内存使用情况,供分配程序使用的表格与链表。例如内存空闲区表、空闲区队列等。
2.放置策略:确定调入内存的程序和数据在内存中的位置。这是一种选择内存空闲区的策略。
3.交换策略:在需要将某个程序段和数据调入内存时,如果内存中没有足够的空闲区,由交换策略来确定把内存中的哪些程序段和数据段调出内存,以便腾出足够的空间。
4.调入策略:外存中的程序段和数据段什么时间按什么样的控制方式进入内存。
5…回收策略:回收策略包括二点,一是回收的时机,二是对所回收的内存空闲区和已存在的内存空闲区的调整。
内存信息的共享与保护:
在多道程序设计环境下,内存中的许多用户程序或系统程序和数据段可供不同的用户共享。
要限制各进程只在自己的存储区活动,各进程不能对别的进程的程序和数据段产生干扰和破坏,因此须对内存中的程序和数据段采取保护措施。
常用的内存信息保护方法有:硬件法、软件法和软硬件结合三种。
上下界保护法是一种常用的硬件保护法,要求为每个进程设置一对上下界寄存器。上下界寄存器中装有被保护程序和数据段的起始地址和终止地址
保护健法:也是一种常用的存储保护法。
保护键法:为每一个被保护存储块分配一个单独的保护键。在程序状态字中则设置相应的保护键开关字段,对不同的进程赋予不同的开关代码和与被保护的存储块中的保护键匹配。
保护键可设置成对读写同时保护的或只对读、写进行单项保护的。
如果开关字与保护键匹配或存储块未受到保护,则访问该存储块是允许的,否则将产生访问出错中断。
界限寄存器与CPU的用户态或核心态工作方式相结合的保护方式。
在这种保护模式下,用户态进程只能访问那些在界限寄存器所规定范围内的内存部分,而核心态进程则可以访问整个内存地址空间。
UNIX系统就是采用的这种内存保护方式。
操作系统
最新推荐文章于 2023-04-22 23:28:32 发布