计算机操作系统第五章-存储管理_第1页
计算机操作系统第五章-存储管理_第2页
计算机操作系统第五章-存储管理_第3页
计算机操作系统第五章-存储管理_第4页
计算机操作系统第五章-存储管理_第5页
已阅读5页,还剩131页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机操作系统(2015版) 讲 授: Email: Tel: 福州大学数学与计算机科学学院福建省网络计算与智能信息处理重点实验 第5章 存储管理5.1 存储管理概述5.2 分区存储管理5.3 覆盖与交换技术5.4 页式管理5.5 段式与段页式管理5.6 局部性原理和抖动问题课时:6.0 存储器是计算机系统的重要资源之一,存储管理直接影响系统性能。 存储管理的功能: 主存储空间的分配和去配 地址转换和存储保护 主存储空间的共享 主存储空间的扩充5.1 存储管理概述 存储器层次 计算机采用多层次存储系统,以求在容量、速度、价格等方面获得良好效果。 存储器可分为寄存器(register)、高速缓存

2、(cache)、主存储器(memory)、磁盘缓存(disk cache)、固定磁盘(disk)、可移动存储介质(CD、USB)等。5.1 存储管理概述5.1 存储管理概述寄存器CACHE主 存盘CACHE磁 盘磁 带其他外存速 度快慢容 量小大价 格高低 存储器层次 寄存器是访问速度最快但最昂贵的存储器,容量小。一个计算机系统可包括几十个甚至上百个寄存器,用于加速存储访问速度。如存放操作数、地址等。 高速缓存Cache稍大,其访问速度快于主存储器,利用它存放主存中一些经常访问的信息可以大幅度提高程序执行速度。5.1 存储管理概述 存储器层次 可执行的程序必须被保存在计算机的主存储器中,与外围

3、设备交换信息也依托于主存储器地址空间。 由于处理器在执行指令时主存访问时间远大于其处理时间,寄存器和高速缓存被引入来加快指令的执行。 5.1 存储管理概述 逻辑地址(相对地址) 目标程序中的地址是一个从0开始的地址,并不是内存的实际地址。 我们把用户目标程序使用的地址称为逻辑地址(相对地址)。 一个用户作业的目标程序的逻辑地址集合称为该作业的逻辑地址空间。 逻辑地址描述了程序设计和执行的逻辑关系。5.1 存储管理概述 逻辑地址(相对地址) 程序的逻辑地址空间可以是一维的,这时逻辑地址即为从0 开始顺序递增的一个地址序列。 逻辑地址也可以是二维(多维)的,即程序中的地址是不连续的。汇编语言程序

4、段式5.1 存储管理概述 物理地址(绝对地址) 我们把主存中的实际存储单元称为物理地址(绝对地址),物理地址的总体相应构成了用户程序实际运行的物理地址空间。 操作系统将内存分为系统区和用户区两个部分。5.1 存储管理概述 逻辑地址与物理地址的关系 某个当程序运行时,操作系统则分配一些地址空间,此时程序和数据的实际地址与原来程序中的逻辑地址并非是一致的。 CPU访问地址的只能是物理地址,因此,逻辑地址必须转换成正确的物理地址!5.1 存储管理概述 地址变换 memory map 把程序中逻辑地址转换为物理地址的工作称为地址转换或地址重定位、地址映射。 静态重定位:发生在作业执行前一次完成,多由软

5、件独立完成; 动态重定位:发生在程序执行过程中,通常借助于地址转换机构硬件与软件共同实现。5.1 存储管理概述5.1 存储管理概述逻辑地址空间物理地址空间03456.LOAD A 200.0100200300.LOAD A 2003456110012001300200VR+1000BR 基本思想 也称单用户分区,适用于单道系统。 将主存空间分为系统区和用户区,系统区存放OS常驻代码和数据,用户区全部归1个用户作业(进程)所占用。 在这种管理方式下,任一时刻主存中最多只有一道程序。 优缺点:管理方案简单;但仅适合于单道系统!内存利用率低!5.2 单一连续分区管理 分配与去配 把用户区整个分配给一

