《操作系统第四章课件第四章存储器管理.ppt》由会员分享,可在线阅读,更多相关《操作系统第四章课件第四章存储器管理.ppt(192页珍藏版)》请在三一办公上搜索。
1、,Page 1,2023/6/25,第四章 存储器管理,操作系统,刘 刚,Page 2,2023/6/25,第四章 存储器管理,重点理解重定位的基本概念 掌握动态分区分配方式 掌握理解分页和分段存储管理方式 理解虚拟存储器的基本概念 掌握请求分页系统的基本原理 难点动态分区分配算法 分页和分段地址转换请求分页系统的地址转换及页面置换算法,Page 3,2023/6/25,第四章 存储器管理,知识点重定位的基本概念 动态分区分配方式及分配算法、分区保护分页存储管理及地址变换、分段存储管理及地址变换,信息共享和保护虚拟存储器的基本概念、特征,页面置换技术 请求分页系统,页表机制、地址变换及页面置换
2、算法,Page 4,2023/6/25,第四章 存储器管理,存储器是计算机系统重要的组成部分虽然存储器的容量不断扩大,但仍不能满足要求,因此存储器管理是操作系统的重要工作,Page 5,2023/6/25,第四章 存储器管理,存储器包括内存(主存)和外存(磁盘)存储器的功能是保存数据,存储器的发展方向是高速、大容量和小体积。内存在访问速度方面的发展:DRAM、SDRAM、SRAM等;硬盘技术在大容量方面的发展:接口标准、存储密度等;主存储器管理技术分为两大类实存储器管理虚拟存储器管理,Page 6,2023/6/25,第四章 存储器管理,存储器的物理组织、多级存储器存储组织是指在存储技术和CP
3、U寻址技术许可的范围内组织合理的存储结构。其依据是访问速度匹配关系、容量要求和价格。“寄存器-内存-外存”结构“寄存器-缓存-内存-外存”结构;微机中的存储层次组织:访问速度越慢,容量越大,价格越便宜;最佳状态应是各层次的存储器都处于均衡的繁忙状态(如:缓存命中率正好使主存读写保持繁忙);,Page 7,2023/6/25,第四章 存储器管理,快速缓存:Data CacheTLB(Translation Lookaside Buffer)内存:DRAM,SDRAM等;外存:软盘、硬盘、光盘、磁带等;,Page 8,2023/6/25,第四章 存储器管理,主存储器管理功能存储分配和回收:分配和回
4、收算法及相应的数据结构。地址变换和重定位:可执行文件生成中的链接技术程序加载(装入)时的重定位技术进程运行时硬件和软件的地址变换技术和机构存储共享和保护:代码和数据共享地址空间访问权限(读、写、执行)存储器扩充:存储器的逻辑组织和物理组织;由应用程序控制:覆盖;由OS控制:交换(整个进程空间),虚拟存储的请求调入和预调入(部分进程空间),Page 9,2023/6/25,第四章 存储器管理,程序的装入和链接 连续分配方式 基本分页存储管理 基本分段存储管理虚拟存储器的基本概念请求分页存储管理方式页面置换算法请求分段存储管理方式,Page 10,2023/6/25,程序的装入和链接,程序的装入程
5、序的链接,Page 11,2023/6/25,程序的装入,多道程序环境下,程序要运行必须为之创建进程,而创建进程的第一件事就是分配内存源程序要运行通常经过编译(compile)链接(link)装入(load)等几个步骤,Page 12,2023/6/25,4.1 程序的装入和链接,图 4-1 对用户程序的处理步骤,Page 13,2023/6/25,4.1.1 程序的装入,1.绝对装入方式(Absolute Loading Mode),2.可重定位装入方式(Relocation Loading Mode),3.动态运行时装入方式(Dynamic Run-time Loading),Page 1
6、4,2023/6/25,程序的装入,绝对装入方式(Absolute Loading Mode)事先确定了程序将驻留在内存的什么位置,即在内存中的绝对地址装入模块被装入内存后,由于程序中的逻辑地址与实际内存地址完全相同,故不需对程序和数据的地址进行修改绝对地址的产生程序员直接赋予。不仅要求程序员熟悉内存使用情况,而且一旦程序或数据被修改后,可能要改变程序中的所有地址。通常在程序中采用符号地址,在编译或汇编时,再将符号地址转换为绝对地址。编译或汇编时产生,Page 15,2023/6/25,程序的装入,可重定位装入方式(Relocation Loading Mode)绝对装入方式只能将目标模块装入
7、到内存中事先指定的位置在多道程序环境下,不可能预知目标模块放在内存中的地址,因此绝对装入方式不适合在多道环境下使用程序中目标模块的地址通常从0开始,其他地址都是相对于0计算相对地址把在装入时对目标程序中指令和数据的地址修改过程称为重定位,又因为地址变换通常是在装入时一次完成的,以后不再改变,故称为静态重定位,Page 16,2023/6/25,程序的装入,作业装入内存时的情况,缺点:不断的分配和回收,造成内存中小空闲块很多,总空闲空间量够,但分配不了办法:紧凑(移动),但该装入方法不支持,Page 17,2023/6/25,将程序加载到10000?,程序的装入,将程序移动到20000?,Pag
8、e 18,2023/6/25,程序的装入,动态运行时装入方式(Denamic Run-time Loading)可重定位方式不允许程序运行时在内存中移动位置动态运行时的装入程序,是在把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行。因此,装入内存后的所有地址都仍是相对地址,Page 19,2023/6/25,程序的装入和链接,程序的装入程序的链接,Page 20,2023/6/25,4.1 程序的装入和链接,图 4-1 对用户程序的处理步骤,Page 21,2023/6/25,4.1.2 程序的链接,1.静态链接方式(Stati
9、c Linking),2.装入时动态链接(Load-time Dynamic Linking),3.运行时动态链接(Run-time Dynamic Linking),Page 22,2023/6/25,程序的链接,静态链接方式(Static Linking)在程序运行前,先将各目标模块及所需的库函数链接成一个完整的装配模块,以后不再拆开在将这几个目标模块装配成一个装入模块时,须解决以下两个问题 对相对地址进行修改 变换外部调用符号,Page 23,2023/6/25,程序的链接,Page 24,2023/6/25,程序的链接,装入时动态链接(Loadtime Dynamic Linking)
10、将用户的源程序编译后所得的一组目标模块在装入内存时采用边装入边链接的方式便于修改和更新 便于实现对目标模块的共享,Page 25,2023/6/25,程序的链接,Page 26,2023/6/25,程序的链接,运行时动态链接(Run-time Dynamic Linking)应用程序在每次运行的模块可能不相同运行时动态链接方式将对某些模块的链接推迟到执行时才进行,即在执行过程中,当发现一个被调用模块尚未装入内存时,立即由OS去找到该模块并将之装入内存,把它链接到调用者模块上凡在执行过程中未被用到的目标模块,都不会被调入内存和被链接到装入模块上,这样不仅可加快程序的装入过程,而且可节省大量的内存
11、空间,Page 27,2023/6/25,Page 28,2023/6/25,第四章 存储器管理,程序的装入和链接 连续分配方式 基本分页存储管理 基本分段存储管理虚拟存储器的基本概念请求分页存储管理方式页面置换算法请求分段存储管理方式,Page 29,2023/6/25,连续分配方式,单一连续分配固定分区分配动态分区分配可重定位分区分配对换(Swapping),Page 30,2023/6/25,单一连续分配,连续分配方式为一个用户程序分配一个连续的内存空间单一连续分配是最简单的一种存储管理方式,但只能用于单用户、单任务的操作系统中把内存分为系统区:OS使用,通常放在内存低址部分用户区:用户
12、可使用的全部内存空间存储器保护机构不健全,易造成系统破坏优点:易于管理缺点:对要求内存空间少的程序,造成内存浪费;程序全部装入,很少使用的程序部分也占用内存,Page 31,2023/6/25,单一连续分配,用户程序,位于,RAM,中的,操作系统,0,xFFF,.,0,位于,RAM,中的,操作系统,用户程序,0,ROM,中的,设备驱动程序,用户程序,位于,RAM,中的,操作系统,0,单一连续区存储管理,Page 32,2023/6/25,连续分配方式,单一连续分配固定分区分配动态分区分配可重定位分区分配对换(Swapping),Page 33,2023/6/25,固定分区分配,最简单的可运行多
13、道程序的存储管理方式内存用户空间划分为若干个固定大小的区域,每个分区中只装入一道作业划分分区的方法 分区大小相等:即使所有的内存分区大小相等太大:浪费太小:不够用 分区大小不等:划分为多个大、中、小搭配的分区根据程序大小决定所使用的分区 大班在大教室、小班在小教室,Page 34,2023/6/25,内存分配 分区的信息根据分区使用表管理,固定分区分配,20,使用界地址寄存器采用静态重定位,问题:并发进程数受分区个数的制约!出现:有内存却不能运行程序或大进程无法运行!,Page 35,2023/6/25,连续分配方式,单一连续分配固定分区分配动态分区分配可重定位分区分配对换(Swapping)
14、,Page 36,2023/6/25,动态分区分配,根据进程的实际需要,动态地为之分配内存空间分配中数据结构 空闲分区表 记录每个空闲分区的情况空闲分区链 实现对空闲分区的分配和链接,Page 37,2023/6/25,动态分区分配,分区分配算法 首次适应算法FF 循环首次适应算法最佳适应算法最差适应算法,Page 38,2023/6/25,动态分区分配,分区分配算法 首次适应算法FF 空闲分区链以地址递增顺序链接分配时从链首开始查找,找到一个大小可满足的空闲分区,划出一块给请求者优点:简单;优先利用低地址空闲区,保留高地址大空闲区缺点:会造成在低地址部分很多难以利用的小空闲分区,查找效率低循
15、环首次适应算法每次分配时从上一次找到空闲分区的下一个空闲区开始查找优点:减少查找空闲分区开销,空闲分区分布更均匀缺点:缺乏大的空闲区,Page 39,2023/6/25,动态分区分配,最佳适应算法空闲区按容量由小到大排序每次分配时,把能满足要求、又是最小的分区分配给作业优点:不缺乏大的空闲区缺点:会在存储器中留直许多难以利用的小分区“零头(或碎片)”;查找效率低最差适应算法空闲区按容量由大到小排序每次分配时,把能满足要求、又是最大的分区分配给作业优点:剩余的空间最大化,不出现太小的“零头”缺点:缺乏大的空闲区,首次适应被认为最好、最快,其次是循环,最佳最差(每次分配后剩下小碎片,难再分,不得不
16、经常压缩内存,反而浪费CPU),Page 40,2023/6/25,动态分区分配,分区分配操作 分配内存,解决碎片问题,Page 41,2023/6/25,动态分区分配,分区分配操作 回收内存进程运行结束释放内存时,系统根据回收区的首地址,把它插入到空闲链表中。根据回收区的位置,有四种情况需处理:回收区与插入点的前一个空闲分区相邻接回收区与插入点的后一个空闲分区相邻接 回收区同时与插入点的前、后两个分区相邻接回收区不与任何空闲区邻接,Page 42,2023/6/25,动态分区分配,Page 43,2023/6/25,2)回收内存,回收区,F1,F2,回收区,F2,回收区,F1,回收区,回收区
17、,Page 44,2023/6/25,动态分区分配,碎片问题经过一段时间的分配回收后,内存中存在很多很小的空闲块。它们每一个都很小,不足以满足分配要求;但其总和满足分配要求。这些空闲块被称为碎片造成存储资源的浪费碎片问题的解决紧凑技术:通过在内存移动程序,将所有小的空闲区域合并为大的空闲区域(紧缩技术,紧致技术,浮动技术,搬家技术)问题:开销大;移动时机,Page 45,2023/6/25,动态分区分配,分区式存储管理的优缺点 优点:便于动态申请内存 便于共享内存 便于动态链接 缺点:碎片问题(外碎片),要求连续的内存空间,内存利用率不高,受实际内存容量限制,Page 46,2023/6/25
18、,连续分配方式,单一连续分配固定分区分配动态分区分配可重定位分区分配对换(Swapping),Page 47,2023/6/25,可重定位分区分配,动态重定位的引入连续分配存在的问题必须有足够大的连续空间才能分配解决方法:“拼接”或“紧凑”的引入,Page 48,2023/6/25,可重定位分区分配,动态重定位的实现作业装入内存后的所有地址仍是相对地址,将相对地址转换成物理地址的工作在指令执行时进行需要有硬件地址变换机构的支持,Page 49,2023/6/25,可重定位分区分配,动态重定位分区分配算法在一个分区释放后立即移动当请求得不到满足时再移动,Page 50,2023/6/25,可重定
19、位分区分配,可重定位分区的优缺点优点:解决了可变分区分配所引入的“外零头”问题。消除内存碎片,提高内存利用率。缺点:提高硬件成本,紧凑时花费时间。,Page 51,2023/6/25,可重定位分区分配,多重分区即一个程序可以占据主存中不连续的多个分区可以解决碎片问题支持结构化程序设计,操作系统往往把一道作业分成若干片段如子程序、主程序、数据组等。需要硬件支持(多对界地址寄存器,重定位寄存器)管理复杂,Page 52,2023/6/25,可重定位分区分配,多重分区,Page 53,2023/6/25,分区的保护 为了防止一道作业有意或无意地破坏操作系统或其它作业。一般说来,没有硬件支持,实现有效
20、的存储保护是困难的。通常采取:界限寄存器方式保护键方式两种措施,或二者兼而有之。,可重定位分区分配,Page 54,2023/6/25,保护过程防止地址越界 一般由硬件提供一对寄存器:基址寄存器:存放起始地址 限长寄存器:存放长度(上界寄存器/下界寄存器),可重定位分区分配,Page 55,2023/6/25,界限寄存器保护60K 访问地址=124K 则产生访问地址界中断,可重定位分区分配,Page 56,2023/6/25,基址、限长寄存器保护相对地址 限长寄存器的值则产生访问地址界中断,可重定位分区分配,Page 57,2023/6/25,防止操作越权 对于允许多个进程共享的存储区域,每个
21、进程都有自己的访问权限。如果一个进程对共享区域的访问违反了权限规定,则发生操作越权 即读写保护,可重定位分区分配,Page 58,2023/6/25,保护键方式,可重定位分区分配,Page 59,2023/6/25,连续分配方式,单一连续分配固定分区分配动态分区分配可重定位分区分配对换(Swapping),Page 60,2023/6/25,对换(Swapping),对换的引入 所谓“对换”,是指把内存中暂时不能运行的进程或者暂时不用的程序和数据,调出到外存上,以便腾出足够的内存空间,再把已具备运行条件的进程或进程所需要的程序和数据,调入内存。对换是提高内存利用率的有效措施如果对换是以整个进程
22、为单位,称为“整体对换”或“进程对换”如果对换是以“页”或“段”为单位进行的,则称为“页面对换”或“分段对换”,又统称为“部分对换”,Page 61,2023/6/25,对换(Swapping),对换空间的管理外存中对换区主要存放从内存中换出的进程,对换空间管理的主要目标是提高进程换入和换出的速度对换区中空闲盘块的管理:在系统中配置相应的数据结构,记录外存的使用情况。形式与内存在动态分区分配方式中所用数据结构相似,即用空闲分区表或空闲分区链。在空闲分区表中的每个表目中应包含两项,即对换区的首址及其大小,它们的单位是盘块号和盘块数对换区的分配采用连续分配方式,分配算法可以是首次适应算法、循环首次
23、适应算法或最佳适应算法,Page 62,2023/6/25,对换(Swapping),进程的换出与换入进程的换出系统先选择处于“阻塞”状态且优先级最低的进程作为换出进程,然后启动盘块,将该进程的程序和数据传送到磁盘的对换区上。若传送未出现错误,便回收其所占用的内存空间,并对该进程的进程控制块做相应的修改进程的换入系统应定时地查看所有进程的状态,从中找出“就绪”状态但已换出的进程,将其中换出时间(换出到磁盘上)最久的进程作为换入进程,将之换入,直至已无可换入的进程或无可换出的进程为止,Page 63,2023/6/25,第四章 存储器管理,程序的装入和链接 连续分配方式 基本分页存储管理 基本分
24、段存储管理虚拟存储器的基本概念请求分页存储管理方式页面置换算法请求分段存储管理方式,Page 64,2023/6/25,基本分页存储管理,页面与页表地址变换机构两级和多级页表,Page 65,2023/6/25,离散分配方式,连续分配方式要求为一个进程分配连续的内存空间,会形成许多“碎片”,尽管采用“紧凑”技术可以解决这个问题,但要为移动大量信息花去不少的处理机时间,代价较高如果允许一个进程直接分散地装入到许多不相邻接的分区中,称为离散分配方式离散分配方式有分页存储管理方式和分段存储管理方式分页:把用户程序按逻辑页划分成大小相等的部分,称为页或虚页。从0开始编制页号,页内地址是相对于0编址。,
25、Page 66,2023/6/25,页面与页表,页面页面和物理块页面:将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页,并加以编号,从0开始编制页号,页内地址是相对于0编址。物理块:内存按页的大小划分为大小相等的区域,称为物理块(物理页面,页框(frame),帧),同样加以编号,如0块、1块等等在为进程分配内存时,以块为单位将进程中的若干个页分别装入到多个可以不相邻接的物理块中。由于进程的最后一页经常装不满一块而形成了不可利用的碎片,称之为“页内碎片”,Page 67,2023/6/25,页面与页表,页面页面大小页面的大小应选择的适中,且页面大小应是2的幂,通常为512 B8 KB
26、页面若太小,虽然可使内存碎片减小,从而减少了内存碎片的总空间,有利于提高内存利用率,但也会使每个进程占用较多的页面,从而导致进程的页表过长,占用大量内存;此外,还会降低页面换进换出的效率如果选择的页面较大,虽然可以减少页表的长度,提高页面换进换出的速度,但却又会使页内碎片增大。,Page 68,2023/6/25,页面与页表,地址结构 分页地址中的地址结构如下:,31,12,11,0,对某特定机器,其地址结构是一定的。若给定一个逻辑地址空间中的用户程序地址为A,页面的大小为L,则页号P和页内地址d可按下式求得:,下取整,Page 69,2023/6/25,页面与页表,例:系统页面大小为1KB,
27、逻辑地址为2170,求页号与页内偏移量页号 P=INT2170/1024=2页内偏移量d=2170 mod 1024=122第0页 01023第1页 10242047第2页 20483071表示为(2,122),Page 70,2023/6/25,页面与页表,主存分配把用户程序的任一页分配到内存中的任一物理块,从而实现非连续的内存分配。问题如何管理、如何进行地址变换。,Page 71,2023/6/25,页面与页表,页表分页系统中,将进程的每一页离散地存储在内存的任一物理块中,为每个进程建立一张页面映像表,简称页表,作用:实现页号到物理块号的映射,Page 72,2023/6/25,页面与页表
28、,页表列出了用户程序的逻辑地址与其在主存中的物理地址间的对应关系。一个页表中包含若干个表目,表目的自然序号对应于用户程序中的页号,表目中的块号是该页对应的物理块号。页表的每一个表目除了包含指向页框的指针外,还包括一个存取控制字段。表目也称为页描述子。,Page 73,2023/6/25,页面与页表,Page 74,2023/6/25,基本分页存储管理,页面与页表地址变换机构两级和多级页表,Page 75,2023/6/25,地址变换机构,基本地址变换机构实现从逻辑地址到物理地址的转换,将逻辑地址中的页号转换为内存中的物理块号,通过页表来完成页表的实现寄存器:变换速度快、成本高,适应小型系统。页
29、表驻留在内存:速度较低、成本低,适应大系统。页表大多驻留在内存中,在系统中设置页表寄存器PTR(Page Table Register),在其中存放页表在内存中的始址和页表的长度进程未执行时,页表的始址和页表长度存放在本进程的PCB中,当调度程序调度到某进程时,才将这两个数据装入页表寄存器,Page 76,2023/6/25,地址变换机构,地址结构例如:32位地址,011为偏移量,1231为页号,最大可以有1M(220)页,每页4KB(212)。,31,12,11,0,Page 77,2023/6/25,地址变换机构,Page 78,2023/6/25,地址变换机构,地址变换过程,指令 LOA
30、D 1,2500 的地址变换过程(块大小为1024B),Page 79,2023/6/25,地址变换过程把虚拟地址2500转换成页号P=2,位移量W=452;如果页号2大于页表大小,则中断;否则继续;页号2与页表起址1000运算(1000+2*20,设页描述子大小为20)得到页描述子地址为1040;从页描述子中读取块号8;根据页描述子的“存取控制”判断该指令是否被允许访问内存,如果不允许,则中断;否则继续;块号8与位移量452运算(8*1024+452=9644,1024为页面大小)得到物理地址9644;执行LOAD操作。,地址变换机构,Page 80,2023/6/25,地址变换机构,具有快
31、表的地址变换机构由于页表是存放在内存中,因此每次CPU存取一个数据要两次访问内存为提高地址变换速度,在地址变换机构中增设一个具有并行查询能力的高速缓冲寄存器,又称为“联想寄存器”(Associative Memory)或“快表”,用以存放当前访问的那些页表项快表通常可存放16-512个表项,如果设计得当,命中率可达90以上,Page 81,2023/6/25,地址变换机构,Page 82,2023/6/25,基本分页存储管理,页面与页表地址变换机构两级和多级页表,Page 83,2023/6/25,两级和多级页表,两级和多级页表 现代的大多数计算机系统,都支持非常大的逻辑地址空间(232264
32、)。在这样的环境下,页表就变得非常大,要占用相当大的内存空间例如,对于一个具有32位逻辑地址空间的分页系统,若规定页面大小为4 KB即212 B,则在每个进程页表中的页表项可达1M(220)个之多。若每个表项占用4个字节(32bit),故每个进程仅仅其页表就要占用4 MB的内存空间,而且还要求是连续的,31,12,11,0,Page 84,2023/6/25,两级和多级页表,可以采用这样两个方法来解决这一问题 采用离散分配方式来解决难以找到一块连续的大内存空间的问题 只将当前需要的部分页表项调入内存,其余的页表项仍驻留在磁盘上,需要时再调入,Page 85,2023/6/25,两级和多级页表,
33、两级页表(Two-Level Page Table)可利用将页表分页,并离散地将各个页面分别存放在不同的物理块中,同样要为离散分配的页表再建立一张页表,称为外层页表(Outer Page Table),每个页表项中记录了页表页面的物理块号,210=1024,210=1024,212=4KB,Page 86,2023/6/25,两级和多级页表,两级页表结构,每个物理块为4KB,恰好放一个1页页表(1024个项,每项4BYTE),共需1024个这样的块,Page 87,2023/6/25,两级和多级页表,具有两级页表的地址变换机构,Page 88,2023/6/25,两级和多级页表,多级页表对于3
34、2位的机器,采用两级页表结构是合适的;但对于64位的机器,如果页面大小仍采用4 KB即212 B,那么还剩下52位,假定仍按物理块的大小(212位)来划分页表,则将余下的42位用于外层页号。此时在外层页表中可能有4096 G个页表项,要占用16384 GB的连续内存空间。必须采用多级页表,将外层页表再进行分页,也是将各分页离散地装入到不相邻接的物理块中,再利用第2级的外层页表来映射它们之间的关系,Page 89,2023/6/25,具有64位地址的分页存储管理,242=4096G,210=1024,212=4KB,64,两级和多级页表,对于64位的计算机,如果要求它能支持264(=184474
35、4 TB)规模的物理存储空间,则即使是采用三级页表结构也是难以办到的;而在当前的实际应用中也无此必要,Page 90,2023/6/25,第四章 存储器管理,程序的装入和链接 连续分配方式 基本分页存储管理 基本分段存储管理虚拟存储器的基本概念请求分页存储管理方式页面置换算法请求分段存储管理方式,Page 91,2023/6/25,基本分段存储管理,分段存储管理方式的引入分段系统的基本原理信息共享段页式存储管理方式,Page 92,2023/6/25,基本分段存储管理,不便于信息共享、保护、动态增长和链接,Page 93,2023/6/25,分段存储管理方式的引入,分页存储管理的主要目的是为了
36、提高内存利用率分段存储管理的主要目的是为了满足用户在编程和使用上的要求分段管理的主要目的方便编程 用户作业通常按逻辑关系分若干个段LOAD 1,A|;STORE 1,B|;信息共享 程序与数据的共享是以信息的逻辑单位为基础信息保护 动态增长动态链接,Page 94,2023/6/25,基本分段存储管理,分段存储管理方式的引入分段系统的基本原理信息共享段页式存储管理方式,Page 95,2023/6/25,分段系统的基本原理,分段分段存储管理方式中,作业的地址空间被分成若干个段(segment),每个段定义了一组逻辑信息分段地址中的地址具有如下结构分段方式已得到许多编译程序的支持,31 16 1
37、5 0,Page 96,2023/6/25,分段系统的基本原理,段表在分段式存储管理系统中,为每个分段分配一个连续的分区,而进程中的各个段可以离散地移入内存中的不同的分区中系统为每个进程建立一张段映射表,简称为“段表”每个段在段表中占一个表项,其中记录了该段在内存中的起始地址(又称为“基址”)和段的长度,Page 97,2023/6/25,分段系统的基本原理,段表 它记录了段号,段的首(地)址和长度之间的关系 每一个程序设置一个段表,放在内存,属于进程的现场信息,Page 98,2023/6/25,分段系统的基本原理,利用段表实现地址映射,Page 99,2023/6/25,分段系统的基本原理
38、,硬件支持系统设置一对寄存器段表始址寄存器 用于保存正在运行进程的段表的始址段表长度寄存器 用于保存正在运行进程的段表的长度,Page 100,2023/6/25,分段系统的基本原理,Page 101,2023/6/25,段表始址寄存器,段表长度寄存器,逻辑地址,Page 102,2023/6/25,分段系统的基本原理,分页和分段的主要区别,Page 103,2023/6/25,基本分段存储管理,分段存储管理方式的引入分段系统的基本原理信息共享段页式存储管理方式,Page 104,2023/6/25,信息共享,分段存储的一个优点是易于实现段的共享,即允许若干个进程共享一个或多个分段分页系统中虽
39、然也能实现程序和数据的共享,但远不如分段系统方便可重入代码(Reentrant Code)又称为“纯代码”(Pure Code)是一种允许多个进程同时访问的代码。可重入代码是一种不允许任何进程对它进行修改的代码,Page 105,2023/6/25,信息共享,Page 106,2023/6/25,信息共享,Page 107,2023/6/25,基本分段存储管理,分段管理的优缺点优点便于动态申请内存管理和使用统一化便于共享便于动态链接缺点产生碎片,段还需要连续的存储空间思考:与可变分区存储管理方案的相同点与不同点?,Page 108,2023/6/25,基本分段存储管理,分段存储管理方式的引入分
40、段系统的基本原理信息共享段页式存储管理方式,Page 109,2023/6/25,段页式存储管理方式,基本原理是分段和分页原理的结合将用户程序分成若干个段,再把每一段分成若干个页,并为每一段赋予一个段名段页式管理中,地址机构由段号、段内页号及页内地址三部分所组成,Page 110,2023/6/25,段页式存储管理方式,Page 111,2023/6/25,段页式存储管理方式,利用段表和页表实现地址映射,Page 112,2023/6/25,段页式存储管理方式,地址变换过程,Page 113,2023/6/25,第四章 存储器管理,程序的装入和链接 连续分配方式 基本分页存储管理 基本分段存储
41、管理虚拟存储器的基本概念请求分页存储管理方式页面置换算法请求分段存储管理方式,Page 114,2023/6/25,虚拟存储器的基本概念,交换与覆盖虚拟存储器的引入虚拟存储器的实现方法虚拟存储器的特征,Page 115,2023/6/25,虚拟存储器的基本概念,交换技术与覆盖技术是在多道环境下扩充内存的方法,用以解决在较小的存储空间中运行较大程序时遇到的矛盾覆盖技术主要用在早期的操作系统中交换技术被广泛用于小型分时系统中,交换技术的发展导致了虚存技术的出现,Page 116,2023/6/25,虚拟存储器的基本概念,交换与覆盖异同点共同点:进程的程序和数据主要放在外存,当前需要执行的部分放在内
42、存,内外存之间进行信息交换不同点:如何控制交换?,Page 117,2023/6/25,虚拟存储器的基本概念,覆盖技术把程序划分为若干个功能上相对独立的程序段,按照其自身的逻辑结构将那些不会同时执行的程序段共享同一块内存区域程序段先保存在磁盘上,当有关程序段的前一部分执行结束,把后续程序段调入内存,覆盖前面的程序段(内存“扩大”了)覆盖:一个作业的若干程序段,或几个作业的某些部分共享某一个存储空间一般要求作业各模块之间有明确的调用结构,程序员要向系统指明覆盖结构,然后由操作系统完成自动覆盖,Page 118,2023/6/25,虚拟存储器的基本概念,覆盖技术的缺点对用户不透明,增加了用户负担目
43、前这一技术用于小型系统中的系统程序的内存管理上MS-DOS的启动过程中,多次使用覆盖技术;启动之后,用户程序区TPA的高端部分与COMMAND.COM暂驻模块也是一种覆盖结构,Page 119,2023/6/25,虚拟存储器的基本概念,交换技术 当内存空间紧张时,系统将内存中某些进程暂时移到外存,把外存中某些进程换进内存,占据前者所占用的区域,这种技术是进程在内存与外存之间的动态调度。多用于分时系统中,Page 120,2023/6/25,虚拟存储器的基本概念,交换技术实现中的几个问题选择原则:将哪个进程换出内存?交换时机的确定交换时需要做哪些工作?换入内存时位置的确定,Page 121,20
44、23/6/25,虚拟存储器的基本概念,选择原则将哪个进程换出内存?例子:分时系统,时间片轮转法或基于优先数的调度算法,在选择换出进程时,要确定换出的进程是要长时间等待的需要特殊考虑的是:任何等待I/O进程中存在的问题解决:从来不换出处于等待I/O状态的进程,有些I/O进程因DMA(直接存储器访问)而不能换出内存或换出前需要操作系统的特殊帮助,Page 122,2023/6/25,虚拟存储器的基本概念,交换时机的确定何时需发生交换?例子:只要不用就换出(很少再用)只在内存空间不够或有不够的危险时换出,Page 123,2023/6/25,虚拟存储器的基本概念,交换时需要做哪些工作 盘交换区:足够
45、大,存放所有用户程序的所有内存映像的拷贝直接存取:必须能够对这些用户程序的内存映像进行存取操作,Page 124,2023/6/25,虚拟存储器的基本概念,换入内存时位置的确定换出后再换入的内存位置一定要在换出前的原来位置上吗?受地址“绑定”技术的影响,即绝对地址产生时机的限制,Page 125,2023/6/25,虚拟存储器的基本概念,覆盖与交换的比较与覆盖技术相比,交换技术不要求用户给出程序段之间的逻辑覆盖结构;而且,交换发生在进程或作业之间而覆盖发生在同一进程或作业内。覆盖只能覆盖那些与覆盖段无关的程序段,Page 126,2023/6/25,虚拟存储器的基本概念,交换与覆盖虚拟存储器的
46、引入虚拟存储器的实现方法虚拟存储器的特征,Page 127,2023/6/25,虚拟存储器的基本概念,连续分配,离散分配,(基本)分页,(基本)分段,段页式,方便程序装入提高内存利用率,Page 128,2023/6/25,虚拟存储器的引入,程序装入内存时可能会出现如下问题程序太大,要求的空间超出了内存总容量有大量作业要求运行,但内存不能容下所有作业程序暂时不执行或运行完是否还要占用内存常规存储器管理方式的特征一次性要求作业全部装入内存才能运行驻留性程序装入内存后便一直驻留内存,直至运行结束,许多不用或暂时不用的程序占用了大量内存空间,而其他程序却无法装入!是否必要?,Page 129,202
47、3/6/25,虚拟存储器的引入,局部性原理1968年,Denning.P指出 程序执行时,除了少部分的转移和过程调用指令外,在大多数情况下仍是顺序执行的过程调用将会使程序的执行轨迹由一部分区域转至另一部分区域,但经研究看出,过程调用的深度在大多数情况下都不超过5程序中存在许多循环结构,这些虽然只由少数指令构成,但是它们将多次执行程序中还包括许多对数据结构的处理,如对数组进行操作,它们往往都局限于很小的范围内,Page 130,2023/6/25,虚拟存储器的引入,局限性又表现在下述两个方面时间局限性如果程序中的某条指令一旦执行,则不久以后该指令可能再次执行如果某数据被访问过,则不久以后该数据可
48、能再次被访问典型原因是因在程序中存在着大量循环操作空间局限性一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址,可能集中在一定的范围之内,其典型情况便是程序的顺序执行,Page 131,2023/6/25,虚拟存储器的引入,虚拟存储器的基本思想是:程序、数据、堆栈的大小可以超过内存的大小,操作系统把程序当前使用的部分保留在内存,而把其它部分保存在磁盘上,并在需要时在内存和磁盘之间动态交换虚拟存储器支持多道程序设计技术,Page 132,2023/6/25,虚拟存储器的引入,虚拟存储器定义是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充
49、的一种存储器系统。其逻辑容量由内存容量和外存容量之和所决定,其运行速度接近于内存速度,而其成本却又接近于外存。,Page 133,2023/6/25,虚拟存储器的引入,注意:一个虚拟存储器的最大容量是由计算机的地址结构确定的。如:若CPU的有效地址长度为32位,则程序可以寻址范围是0(232)-1,即虚存容量为 4GB。虚拟存储器的容量与主存的实际大小没有直接的关系,而是由主存与辅存的容量之和所确定。,Page 134,2023/6/25,虚拟存储器的基本概念,交换与覆盖虚拟存储器的引入虚拟存储器的实现方法虚拟存储器的特征,Page 135,2023/6/25,虚拟存储器的实现方法,虚拟存储器
50、的实现都是建立在离散分配的存储管理方式基础上的主要有请求分页系统请求分段系统,Page 136,2023/6/25,虚拟存储器的实现方法,请求分页系统在分页系统的基础上增加了请求调页功能和页面置换功能硬件支持请求分页的页表机制,它是在纯分页的页表机制上增加若干项而形成的,作为请求分页的数据结构;缺页中断机构,即每当用户程序要访问的页面尚未调入内存时 便产生一缺页中断,以请求OS将所缺的页调入内存;地址变换机构,它同样是在纯分页地址变换机构的基础上发展形成的实现请求分页的软件用于实现请求调页的软件和实现页面置换的软件,Page 137,2023/6/25,虚拟存储器的实现方法,请求分段系统在分段