操作系统(存储管理)徐锋Email:xf@ics.nju.edu.cn南京大学计算机科学与技术系主要内容什么是存储管理?存储器介绍连续存储空间管理分页式存储管理分段式存储管理虚拟存储管理什么是存储管理?存储管理–是操作系统的重要组成部分,负责管理计算机系统的重要资源——主存储器–主要内容包括:主存储空间的分配和去配地址转换和存储保护主存储空间共享主存储空间扩充–存储管理主要针对主存储器中用户区域进行管理,同时,也包括对辅存储器的管理。操作系统核心用户区域存储器介绍存储器的层次寄存器高速缓存主存储器磁盘缓存磁盘可移动存储介质访问速度趋慢制造成本趋高存储器介绍快速缓存–用于解决主存访问速度与CPU处理速度不相匹配的一种部件(由集成于CPU芯片中的专门的高速存取电路实现)。–或用于解决辅存访问速度与CPU处理速度不相匹配的一种部件(由主存的一部分实现)。–需要解决缓存内容与原内容不一致的问题存储器介绍地址转换与存储保护–地址转换:逻辑地址→物理地址转换方式:–静态重定位,程序(作业)装入时实现地址转换的一次完成–动态重定位,(必须借助硬件实现),CPU访问程序指令和数据之前实现地址转换–存储保护防止操作系统和各用户程序在主存储器中各存储区域访问时相互干扰常见的存储保护硬件:–界地址–存储键连续存储空间管理每个程序(作业)占据主存中连续的空间,按管理方式的不同分为:–单用户连续存储管理–固定分区存储管理–可变分区存储管理连续存储空间管理单用户连续存储管理–又称单分区模式,适用于单用户情况,任何时刻主存储器中最多只有一道程序–主存空间划分为系统区和用户区–地址转换与存储保护:地址转换:物理地址=界限地址+逻辑地址–多采用静态重定位,采用栅栏寄存器进行存储保护–动态重定位,采用定位寄存器进行存储保护–单用户连续存储管理的缺点:同单道程序的缺点,系统利用率低连续存储空间管理固定分区存储管理–又称定长分区或静态分区模式,是满足多道程序设计需要的最简单的存储管理技术–基本思想:给进入主存的用户作业划分一块连续存储区域,把作业装入该连续存储区域,若有多个作业装入主存,则它们可并发执行。–实现:系统启动时,系统操作员根据作业情况静态地把可分配的主存储器空间(用户空间)分割成若干个连续的区域,每个区域的位置固定,大小可相同也可不同,每个分区在任何时刻最多只装入一道程序执行连续存储空间管理固定分区存储管理示例OS(8K)用户分区1(16K)用户分区2(16K)用户分区3(32K)分区号起始地址长度占用标志18K16K0224K16K0340K32K主存分配表Job1(20K)0Job1连续存储空间管理固定分区存储管理–地址转换与存储保护静态定位方式,地址转换时检查其绝对地址是否落在为其分配的用户分区?动态定位方式,专门设置一对地址寄存器(上限/下限寄存器),硬件地址转换机构对相应的地址进行比较。–作业调度策略每个等待作业被选中时,排到一个能够装入它的最小分区的等待队列,该调度方式可能导致分区使用不均匀所有作业排成一个队列,当调度其中一个进入分区运行时,选择可容纳它的最小可用分区连续存储空间管理固定分区存储管理–比较适合已知程序(作业)大小和出现频率的情形–缺点:实际系统运行时,往往无法预知分区大小(太大,等同于“单用户分区模式”)主存空间利用率仍然较低无法适应动态扩充主存分区数目预先确定,限制了多道运行程序的数量连续存储空间管理可变分区存储管理–又称变长分区模式–基本思想:按作业的大小划分分区,但划分的时间、大小和位置均动态确定,系统在作业装入主存执行之前并不建立分区。连续存储空间管理可变分区存储管理示例OS(8K)Job1(15K)Job2(40K)Job3(10K)Job4(30K)Job1到达内存,Job2到达内存,Job3到达内存,Job2完成,Job4到达内存8k23k53k63k73k128k连续存储空间管理可变分区存储管理–主存分配表用于描述主存的动态分配信息,由“已分配区表”和“未分配区表”组成。分区号起始地址长度标志18K15kJob1223k30kJob4363k19KJob3分区号起始地址长度标志153k10kFree273k55kFree已分配区表未分配区表连续存储空间管理可变分区存储管理–可变分区回收问题,(分区的合并)AXBAXXBXABAB1234连续存储空间管理可变分区存储管理实现–主存分配算法最先适应(firstfit)下次适应(nextfit)最优适应(bestfit)最坏适应(worstfit)快速适应(quickfit)连续存储空间管理可变分区存储管理实现–地址转换和存储保护设置两个专门的寄存器–基址寄存器,存放分区的起始地址–限长寄存器,存放分区的长度–移动技术将分散的空闲区汇集成一个较大的空闲区,以利于大作业的执行连续存储空间管理连续分区管理方式存在的问题–每个程序总是要求占用连续的存储空间,经过一段时间的运行将会产生许多碎片(不连续的容量较小的分区),为接纳新的作业往往需要通过移动已有的主存内容来产生容量较大的分区。–移动技术实现复杂,并不可避免地导致管理开销增大传统内存管理技术分区技术覆盖技术–将大程序划分为一系列的覆盖,每个覆盖是一个相对独立的程序单位,把程序执行时不需要同时装入内存的覆盖构成一组,称为覆盖段。一个覆盖段内的覆盖共享同一存储区域,该区域成为覆盖区,其大小由对应的覆盖段内最大的覆盖决定。交换技术–把暂时不用的某个程序及数据的一部分或全部从内存移到外存中去,或把指定的程序或数据从外存读到相应的内存中,并将控制权转给该程序的一种内存扩充技术。(MIT,CTSS)分页式存储管理基本原理:–允许作业存放在若干个不相邻的分区中,既可免去移动内存信息而产生的工作量,又可充分利用主存空间,尽量减少主存碎片。分页式存储管理基本概念:–页框:主存空间按物理地址分成多个大小相等区,每个区称为块(又称页框pageframe)–页面:程序(作业)按逻辑地址分成多个大小相等的区,每个区称为一个页面(page),大小与页框大小相等–逻辑地址形式:页号和单元号页号单元号分页式存储管理基本概念–页表、作业表和地址转换页表块号1(20)块号2(21)块号3(51)…第0页第1页第2页…作业名Job1…页表始址0页表长度3……作业表物理地址=页框号(块号)*块长+单元号逻辑地址=页号*页长+单元号查找页表分页式存储管理相联存储器和快表–通常页表存放在主存中,因此按逻辑地址访问某个主存地址内容时,需要涉及二次主存访问,效率较低–相联存储器,一个专用的高速缓冲存储器,用于存放最近被访问的部分页表,是分页式存储管理的重要组成部分。–快表,存放在相联存储器中的部分页表内容页号块号(页框号)特征位…分页式存储管理存储空间的分配和去配–主存分配以块为单位–可采用位示图记录主存分配情况(0/1)–或采用链表方式记录主存分配情况页面共享–数据共享–程序共享,较复杂,需要确定统一的页号保护–标志位法,在页表中增加标志位信息–存储保护键法分页式存储管理为解决页表规模过大占用内存空间的问题–多级页表页表可以部分存放在内存中例,二级页表系统中,一次按逻辑地址的主存访问需要访问三次主存:一次访问页目录、一次访问页表、一次访问具体的数据–反置页表块号→页号仅保存调入内存的页面信息分段式存储管理为提高主存空间的利用率,存储管理方式–固定分区→动态分区→分页方式为满足程序设计和开发的要求(为模块为单位的装配、共享和保护),出现了分段式存储管理分段式存储管理基本概念–逻辑地址:段号和段内地址–段表、作业表始址长度100k8k256k16k段表第0段……第1段作业名Job1…段表始址0段表长度2……作业表分段式存储管理实现:–可基于可变分区存储管理的原理,以段为单位进行主存分配段共享:–通过不同作业段表中的项指向同一个段基址来实现。分段方式与分页方式比较分段,是信息的逻辑单位,由源程序的逻辑结构所决定,用户可见,段长由用户确定,段起始地址可以从任何主存地址开始分页,是信息的物理单位,与源程序的逻辑结构无关,用户不可见,页长由系统确定,页面只能以页大小的整倍数地址开始虚拟存储管理虚拟存储器的基本原理:–为提高主存的利用率,作业投入运行时,一次只把当前运行所需的部分程序或数据装入主存,其他部分存储于辅存,当需要时装入。–主要内容:部分装入,当处理器需要访问不在主存中的程序或数据时,为能继续执行,需要由系统自动将这部分信息装入主存。部分对换,当主存中没有足够空闲空间时,需要把主存中暂时不用的信息从主存移动到辅存上。虚拟存储管理虚拟存储器的优点–(一个或多个)作业需要的主存空间可以大于实际的内存空间–主存的利用率提高–主存的物理空间大小对用户透明虚拟存储管理虚拟存储器的定义:–在具有层次结构存储器的计算机系统中,采用自动实现部分装入和部分对换功能,为用户提供一个比物理主存容量大得多的,可寻址的一种“主存储器”。虚拟存储管理虚拟存储器实现的理论基础–作业为什么能够部分装入和部分对换?作业信息(程序)的局部性,使得在作业信息不完全装入主存的情况下能够保证其正确运行–空间局部性,一段时间内,仅访问程序代码和数据的一小部分–时间局部性,最近访问过的程序代码和数据,很快又被访问的可能性很大虚拟存储管理虚拟存储管理与对换技术的区别–虚拟存储管理以页或段为单位处理进程所需主存容量大于当前系统空闲量时仍能运行–对换技术(中级调度,挂起和解除挂起)以进程为单位处理进程所需主存容量大于当前系统空闲量时,无法解除挂起虚拟存储管理虚拟存储管理需要解决的主要问题–主存和辅存的统一管理问题–逻辑地址到物理地址的转换问题–部分装入和部分对换问题虚拟存储管理几种常见的虚拟存储管理技术–请求分页式存储管理–请求分段式存储管理–请求段页式存储管理虚拟存储管理请求分页式存储管理–分页式存储管理技术的扩展,是一种常用的分页式虚拟存储管理技术–基本原理:将作业信息被分为多个页面,其副本存放在辅助存储器中。当作业被调度运行时,仅装入需要立即访问和使用的页面,在执行过程中如果需要访问的页面不在主存中,则将其动态装入。虚拟存储管理请求分页式存储管理–页表的扩展页号驻留标志页框号辅存地址其他标志…1…………0……………………1表示在主存中,0表示不在主存中其他标志:缺页标志、脏页标志、访问标志、锁定标志、淘汰标志等虚拟存储管理请求分页式存储管理–硬件支撑操作系统的存储管理需要依靠低层硬件的支撑来完成,该硬件称为主存管理单元MMU。MMU的主要功能,完成逻辑地址到物理地址的转换,并在转换过程中产生相应的硬件中断(缺页中断、越界中断)MMU的主要组成:–页表基址寄存器–快表TLB虚拟存储管理请求分页式存储管理–硬件支撑MMU的工作流程分解逻辑地址(页号,页内地址)查询快表(高速缓存)查询页表(主存)转换成物理地址(页号→页框号)命中不命中命中不命中产生缺页中断装入快表虚拟存储管理请求分页式存储管理–页面装入策略,何时将一个页面装入主存?请页式调入,缺页中断驱动,一次调入一页预调式调入,按某种预测算法动态预测并调入若干页面)–消除策略,何时将修改过的页面写回辅存?请页式清除,仅当一页被选中进行替换时,该页内容已修改则写回辅存。(清除与替换成对)预约式清除,内容被修改页面成批写回辅存,写回操作在该页面被替换前,而非替换时。虚拟存储管理请求分页式存储管理–消除策略页缓冲技术:–仅清除淘汰的页面,并使清除操和何替换操作不必成对出现。–实现:淘汰页面进入两个队列:修改页面队列何非修改页面队列修改页面队列中的页不时被成批写出并加入非修改页面队列,非修改页面队列中的页面,当再次引用时回收,或者淘汰掉以作替换虚拟存储管理请求分页式存储管理–页面分配原则缺页中断、I/O中断频繁会降低运行效率,因此应尽可能减少缺页中断的次数。–页面分配涉及的问题分配多少?–分配给进程的空间越小,主存容纳的进程数越多,中级调度次数降低–进程仅有很少的部分驻留主存,缺页中断率会很高–分配给进程的主存空间超过一定限度,也不会明显降低缺页中断率如