6、个作业,直至该专业执行完成,回收,并分配给另一个作业。 一般无需特别的数据结构来实现分配与去配操作。 5.2 单一连续分区管理 地址转换 多采用静态重定位,由装入程序完成。 设置1个栅栏寄存器(fence register)保存用户区起始地址S,则地址转换公式为: 物理地址= S +逻辑地址 也可以采用动态重定位。 5.2 单一连续分区管理 访问保护 由装入程序检查其计算得到的绝对地址是否越过栅栏地址。 满足则装入,否则产生错误不装入。5.2 单一连续分区管理 基本思想 系统将用户区固定划分成若干个大小不等或相等的区域,1个分区装入1个作业,可实现多道程序设计技术。也称静态分区方式 运行中,分

7、区个数和大小不发生变化。 优缺点:适合于多道系统,支持多进程并发执行;但内存利用率不高。5.3 固定分区管理 分配与去配 设置一个分区说明表,每个分区登记为1个记录,主要内容为分区号、大小、起始地址、是否空闲等。 5.3 固定分区管理5.3 固定分区管理分区号始址长度标志015K23K未分配148K20KJ2280K30K未分配 分配与去配 分配:查找一个满足要求的空闲分区,修改占用标志,并将作业装入该分区。 去配:查找对应作业所占分区,修改其标志即可完成。 5.3 固定分区管理 地址转换 多采用静态重定位,也是由装入程序完成。 物理地址=逻辑地址+分区起始地址 也可采用动态重定位方式5.3

8、固定分区管理 地址转换 设置一对上限/下限寄存器或基址/限长寄存器,分别保存当前进程所在分区的起始地址、末址或分区长度。 地址转换公式: 物理地址=逻辑地址+下限(基址)寄存器地址 5.3 固定分区管理 访问保护 将绝对地址和上限/下限寄存器中保存的相应地址进行比较,即可实现存储保护。 5.3 固定分区管理 基本思想 也称可变分区法。系统将用户分区初始化为一个连续用户空闲区,分配时分割空闲区,划分出一个与作业等大的空闲区分配。 随着作业的装入、回收,主存空间被分成多个分区,部分占用,部分空闲。5.4 动态分区管理 基本思想 具有以下特征: 内存不是预先划分好的; 作业装入时,若有足够空间,则按

9、需要分割分区给该进程;否则等待;5.4 动态分区管理 基本数据结构 设置空闲区表、已分配区表来记录内存分配情况。 分配:从空闲区表查找一个空闲分区,分割作业大小区域给作业,记为一个新分区,其余空闲部分为另一个空闲区; 修改空闲区表和已分配区表 5.4 动态分区管理空闲区表已分配区表始址长度标志15K23K未分配48K20K未分配80K30K未分配空空始址长度标志0K15KJ138K10KJ268K12KJ3110K10KJ40K15K38K48K68K80K110K120K 基本数据结构 去配:从已分配区表中找到对应栏,修改标志,并将空闲区信息登记到空闲区表中。5.4 动态分区管理空闲区表已分

10、配区表始址长度标志15K23K未分配48K20K未分配98K12K未分配空空始址长度标志0K15KJ138K10KJ268K12KJ3110K10KJ480K5KJ585K13KJ60K15K38K48K68K80K110K120K85K98K 基本数据结构 由于分区个数不定,采用空闲区链表是一种可行的空闲区管理方法。 每个空闲区保存本空闲长度及下一个空闲区的起始地址指针,系统设置1个第一块空闲区地址指针,即形成空闲区链表。 分配时,沿链查找并获得一个长度能满足申请要求的空闲区交给进程,再修改链表;归还时,把空闲区链入空闲区链表即可。 5.4 动态分区管理 基本数据结构 空闲区链表管理比空闲区

11、表格较为复杂,但其优点是链表自身不占用存储单元。5.4 动态分区管理 分配方法 动态分区时的分配方法有三种:最先适应法(first fit algorithm)最佳适应法(best fit algorithm)最坏适应法(worst fit algoriathm)5.4 动态分区管理 分配方法 (1) 最先适应法 该法一般空闲区按起始地址递增排列。 该算法的最大特点是查找简单快速,但需要按地址排序。 即找到第一个满足要求的低地址空闲区,分割分配。5.4 动态分区管理图5.11 最先适应算法5.4 动态分区管理 分配方法 (2) 最佳适应算法 通常按照空间从小到大的次序排序。 当用户作业或进程申

12、请一个空闲区时,从表头开始查找,找到第一个满足要求的空闲区时,即停止查找。 即找到那个满足大小且是最小的空闲区,分割分配。5.4 动态分区管理 分配方法 (3) 最坏适应算法 通常要求空闲区按其空间大小递减排序。 当用户作业或进程申请一个空闲区时,顺序查找到第一个满足要求的空闲区用来分配。 即找到那个满足大小且是最大的空闲区,分割并分配。5.4 动态分区管理 去配方法 为减少外部碎片(提高内存利用率)和满足大作业的装入,则回收内存时,必须考虑相邻空闲区域的合并! 可能的情况如下: 5.4 动态分区管理不同相邻空闲区的合并,如何处理?5.4 动态分区管理 不能被分配的无法利用的小空闲区称为碎片。

13、 内部碎片:位于已分配区域中,但未被作业充分使用。 外部碎片:它是一个空闲区域,未被分配,但由于容量很小,不能被再次分配。 碎片会造成存储资源的浪费!分析已有管理方案的碎片问题? 碎片问题“碎片”问题解决 紧凑技术:通过在内存移动程序,将所有小的空闲区域合并为大的空闲区域 (也称:紧缩技术,浮动技术,移动技术) 问题:开销大碎片问题 为什么外部多个碎片不能分配? 因为分区式管理属于连续分配方式,即1个作业占用的空间必须是连续的!? 连续/不连续 那么 采用不连续分配?如何解决?有何困难?问题分析分割作业,非连续存储在不同区域! 基本方法 页式管理 页式管理就是一种: 分割作业 + 非连续存储静

14、态页式管理 页式管理 将作业划分成若干个大小相同的页,不同的页非连续存储。 页较小,每个作业的碎片小于1个页面。 非连续方式不用移动即可实现大作业的装入,增加作业装入数量。静态页式管理 基本原理 首先将作业逻辑空间划分成若干个长度相等的区域,称为页(page)。 一般,页大小为1-4K,经过页划分之后,程序的连续逻辑地址变为:页号页内地址静态页式管理例如:若逻辑地址为10870,设页大小为4KB,则计算逻辑地址对应的页号和页内地址。 页号逻辑地址/4k=2 页内地址逻辑地址4k2678静态页式管理 基本原理 同时,把内存空间按页大小划分为片、块或页框(page frame)。 分配时,作业的1

15、个页装入内存的1个页框。 页和页框的对应关系保存在页表中,供地址转换时使用。静态页式管理 相关数据结构 (1) 页表:由页号、页框号等组成,保存在系统区。 页表的大小由作业长度决定,每个作业有1个对应页表。静态页式管理页 号页框号05176. 相关数据结构 (2) 请求表(作业表):系统设置1个作业表,保存每个作业的页表信息。 页表信息主要包括作业的请求页框数、页表起始地址、页表长度,整个系统1张请求表。 该表实现时,相关信息通常保存在进程的PCB中。静态页式管理静态页式管理 相关数据结构 (3) 存储页框表:即物理内存分配情况,包括空闲页框位置、空闲页框总数等,整个系统1张存储页框表。 实现

16、形式有位示图和空闲链表。 位示图:包含若干个字,每个字包含若干位,每位对应1个页框。1分配,0空闲。静态页式管理静态页式管理假设第0字第0位表示第0号页框,则:页面号字号*32+位号字号页框号/32位号页框号%32 相关数据结构 (3) 存储页框表: 另一种是采用空闲页框链,类似空闲区表链,一个页框包含指向下一个空闲页框的指针。 该方法不占据额外内存空间。静态页式管理 内存页框分配【1】计算作业的页框数,填入请求表中。【2】检查存储页框表是否剩余足够空闲页框数,有则分配页表空间,并将页表信息填入请求表的相应表项;否则等待。【3】依次检索得到空闲页框号,并与页号一一对应填入页表,建立作业的页表。

17、修改存储页框表的空闲页框总数。静态页式管理 内存页框分配【4】依次将作业的所有页装入对应的内存页框中。静态页式管理 内存页框回收 当进程执行完成后,由请求表得到其页表地址,由页表中的页框号计算得到其在存储页框表中的位置,修改位示图或加入空闲链表中,并更改空闲页框总数。静态页式管理 地址变换【1】系统把所调度执行的进程页表始址和长度从请求表中取出置入控制寄存器中。【2】由控制寄存器的页表始址,可以找到页表所在位置。【3】将逻辑地址通过地址变换机构转换为页号与页内地址的地址形式。静态页式管理静态页式管理页号页面号021328.01234560123456作业的地址空间页框(物理块)页号页表主存中页

18、框(物理块). 地址变换【4】查找页表,得到该页号所对应的页框号。 【5】将得到的页框号与页内地址,一起送到地址变换机构,计算得到物理内存。 即: 物理地址=页框号*页长+页内地址静态页式管理静态页式管理 地址变换 另外,由于页表在内存中,因此,取一个数据或指令至少要访问内存两次以上。 一次访问页表,用于地址转换; 另一次则是根据物理地址取数据或指令。 静态页式管理 地址变换 1)地址变换机构的使用; 2)增加一个高速联想存储器,称为快表。保存最常用的页表项,以提高查找速度。静态页式管理P页表地址越界L比较P=Lpp快表 B+页号 页内地址Pd物理地址页表地址寄存器页表长度寄存器逻辑地址带有快

19、表的地址映射机制 优缺点分析 优点:每个作业的碎片小于1个页面大小,内存利用率较高,不连续分配,有利于多道程序设计。 静态页式管理 优缺点分析缺点:静态页式管理同以前所有管理方式一样,仍然要求作业在执行前全部装入内存,因此作业大小一样受到实际最大内存大小限制!静态页式管理 大页表的处理问题 现代计算机可以支持232264 的逻辑地址空间,采用页式存储管理时,页表会相当大。 计算一个实例给你看!静态页式管理 大页表的处理问题 若系统使用232 逻辑地址空间的分页系统,且页面4KB(212)时,那么, 232 逻辑地址空间将由220个页组成,若每个页表项占用4B,则需要占用4MB内存空间存放页表。

20、 即占用: 4MB/4KB=1K (个页框)静态页式管理 多级页表结构 可见,页表的存储也要分页框,不连续,如何转换地址? 即多级结构页表。静态页式管理 多级页表结构 以二级页表结构为例,程序的页框不连续存放,需要有页框地址索引,该索引就是进程页框; 而由于进程页表又是不连续存放的多个页表页框,故这些页表页也需要页表页框地址索引,该索引就是页目录。 页目录存储在一个新的页框中。静态页式管理页目录地址目录位移页表位移页位移逻辑地址页表地址.页目录块号.页表代码或数据.内存块二级页表结构及地址映射+静态页式管理 Linux采用三级分页模式而不是两级,因为许多处理器(如康柏的Alpha,Sun的Ul

21、tra SPARC,Intel的Itanium)都采用64位结构的处理器。采用三级分页: 总目录PGD(Page Global Directory) 中间目录PMD(Page Middle Derectory) 页表PT(Page Table)静态页式管理反置页表反置页表的引入 在现代计算机系统中,通常允许一个进程的逻辑地址空间非常大,因此需要有许多的页表项,会占用大量的内存空间。 为了减少页表占用的内存空间,引入了反置页表。返回反置页表概念 反置页表中为每1个物理块记录1个页表项,并物理块编号排序,页表项的内容包括页号、所属进程标识符和特性等。地址变换 由进程标识符和页号,去检索反置页表。若

22、检索到对应页表项时,则该表项序号i即为对应物理块号,送到地址转换结构。返回 覆盖与交换技术是在多道环境下用来扩充内存的两种方法。 覆盖技术主要用在早期的操作系统中,而交换技术则在现代操作系统中仍具有较强的生命力。内存扩充-覆盖与交换技术 覆盖技术 覆盖技术是把程序划分为若干个程序段,让不同时执行的多个程序段共享同一块内存区。 通常,这些程序段都被保存在外存中,运行中根据需要,把不同程序段调入内存,覆盖原有程序段。 用户看来,好像内存扩大了,从而达到了内存扩充的目的。 但是:要求程序员给出各程序段!内存扩充-覆盖与交换技术 交换技术 多道程序环境或分时系统中,如果让这些等待中的进程继续驻留内存,

23、将会造成存储空间的浪费。因此,应该把处于等待状态的进程换出内存。 交换是先将内存中某程序或数据写入外存交换区,再从外存交换区中调入指定程序或数据。 交换通常是在进程或作业之间进行,而覆盖则在同一个作业或进程内进行。 交换技术应用广泛。内存扩充-覆盖与交换技术 引入原因 程序大于内存; 程序暂时不执行或运行完是否还要占用内存; 基本原理 系统把程序当前使用部分保留在内存,而把其它部分保存在磁盘上,在需要时在内存和磁盘之间动态交换。虚拟存储技术虚拟存储器:把内存与外存有机的结合起来使用,从而得到一个容量很大的“内存”,这就是虚存。 实现思想 当进程运行时,先将一部分程序装入内存,另一部分暂时留在外

24、存,当要执行的指令不在内存时,由系统自动完成将它们从外存调入内存工作。虚拟存储技术 实现目的 提高内存利用率 不足:以时间换空间!虚拟存储技术 动态页式管理是一种虚拟存储方式。 基本思想 在进程开始执行前,并不装入全部页,而是装入1个或0个页;执行时根据需要,动态装入其它页。 当访问页不在内存时,发生缺页中断,由中断处理程序负责页框申请、页框调度、交换调度、装入页框等任务。动态页式管理 基本思想 当内存已满,而要装入新页时,则须先淘汰某页,再装入。 动态页式管理页号标志位页框号外存地址访问位修改位新的页表: 页表 新增:外存地址、标志位(驻留位/中断位)、改变位、访问位等。 标志位:是否在内存

25、; 访问位:是否访问、访问时间或次数等; 修改位:是否被修改过;/换出时回写外存动态页式管理 缺页中断(Page Fault)处理 在地址映射过程中,在页表中发现所要访问的页不在内存,则产生缺页中断。 若内存有空闲块,则分配1个页框,并装入内存,并修改页表中相应页表项目的驻留位及相应的内存块号; 若内存没有空闲块,则要淘汰某页,若该页在内存期间被修改过,则要将其写回外存。动态页式管理 页框置换算法(页框调度) 置换算法选出一个合适的页(框)淘汰。(1)最佳页框算法(OPT) 淘汰后不再需要的或最远的将来才会用到的页。难实现(2)先进先出算法(FIFO) 选择内存中驻留时间最长的页淘汰,访问位保

26、存页的装入时间。简单,效率低动态页式管理 页框置换算法(页框调度)(3)最近最久未用算法(LRU) 选择最后一次访问时间距离当前最久的页淘汰,即淘汰最长时间没有使用的页。 访问位保存最近访问的时间。局部原理(4)最近最不常用算法(LFU) 选择最近访问次数最少的页淘汰; 访问位保存页框访问次数;软件复用 LFU、LRU算法实现有难度。动态页式管理例1:某程序在内存中分配三个页面,初始为空,页面走向为4,3,2,1,4,3,5,4,3,2,1,5,计算缺页次数页面淘汰算法-实例分析 FIFO 4 3 2 1 4 3 5 4 3 2 1 5 最迟: 4 3 2 1 4 3 5 5 5 2 1 1

27、4 3 2 1 4 3 3 3 5 2 2最早: 4 3 2 1 4 4 4 3 5 5 x x x x x x x x x 共缺页中断9次页面淘汰算法-实例分析 LRU 4 3 2 1 4 3 5 4 3 2 1 5 最新:4 3 2 1 4 3 5 4 3 2 1 5 4 3 2 1 4 3 5 4 3 2 1最早: 4 3 2 1 4 3 5 4 3 2 x x x x x x x x x x共缺页中断10次页面淘汰算法-实例分析 例2:某程序在内存中分配m页初始为空,页面走向为1,2,3,4,1,2,5,1,2,3,4,5。 当m=3,m=4时缺页中断分别为多少?用FIFO算法计算缺页

28、次数页面淘汰算法-实例分析m=3时,缺页中断9次m=4时,缺页中断10次注:FIFO页框淘汰算法会产生异常现象(Belady现象),即:当分配给进程的物理页框数增加时,缺页次数反而增加页面淘汰算法-实例分析(5)第二次机会(second chance)算法 在FIFO 算法基础上,增加一个“引用位”。 检查FIFO 队首页面的“引用位”,若是0,表示该页面既老又没有用,淘汰;若“引用位”是1,说明虽然它进入主存较早,但最近仍在使用。于是把它的“引用位”设置为0,并把这个页面移到队尾,把它看作是一个新调入的页,再给它一个机会。页面淘汰算法-实例分析(6)时钟页面替换算法(Clock Policy

29、) 利用队列构造 FIFO 队列,第二次机会页面调度算法将可能产生频繁的出队入队,实现代价较大。 因此,往往采用循环队列构造页面队列,这样就形成了一个类似于钟表面的环形表,队列指针则相当于钟表面上的表针,指向可能要淘汰的页面,这就是时钟页面替换算法的得名。页面淘汰算法-实例分析(6)时钟页面替换算法(Clock Policy) Clock与第二次机会算法本质上没有区别,仅仅是实现方法不同并作了改进,仍然要使用页表中的“引用位”,把作业已调入主存的页面链成循环队列,用一个指针指向循环队列中下一个将被替换的页面;页面淘汰算法-实例分析(6)时钟页面替换算法(Clock Policy) 页面首次装入

30、主存时,其引用位置 1; 当一个页面被访问时,其引用位置 1。 淘汰页面时,从指针当前指向的页面开始扫描循环队列,把引用位是1的页面置0,并跳过;把引用位是0的页面淘汰;页面淘汰算法-实例分析(1) 分配给进程的物理页框数(2) 选择的页框大小(3) 程序的编制方法(4) 页框淘汰算法影响缺页次数的因素例3:初始时第1页在内存;页面大小为128个整数;矩阵A128X128按行存放:程序编制方法1: For j:=1 to 128 For i:=1 to 128 Ai,j:=0;程序编制方法2: For i:=1 to 128 For j:=1 to 128 Ai,j:=0;影响缺页次数的因素颠

31、簸(抖动): 在虚拟存储系统中,由于过量的页框调度,系统难以有效工作,系统效率急剧下降,该现象称为颠簸或抖动(Thrashing)。原因:页框淘汰算法不合理; 分配给进程的物理页框数太少;抖动现象 存储保护 页式管理可以为内存提供两种方式的保护。 地址越界保护:由地址变换机构中的控制寄存器的值页表长度和所要访问的虚地址相比较来完成。 页表存取控制:在页表中增加相应的保护位即可。读、写等动态页式管理 动态页式的优缺点 优点: (1) 页式管理不连续分配存储,更好解决了碎片问题。 (2) 动态页式采用虚存方式,扩大了存储空间。既提高了主存利用率,又有利于组织多道程序执行。动态页式管理 页式管理的优

32、缺点 缺点: (1) 要求相应硬件支持。如MMU等; (2) 增加了系统开销,如缺页中断处理、页面调度算法等; (3) 页面调度若不当,可能产生抖动现象。 (4) 如果页面较大 ,则可能会浪费较多内存.动态页式管理 工作集模型 为了充分共享系统资源,当然主存中的作业数目越多越好。 但是,为了保证CPU实际处理效率,应该限制作业数目,以避免可能出现的抖动现象,较少进程调度所花费的额外时间。 因此,提出了一种所谓“工作集模型”,更好解决上述平衡问题。动态页式管理 工作集概念 “为确保每个进程能正常执行下去,在内存中必须有的最少页框数”; “在未来的时间间隔内,一个进程运行时所需访问的页框集”。 从

33、程序局部性原理可知,随着作业的执行,工作集不断变化,所包含的页面数时而增多,时而减少。动态页式管理 工作集的确定 当一个进程刚开始执行时,随着进程访问新页面,逐渐构造工作集; 根据局部性原理,进程最终会稳定在页面的某个集合上,这就是稳定期; 而随后的过渡期表明进程向一个新的局部转移。动态页式管理 工作集的变化 在操作系统实现时,系统确定一个进程最小和最大工作集页面数。 当进程实际占用页面数在该范围内时,不发生页面调度,直接分配装入; 只有当进程占用页面数达到最大工作集时,才会发生页面调度。计算不属于工作集的页框 P118-121 动态页式管理 地址映射 基本同静态页式管理。 地址转换由称为主存

34、管理单元MMU(Memory Management Unit),接受虚拟地址作为输入,物理地址作为输出,直接送到总线上,对内存单元进行寻址。动态页式管理动态页式管理 引入原因 分区式管理和页式管理时的进程地址空间结构都是线性的,即源程序进行编译、链接时,按线性空间的一维地址顺序进行。 这使得不同作业或进程之间共享公用子程序和数据变得非常困难。 另外,页式管理的页大小和页的划分由OS自动完成,用户无权干预。段式管理 基本思想 用户把程序按内容或过程(函数)关系分成段。 一个进程所包含的段对应于二维线性虚拟空间。 段式管理以段为单位分配内存。 和页式管理时一样,段式管理可以采用虚拟存储器。段式管理

35、 段式虚存空间 段式管理把一个进程的虚地址空间设计成二维结构,即段号s 与段内相对地址w。 段式管理中的段号与段号之间无顺序关系。段的划分长度是不固定的。每个段定义一组逻辑上完整的程序或数据。 例如,一个进程中的程序和数据可被划分为主程序段、子程序段、数据段与工作区段。段式管理 段式虚存空间 每个段是一个首地址为零的、连续的一维线性空间。 段长可动态增长。 对段式虚地址空间的访问包括两个部分: 段名和段内地址。 段式管理 段式虚存空间 实质上,段式管理就是可变分区的一种变形,用户将作业划分为若干段,即可分配若干不连续的分区中。段式管理 内存分配与释放 段式管理中以段为单位分配内存,每段分配一个

36、连续的内存区。 同一进程所包含的各段之间不要求连续。 段式管理的内存分配与释放内存的策略基本同动态分区管理。段式管理 段式管理的地址变换 (1) 段表(segment mapping table) 和页式管理方案类似,段式管理程序在进行初始内存分配之前,首先根据用户要求的内存大小为一个作业或进程建立一个段表,以实现动态地址变换和缺段中断处理及存储保护等。段式管理段式管理段表基本信息段号内存始址段长050K10KB160K3KB270K5KB3120K8KB4150K4KB段式地址变换过程段式管理 段式管理的优缺点 (1)段式管理为用户提供了一个二维的虚地址空间,反映了程序的逻辑结构,有利于段的动态增长以及共享和内存保护等,这大大地方便了用户。(2)和页式管理一样,段式管理也可以采用内外存统一管理的虚存实现。(3)在段式管理中,段长可根据需要动态增长。段式管理 段式管理的优缺点 但是,段式管理要求更多的硬件支持,提高了机器成本; 另外,该管理方式与可变分区式相同,易产生碎片问题; 再者,允许段的动态增长也会给系统管理带来一定的难度和开销。 请求段式管理自学。段式管理1、页是信息的物理单位,分页是为实现离散分配方式,以消减内存的外零头,提高内存的利用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论