操作系统四版课件3_第1页
操作系统四版课件3_第2页
操作系统四版课件3_第3页
操作系统四版课件3_第4页
操作系统四版课件3_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

第3章存储管理3.13.23.3本章讲述内容:3.4存储管理综述;

固定分区存储管理;可变分区存储管理;分页式存储管理;3.5分段式存储管理;3.6虚拟存储与请求页式存储管理。问题1:下列存储设备可以被CPU直接访问的访问的是()。A.内存储器B.高速缓冲存储器C.硬盘

D.光盘

E.寄存器F.磁盘G.磁带问题2:不能被CPU直接访问的设备上的数据,怎么才能被CPU处理?在操作系统中,把负责管理内存储器的那部分程序,称为存储管理。基本概念内存储器(简称内存、主存、物理存储器)处理机能直接访问的存储器。用来存放系统和用户的程序和数据,其特点是存取速度快,存储方式是以新换旧,断电信息丢失。外存储器(简称外存、辅助存储器)处理机不能直接访问的存储器。用来存放用户的各种信息,存取速度相对内存而言要慢得多,但它可用来长期保存用户信息。在文件系统中介绍。存储器分类指导思想:利用辅存(如磁盘、磁带等)提供的大容量存储空间,存放准备运行的程序和数据,当需要时或主存空间允许时,随时将它们读入主存储器。信息的二级存储

3.1存储管理综述3.1.1存储器的层次结构

目前,计算机采用的都是以存储器为中心的体系结构。存储器负责存放整个系统的程序与数据,是重要的系统资源。.磁带磁盘主存储器高速缓存寄存器快慢存取速度小大容量昂贵便宜价格.

在考虑计算机存储器的设计时,必须顾及“价格”、“容量”、“访问时间”这三个重要特性。各种实现技术间往往有以下的关系:存取时间越快,每“位”的价格就越高;容量越大,每“位”的价格就越低;容量越大,存取速度就越慢。.

只能在“价格”、“容量”、“访问时间”三者间寻求折中,采用存储器的层次结构。这时,从上往下就有:每“位”的价格递减;存储容量递增;存取时间递增。.

这种层次结构中,容量较大、价格便宜的慢速存储器(如磁盘),可作为容量较小、价格较贵的快速存储器的后备。这正是存储管理中虚拟存储技术的实现基础。

这种层次结构中,CPU可直接到寄存器、高速缓冲存储器、内存储器这三层上访问数据,不能直接到磁盘和磁带上访问数据,那里的数据只有转移到内存储器后,才能接受CPU的处理。.3.1.2高速缓冲存储器的工作原理高速缓冲存储器CPU主存储器字传送块传送

相对于内存,高速缓存容量小、存取速度快。在它里面只存放内存中的一小部分数据内容。.

在CPU与内存间,可安排“高速缓冲存储器”,简称为“高速缓存”。..

当CPU试图访问内存中的某一个字时,就总是先检查该字是否在高速缓存中。如果在,就直接将它从高速缓存传送给CPU;如果不在,则先把内存中包含此字在内的一块数据读入高速缓存,然后再把所需的字从高速缓存传送给CPU。槽号标签012C-10123块块(K个字)2n-1块(K个字)地址高速缓冲存储器主存储器

内存和高速缓存间是以“块”为单位传递数据的,高速缓存与CPU之间则是以“字”为单位传递数据的。..

当CPU需存取内存中某块里的某字,而那块不在存储槽中,就把那块传到一槽里。高速缓存中的槽都有标签,用来标识这个存储槽在当前存放的是内存中的哪一块。3.1.3存储管理的功能

存储扩充的含义是通过技术手段,给用户造成有一个非常大的内存的虚幻感觉,但其实并没有扩大实际内存的容量。存储管理若能做到这种意义下的存储扩充,那么就能使用户程序的规模不受内存实际容量的限制。存储扩充无疑是一件非常好的事情。这是虚拟存储要讨论的话题。1.

这是存储管理必须承担的任务,它应该随时记录内存的使用情况;根据用户程序的需要分配存储区;在用户程序运行完后,及时收回存储区,以提高内存的使用效率。内存的分配与回收2.存储保护和共享

存储共享是指允许多个进程访问内存中的同一部分,这是提高存储利用率的一种措施。.

存储保护涉及两个问题,一是确保用户进程的程序不侵犯操作系统;二是确保两个用户程序之间不相互干扰。.3.地址定位

为适应多道程序设计环境,为使内存中的程序能够移动,存储管理必须对用户程序逻辑地址空间中的地址实施重新定位,以保证进程程序的正确运行。4.存储扩充

把用户程序指令中的相对地址变换成为所在绝对地址空间中的绝对地址的过程,称为“地址重定位”。

3.2固定分区存储管理3.2.1地址重定位几个概念1.地址重定位的定义2.01001KB2KB30003KBXXXXXXcall100用户程序A的相对地址空间XXXXXXcall100内存储器020KB20KB+10021KB22KB20KB+300023KB操作系统XXXXXXXcall20580内存储器020KB20KB+10021KB22KB20KB+300023KB操作系统XXXXXXcall22628内存储器022KB22KB+10023KB24KB22KB+300025KB操作系统20KB.绝对地址(或物理地址).绝对地址空间(或物理地址空间).相对地址(或逻辑地址).相对地址空间(或逻辑地址空间)单元地址:内存储器由一个个存储单元组成。一个存储单元存放若干个二进制的位(bit),8个二进制的位被称做一个字节(Byte)。内存中的存储单元按一定的顺序号进行编号,每个单元对应的编号,称为该单元的单元地址。物理地址:在操作系统中,把单元地址称为内存储器的物理地址,也叫做绝对地址。物理地址空间:从任何一个绝对地址开始的一段连续的内存空间,被称为物理地址空间,也称为绝对地址空间。逻辑地址空间:用户程序产生出一个相对于“0”编址的地址空间,这个地址空间被称为是用户程序的逻辑地址空间也称为相对地址空间。逻辑地址:在逻辑地址空间中的地址被称为逻辑地址也叫做相对地址。

要求编程人员熟悉内存使用情况,程序设计时要极小心地对待指令中的地址,不能够出现任何差错,否则后果不堪设想;3.2.2

地址定位方式和静态重定位1.绝对定位方式

即在程序装入内存之前,程序指令中的地址就已经是绝对地址,已经正确地反映了它将要进入的存储区位置。..

优点:程序中的逻辑地址与实际内存中的物理地址完全相同。因此在程序执行前不需对程序指令中的地址再进行任何调整和修改,装入到指定内存位置就可运行。.不适用于多道程序设计环境。缺点:(1)(2)(3)(4)程序进入内存后,不能做任何移动,只能固定在这个存储区内;对程序做任何微小修改,都可能会牵扯到程序整体的变动,费工耗时;2.静态重定位方式.

在多道程序设计环境下,用户事先无法、也不愿意知道自己的程序会被装入到内存的什么位置,他们只是向系统提供相对于“0”编址的程序。.

操作系统要有一个“重定位装入程序”,功能是:一根据当前内存使用情况,为欲装入的二进制目标程序分配所需的存储区;二根据所分配的存储区,对程序中的指令地址进行重新计算和修改;三将重定位后的二进制目标程序装入到指定的存储区中。静态重定位由软件(重定位装入程序)实现,无须硬件提供支持;静态重定位的特点静态重定位是在程序运行之前完成地址重定位工作的;地址重定位的工作是在程序装入时被一次集中完成的;

物理地址空间里的目标程序与原逻辑地址空间里的目标程序面目已不相同,前者是后者进行地址调整后的结果;

实施静态重定位后,位于物理地址空间里的用户程序不能在内存中移动,除非再重新进行地址定位;.

采用这种重定位方式,用户向装入程序提供相对于“0”编址的二进制目标程序,无需关注程序具体的装入位置。通过重定位装入程序的加工,目标程序进入分配给它的物理地址空间,程序指令中的地址也都被修改为正确反映该空间的情形。因为这种地址重定位是在程序执行前完成的,因此称为地址的“静态重定位”。.(1)(2)(3)(4)(5)(6)适用于多道程序设计环境。3.动态重定位方式

对用户程序实行地址的静态重定位后,定位后的程序就被“钉死”在了它的物理地址空间里,不能做任何移动。..

将地址定位的时间推迟到程序执行时再进行,这就是地址“动态重定位”方式。在对程序实行动态重定位时需要硬件的支持。

为阻止用户程序指令中的地址闯入操作系统所占用的区域,在CPU里设置一个用于存储保护的专用寄存器:“界限寄存器”。.

内存用户区又被分为“使用区”和“空闲区”两部分,分配给了用户、但又未使用的区域称为“内部碎片”。内部碎片的存在是对内存资源的一种浪费。3.2.3单一连续分区存储管理1.2.单一连续分区存储管理的基本思想单一连续区存储管理的特点

总体上把内存储器分为两个分区:一个分区固定分配给操作系统使用;另一个分配给用户使用,称为“用户区”。.....作业3作业2作业1操作系统用户区内存0ab操作系统使用区内存0ab空闲区用户区c操作系统使用区内存0ab空闲区ca界限寄存器系统总是把整个用户区分配给一个用户使用。这种系统只适用于单用户(或单道)的情况。进入内存作业独享系统中的所有资源,包括内存的整个用户区。采用这种存储分配策略时,将对用户程序实行静态重定位。.

作业比用户区小时,就会形成碎片,造成内存储器资源的浪费。3.单一连续分区管理的缺点..4.覆盖技术

每次只能一个作业进入内存,故不适宜多道程序设计,系统的工作效率不高,资源利用率低下。若用户作业的相对地址空间比用户区大,该作业就无法运行。“覆盖”是早期为程序设计人员提供的扩充内存的技术,中心思想是允许作业的若干个程序段使用同一个存储区域,共用的存储区被称为“覆盖区”。MAIN(10KB)A(50KB)B(30KB)C(30KB)D(20KB)E(40KB)MAIN(10KB)A(50KB)B(30KB)C(30KB)D(20KB)E(40KB)0180KB连接装配10KB50KB40KB内存MAINA或BC或D或E5.对换技术作业1作业2作业3辅助存储器内存储器操作系统用户区换出换入

基本思想:将作业都存放在辅存。每次只让其中的一个进入内存投入运行。当运行中提出输入输出请求或分配给的时间片用完时,就把这个程序从内存“换出”到辅存,把辅存里的另一个作业“换入”运行,产生出“多道”的效果。3.2.4固定分区存储管理1.基本思想

所谓“固定分区”存储管理,是指预先把内存的用户区划分成若干个连续的分区,它们的尺寸可以相同,也可以不同。划分后,内存中分区的个数以及每个分区的尺寸保持不变。每个分区里只允许装入一个作业运行。2.对作业的组织操作系统第1分区(8KB)第2分区(32KB)第3分区(64KB)第4分区(132KB)0256KB20KBABCDEF操作系统第1分区(8KB)第2分区(32KB)第3分区(64KB)第4分区(132KB)0256KB20KBABCDEF.每个分区设置一个后备作业队列.多个分区只设置一个后备作业队列

一个作业到达时,总是进入到“能容纳该作业的最小分区”的那个后备作业队列里去排队。

当某个分区空闲时,统一都到这一个队列里去挑选作业,装入运行。缺点:可能会产生有的分区队列忙碌、有的分区队列闲置的情形。作业尺寸比任何一个分区的长度都大时,就无法运行。..3.分区的分配与释放.

分区空闲时,若它的队列非空,就把该分区分配给队列的第一个作业使用;作业运行完毕,收回该分区,进行下一次分配。每个分区设置一个后备作业队列多个分区只设置一个后备作业队列在任何一个分区释放时,就根据分配方案从该队列里挑选一个作业装入运行。4.地址重定位与存储保护在固定分区存储管理中,实行静态重定位。.

在固定分区存储管理中,要防止用户程序对操作系统的侵扰,也要防止用户程序间的侵扰。因此设置一对专用寄存器:“低界限寄存器”和“高界限寄存器”,用于存储保护。地址重定位存储保护0abcdab作业1作业2作业3第1分区第2分区第3分区操作系统低界限寄存器高界限寄存器CPU5.固定分区存储管理的特点与缺点.是最简单的、具有“多道”色彩的存储管理方案。.作业程序一次性全部装入分配给它的连续分区。.实行的是静态重定位。..会产生内部碎片,引起内存资源的浪费。

外部碎片:存储管理中,把那些无法分配出去满足作业存储请求的空闲区称为“外部碎片”。3.3.1可变分区存储管理的基本思想3.3可变分区存储管理1.基本思想2.

内、外部碎片

在作业要求装入内存时,若当时内存中有足够的存储空间满足该作业的需求,那就划分出一个与作业相对地址空间同样大小的分区分配给它使用。操作系统空闲区作业A(15KB)作业B(20KB)作业C(10KB)内存操作系统空闲区作业A(15KB)作业B(20KB)内存操作系统空闲区作业A(15KB)内存操作系统空闲区作业A(15KB)内存作业B(20KB)作业C(10KB)..

内部碎片:存储管理中,把分配给了用户而用户未用的存储区称为“内部碎片”。3.实施可变分区存储管理要解决的三个问题

.采用地址动态重定位技术,使程序能在内存中移动,为空闲区合并提供保证;.

记住各分区的使用情况,当一个分区被释放时,要能判定它的前、后分区是否为空闲区。若是空闲区,就进行合并,形成一个大的空闲区。.给出分区分配算法,在有多个空闲区都满足作业的存储请求时,决定分配哪一个。.

静态重定位是在程序运行之前完成地址转换的;动态重定位却是将地址转换的时刻推迟到指令执行时进行。

实行静态重定位,原来的指令地址部分被修改了;实行动态重定位,只是按照所形成的地址去执行这条指令,并不对指令本身做任何修改。

静态重定位是在装入时一次集中地把程序指令中所有要转换的地址全部加以转换;而动态重定位则是每执行一条指令时,对其地址加以转换。

静态重定位是由软件完成地址转换工作的;动态重定位则由一套硬件提供的地址转换机构来完成。1.基本思想2.静态和动态重定位的比较3.3.2地址的动态重定位

把相对地址空间中的用户作业程序“原封不动”地装入到分配给它的绝对地址空间中去。执行某条指令时,才根据当前程序所在区域,对指令中的地址进行重定位。即指令中地址的转换是在程序执行时动态完成的,故称为地址的“动态重定位”。0用户作业A的相对地址空间XXXXXX1001KB2KB3000call1003KB0XXXXXX22KB+10023KB24KB22KB+3000call10025KB20KB22KB22KB定位寄存器2262822528操作系统内存...由地址变换线路取出

一是调度到某作业时,若系统的每个空闲区尺寸都小于它的需要,但空闲区总存储量大于它的存储请求,于是进行空闲区合并,得到一个大的空闲区,满足该作业的需要;一是只要有作业运行完归还所占用的存储区,系统就进行空闲区的合并。

释放区的前、后邻接分区都是空闲区。因此,释放区应该和前、后两个邻接的空闲区合并成一个新的空闲区。

释放区的前邻接分区是已分配区,后邻接分区是空闲区。因此,释放分区应该和后邻接的空闲区合并成一个新的空闲区。

释放分区的前邻接分区是空闲区,后邻接分区是已分配区。释放区应该和前邻接的空闲区合并成一个新的空闲区。

释放分区的前、后邻接分区都是已分配区,没有合并的问题存在。3.3.3空闲区的合并1.前后相邻接分区的四种关系2.空闲分区合并的时机已分配区空闲区释放分区空闲区已分配区释放分区空闲区空闲区释放分区已分配区已分配区释放分区....

若有作业运行结束,则根据作业名到已分配表里找到它的表目项,将该项的“状态”改为“空”,随之在空闲区表里寻找一个状态为“空”的表目项,把释放分区的信息填入,并将表目项状态改为“空闲”。

作业提出存储需求时,查空闲区表里状态为“空闲”的表目项。若该项的尺寸能满足所求,就将它一分为二:分配出去的那部分在已分配表里找一个状态为“空”的表目项进行登记,剩下的部分仍在空闲区表里占据一个表目项。3.3.4分区的管理与组织方式1.表格法

设置两张表:“已分配表”和“空闲区表”。其中“序号”是表目项的顺序号,“起始地址”、“尺寸”、“状态”都是该分区的相应属性。由于系统中分区的数目是变化的,因此每张表格中的表目项数要足够的多,暂时不用的表目项的状态被设为“空”。内存操作系统空闲区(8KB)作业B(32KB)空闲区(32KB)作业D(120KB)空闲区(300KB)序号起始地址尺寸状态12345020KB28KB60KB92KB212KB512KB28KB32KB作业B空空空92KB120KB作业D——————序号起始地址尺寸状态1234560KB32KB作业B空闲空空——作业D20KB8KB212KB300KB——已分配表空闲区表...

例3-1在图3-11的基础上,现在到达一个作业E,存储请求是30KB。试给出这时内存分区的划分情形以及已分配表和空闲区表的变化。

把内存中每个空闲分区视为一个整体,在它里面开辟出两个单元,一个存放该分区的长度(size),一个存放它下一个空闲分区的起址(next),操作系统开辟一个单元,存放第1个空闲分区的起址,这个单元称为“链首指针”。最后一个空闲分区的next里存放标志“NULL”。这样一来,系统里所有空闲分区被next连接成一个链表。从链首指针出发,顺着各个空闲分区的next往下走,就能到达每一个空闲分区。20KB8KB60KB2.单链表法.sizenext空闲区长度下一个空闲区起址空闲区8KB212KB32KBNULL300KB20KB60KB空闲区(8KB)32KB212KB空闲区(32KB)300KBNULL空闲区(300KB)作业B(32KB)作业D(120KB)020KB28KB60KB92KB212KB512KB内存操作系统链首指针链首指针.基本思想

对提出的任何一个存储请求,从空闲区链表首指针开始查看一个个空闲区。若有满足要求的,按尺寸分配,调整next指针;若到达NULL未见满足要求,则分配失败。存储分配.存储释放作业完成任务后,将占用的存储区释放,链入空闲区链表(要调整指针和空闲区合并)。

在每个空闲分区里,即存放下一个空闲区起址next,也存放它的上一个空闲区起址(prior)的信息。这样,通过双向链表,就可以方便地由next找到一个空闲区的下一个空闲区,也可以由prior找到一个空闲区的上一个空闲区。空闲区(300KB)sizenext.3.双链表法基本思想20KB空闲区长度下一个空闲区起址空闲区300KBNULL作业B(32KB)作业D(120KB)020KB28KB60KB92KB212KB512KB内存操作系统链首指针prior上一个空闲区起址空闲区(32KB)32KB212KB60KB20KB空闲区(8KB)8KB60KBNULL.存储合并

把释放区链入空闲区双向链表时,若通过它的prior发现该释放区的前面一个空闲区的起址加上长度,等于释放区的起址,那么说明它前面的空闲区与它直接邻接,应该把这个释放区与原先的空闲区合并。若释放区起址加上长度正好等于next所指的下一个空闲区的起址,那么说明它与后面的空闲区直接邻接,应该把这个释放区与原先的空闲区合并。.空闲区的两种组织形式

若将每个空闲分区按其起址由小到大排列在链表里,则把这种组织称为“地址法”;若按每个空闲分区的长度由小到大排列在链表里,则把这种组织称为“尺寸法”。

最先适应算法:总是把最先找到的、满足存储需求的那个空闲分区作为分配的对象。出发点尽量减少查找时间,有可能把大的空闲区分割许多小的分区,对大作业不利。3.3.5空闲分区的分配算法1.三种分配算法2.可变分区存储管理的特点

最佳适应算法:总是从当前所有空闲区中找出一个能够满足存储需求的、最小的空闲分区作为分配的对象。尽可能不把大的空闲区分割许多小的分区,保证大作业需要。

最坏适应算法:总是从当前所有空闲区中找出一个能够满足存储需求的、最大的空闲分区作为分配的对象。出发点是照顾中、小作业的需求。...3.可变分区存储管理的缺点..作业一次性地全部装入到一个连续的存储分区中。.

分区是按照作业对存储的需求划分的,因此不会出现内部碎片这样的存储浪费。.为确保作业能够在内存中移动,要由硬件支持实行指令地址的动态重定位。.

只要作业的存储需求大于系统提供的整个用户区,该作业就无法投入运行。.

有可能出现极小的分区暂时分配不出去的情形,产生外部碎片。

由于是通过移动程序来达到分区合并的目的,势必增加系统在这方面的时间投入与开销。可变分区存储管理特点:作业一次性地全部装入到一个连续的存储分区中。(缺点:无法解决大作业和小内存问题)避免了内部碎片。(缺点:导致外部碎片)采用动态地址重定位技术,可以使作业在内存中移动。(缺点:程序的移动增加了系统开销)例3-2:如图3-19(a)所示,现有两个空闲分区。作业D到达,提出存储需求20KB。试问:如果系统实行最先适应算法,应该把哪一个空闲分区分配给它?分配后的内存情形用图示出。

地址法

尺寸法最佳适应算法分配结果,找满足需要,最小的空闲区最坏适应算法分配结果,找满足需要,最大的空闲区例3-3B请求240KB:3.3.6伙伴系统.伙伴系统是基于固定分区和可变分区提出的一种折中存储管理方案。.在伙伴系统中,可用内存分区的大小为2K,L≤K≤U,其中:

2L表示分配的最小分区的尺寸;2U表示分配的最大分区的尺寸。C(64KB)64KBA(128KB)128KBB(256KB)512KBA(128KB)B(256KB)512KBA(128KB)128KB256KB512KB1MBC(64KB)64KBA(128KB)B(256KB)D(256KB)C(64KB)64KBA(128KB)256KBD(256KB)256KB256KBC(64KB)64KB128KB256KBD(256KB)256KBC(64KB)64KBE(128KB)256KBD(256KB)256KBE(128KB)128KB256KBD(256KB)256KB512KBD(256KB)256KB1MB1MB初启:A请求100KB:C请求64KB:D请求256KB:B释放256KB:A释放128KB:E请求128KB:C释放64KB:E释放128KB:D释放256KB:有一个1MB内存,采用伙伴系统管理存储空间的分配和回收。例:固定分区:限制可运行程序的道数,产生碎片,利用率低可变分区:按需求量划分,能消除内部碎片,维护复杂。

用户作业仍然相对于“0”进行编址,形成一个连续的相对地址空间。操作系统按照内存块的尺寸对该空间进行划分,每一个分区被称为“页”,编号从0开始。

用户作业相对地址空间的划分

把整个内存储器划分成大小相等的许多分区,每个分区称为“块”。比如把内存储器划分成n个分区,编号为0,1,2,…,n-1。块是存储分配的单位。3.4分页式存储管理3.4.1分页式存储管理的基本思想操作系统内存储器作业A(第2页)作业A(第0页)作业A(第1页)020KB24KB28KB32KB36KB40KB44KB48KB256KB(0~4块)第5块第6块第7块第8块第9块第10块第11块04KB8KB11KB12KB第0页第1页第2页10921008(1,1092)(2,1008)51889200用户作业A的相对地址空间1.内存的划分2.3.相对地址的映射用户相对地址空间中的每一个相对地址,都可以用数对“页号,页内位移”来表示。页号:用户程序相对地址空间中的n+1页,按照0、1…n编号。块号:内存绝对地址空间中的m+1块,按照0、1…m编号。页内位移:相对地址与所在页的起始位置的之间的位移。块内位移:绝对地址与所在页的起始位置的之间的位移。(页号,页内位移):用户相对地址空间中的每一个相对地址,都可以用数对(页号,页内位移)来表示。(块号,块内位移):内存绝对地址空间中的每一个绝对地址,都可以用数对(块号,块内位移)来表示。

用数对里的“页号”2去查作业A的页、块对应关系表。

把内存第7块的起始地址与页内位移相加,就得到了相对地址3000现在的绝对地址,即7K+952=8120。

记录作业A的页、块对应关系4.分页式存储管理的地址重定位用户作业A的相对地址空间XXXXXXcall300001001KB2KB30003KB952第0页第1页第2页内存储器操作系统call3000作业A(第0页)XXXXXX952作业A(第2页)作业A(第1页)04KB4KB+1005KB6KB7KB7KB+9528KB9KB10KB(0~3块)第4块第5块第6块第7块第8块第9块(2,952)用户作业A的页、块对应关系页号块号0124977K+952=8120...

运行到指令“call3000”时,把相对地址3000转换成:(2,952)。计算公式是:页号=相对地址/块尺寸页内位移=相对地址%块尺寸..系统就去做指令“call8120”,从而得到了正确地执行。例题:一个实行分页式存储管理的系统,内存块尺寸为2KB/块。现有一个用户,其相对地址空间为0~5129字节。若将此作业装入内存,计算系统产生多大的内存碎片,并判断碎片的性质。分析步骤:第一步:用户的相对地址空间的大小;5130第二步:求用户的相对地址空间需要内存块的个数;3x2048=6144第三步:内存块中那块产生了碎片,用块大小减去产生碎片的页的大小。6144-5130=1014

利用内存记录作业页、块对应关系的表,就是“页表”。每个作业都有自己的页表。作业相对地址空间有多少页,页表就有多少个表项。为了地址转换,硬件设置一个专用寄存器:“页表控制寄存器”。进程调度时,把调度到作业的页表起址和长度放入寄存器中,达到映射不同作业地址的目的。3.4.2分页式存储管理的地址转换1.数对(页号,页内位移)的形成

把块(或页)的尺寸限定只能是2的方幂,那么利用计算机系统设定的地址结构,很容易得到相对地址所对应的数对(页号,页内位移)。015014013012111010191817061514130201000150140130121110101918170615141302010001501401301211101019181706151413020100页号(2)页内位移(952)页号(11)页内位移(184)2.页表与快表.利用内存构成页表操作系统内存储器块号页内位移绝对地址页表起始地址长度页表控制寄存器页号页内位移相对地址CPU(1)地址3000的二进制表示地址转换过程(2)

页表存放在内存,增加了系统在存储上的花销,还降低了CPU的访问速度。因为每次对某一地址的访问,先要访问内存中的页表,形成绝对地址后,才能进行所需的真正访问。因此,以前只须一次访问就能实现的操作,现在要两次访问内存才能实现。

实现页表的另一方法是用一组快速硬件寄存器构成公用页表。调度到谁就把谁的页表装入该组寄存器中。这样硬件把页号与寄存器组中所有表项同时并行比较,立即输出与页号匹配的块号。这时无须访问内存,并且通过并行匹配直接完成地址变换,因此速度很快。.操作系统内存储器块号页内位移绝对地址快速寄存器组页号页内位移相对地址CPU快速寄存器组(1)(2)快速寄存器价格昂贵,完全由它来组成页表的方案是不可取的。.页表/快表

考虑到大多数程序在一次运行时,倾向于在少数页面中进行频繁访问(即程序的“局部性”原理),因此在实际系统中采用内存页表与快速寄存器组结合的解决方案,且只用极少几个快速寄存器来构成寄存器组,起名为:“相联寄存器”,或简称“快表”。(1)

快表中只存部分页表。把一个相对地址划分出数对:(页号,页内位移)后,系统先通过页号与快表中的所有表项进行并行比较。若发现了匹配的页,则将块号直接取出,不再通过页表。用该块号与页内位移拼接,形成所需要的绝对地址。(2)

作业长度不可能是页面尺寸的整数倍,平均说,分给作业的最后内存块会浪费掉一半。若内存中有n个作业,页面尺寸为p个字节,那么内存中就有n*p/2个字节被浪费掉。所以,页面尺寸要小。

当快表中没有匹配的页号时,地址转换机构按普通访问页表的方式工作,获得所需的绝对地址;再把这个页号与块号的对应关系送入快表保存,以便下一次进行地址转换时能够命中。若快表里没有空表项,则要先删除快表中的一个表项,然后将新的页表表项替换进去。页表控制寄存器操作系统内存储器块号页内位移绝对地址快表页号页内位移相对地址长度起始地址页表(3).命中率

直接查快表就能实现内存访问的成功率为“命中率”。命中率越高,性能就越好。表中给出了平均命中率与相联寄存器个数的关系。从表中可以看出,设置快表,确实能够达到提高地址转换速度的目的。相联寄存器个数平均命中率8121685%93%97%.3.关于页面尺寸的讨论.

页面尺寸小,用户作业相对地址空间的页面数就增加,页表就会加大。因此,从减少页表所需内存开销看,页面尺寸应该大一些为好。选择最佳页面尺寸,可能需在几个相互矛盾的因素间折中求得。3.4.3内存块的分配与回收1.对内存块的管理..存储分块表单链表操作系统作业C第2页作业B第0页作业A第0页空闲块作业A第2页空闲块空闲块作业B第1页空闲块空闲块作业A第1页作业C第3页作业C第0页作业C第1页空闲块内存储器064K空闲块链表起址块号状态0已分配1已分配2已分配3已分配4空闲5已分配6空闲7空闲8已分配9空闲10空闲11已分配12已分配13已分配14已分配15空闲空闲块总数:6

系统维持一张表格,表格表项与内存中的一块相对应,记录该的块使用情况。只要表格中“空闲块总数”记录的数目大于请求的存储量,就可进行分配,并把分配出去的块的状态改为“已分配”。作业完成后归还存储块时,就把表中相应块的状态改为“空闲”。单链表存储分块表

把空闲块链接成一个单链表加以管理,系统必须设置一个空闲块链表的起始地址指针,以便进行存储分配时能够找到空闲的内存块。无论是进行空闲块的分配还是作业完成后归还存储块,都要调整空闲块间的链表指针。.

假定当前的内存储器使用情况,如图所示。.

作业虽然不占据连续的存储区,但每次仍要求一次全部进入内存。因此,如果作业很大,其存储需求大于内存,那么还是存在小内存不能运行大作业的问题。

用户作业的相对地址空间按照块的尺寸划分成页。这种划分是在系统内部进行的,用户感觉不到,即对用户是“透明”的。2.分页式存储管理的特点..内存存储器事先被划分成相等尺寸的块,它是进行存储分配的单位。..

相对地址空间中的页可以进入内存中的任何一个空闲块,并且分页式存储管理实行的是动态重定位,因此它打破了一个作业必须占据连续存储空间的限制,作业在不连续的存储区里,也能够得到正确的运行。3.分页式存储管理的缺点平均每一个作业要浪费半页大小的存储块。.位图

用二进制位与内存块的使用建立起关系,为“0”,表示对应块空闲;为“1”,表示对应块已分配。1111010010011110空闲块总数:60123456701字节号位号位图

独立的地址空间有助于实施对过程和数据的共享,不必在每一个用户作业的地址空间里都必须有相关的备份。

每个程序段是一个独立的逻辑实体(比如一个过程、一个数组或一个堆栈),因此可以对它们进行不同类型的存储保护。

每个程序段是一个独立的地址空间,它们可独自增长或减小而不用顾及别的程序段,不会影响到其他程序段的地址空间。

所谓“分段式”存储管理,即要求用户将自己的作业程序以多个相互独立的称为“段”的地址空间提交给系统,每个段都是一个从“0”开始的一维地址空间,长度不一。操作系统按照段长为作业分配内存空间。

改变某程序段尺寸,就会影响其他无关程序段的起址;对某个程序段进行修改,会影响到其他相关部分,就可能要对所有的程序重新进行链接编辑。3.5分段式存储管理3.5.1分段及二维逻辑地址空间1.一维地址空间组织方式的缺点.不利于按照程序段的性质,实施存储保护和共享。..2.分段式存储管理的含义3.分段式组织方式的优点..

在编译过程中会建立很多表,其中主要有:供打印程序清单的源程序文档;由变量名及其属性组成的符号表;由程序中所有的整型、实型常量组成的常量表;包含程序语法分析结果的语法分析树;内部过程调用时使用的堆栈。

通过编译程序在编译过程中建立的各种表,说明页式及段式存储管理中,作业程序地址空间组织形式的不同。例:解:..在分页式管理时,这5个表必须限定在一个一维的地址空间里,如图(a)所示。使用使用使用使用使用空闲空闲空闲空闲堆栈语法分析树常量表源程序文档符号表(a)0KB4KB8KB12KB16KB20KB0KB4KB8KB12KB符号表段00KB源程序文档常量表段1段3段40KB4KB8KB12KB16KB语法分析树0KB4KB8KB12KB堆栈段2(b).

在分段管理时,是把这些表视为一个个相互独立的地址空间,比如:段0、段1等,它们组成了整个用户的地址空间,如图(b)所示。

系统为每个用户作业设置一个段表,用于记录各段在内存中的存放信息。逻辑空间中有多少段,段表里就有多少个表项。每个表项通常包括的信息有段号、段长、该段在内存的基址(即起始地址)等。

如果段号s大于段表长度,表示该地址越界出错;否则以此段号为索引查段表,得到该段在内存的基址。

硬件要提供一个段表基址寄存器。每当重新调度时,就把调度到的作业的段表起址及段表长度(即段表中表项的个数)放入寄存器中,从而达到映射不同作业的目的。.

在分段式存储管理时,要指示存储空间里的一个地址,必须提供两部分内容:段号和段内位移。即逻辑地址应该是二维的:[段号,段内位移]。.

在图(a)所示的32位地址结构中,各用16个二进制位表示段号s和段内位移d,因此表示用户的逻辑地址空间最多可以有216个段,每段最大长度是64KB。3116150sd段号段内位移ds段号段内位移0312322(a)(b).

图(b)所示的32位的地址结构中,由于用9个二进制位表示段号s,用23个二进制位表示段内位移d,因此表示允许用户的逻辑地址空间中最多可以有29个段,每段的最大长度是223=8192KB。..分段式存储管理时的地址转换步骤如下:.(1)从相对地址数对:[段号s,段内位移d]中提取出段号s,用来进行地址转换。(2)(3)由段的基址和段内位移d拼装出所需的物理地址,实现对内存的访问。3.5.2段表及地址变换过程段号(s)段内位移(d)相对地址段表段表基址寄存器段号长度基址基址段内位移物理地址段sd内存程序分段地址转换机制.分段地址转换机制图示例:

在分段式存储管理中,某作业的段表如下。有该作业的六个逻辑地址为:[0,430]、[3,400];[1,10]、[2,2500]、[4,42]、[1,11]。求对应的物理地址。段号段长基址

06002191142300210090358013274961954解:

对不同逻辑地址中的段号,有结果如下:(1)[0,430]的物理地址是219+430=649;(2)[3,400]的物理地址是1327+400=1727;(3)[1,10]的物理地址是2300+10=2310;(4)由逻辑地址知,是要访问第2段位于2500处的元素。但第2段的段长是100,表明所要访问的段内位移越界出错;(5)[4,42]的物理地址是1954+42=1996;(6)[1,11]的物理地址是2300+11=2311。3.5.3存储保护与共享

在分页式环境下,存储保护只能以页面为单位。在页表的每一个表项里,设置一个所谓的“保护位”,该位的不同取值表示对应的页帧是可读、可写或只可读等。分页式存储管理中的存储保护与共享.1..

被共享的程序文本部分不一定正好划分在一个或几个完整的页面中,有可能一个页面中既有允许共享的内容,又有不能共享的私有数据。因此,在分页式环境下实现页面的共享比较困难,但也不是不可能。进程A的逻辑地址空间进程B的逻辑地址空间进程C的逻辑地址空间ed10ed21ed32dataA3ed10ed21ed32dataB3ed10ed21ed32dataC3进程A的页表031426320314263203142632页号帧号进程B的页表页号帧号进程C的页表页号帧号操作系统0123456789101112dataAed1ed2ed3dataBdataC内存.

假定分页式存储管理的页帧尺寸为50KB,那么文本编辑程序被划分成3页,用户进程的数据段被划分成一页,合起来每个用户进程的逻辑地址空间为4页。.

三个进程的逻辑地址空间和相应的页表,0~2页都划归文本编辑程序(即ed1,ed2,ed3),页表中的0~2表项都对应于页帧号3、4和6;进程的数据页(即dataA、dataB、dataC)都位于自己空间的第3页,分别存放在内存的2、8和11页帧。81111文本编辑程序段0程序段段1数据段段2进程A的逻辑地址空间文本编辑程序段0程序段段1数据段段2进程B的逻辑地址空间堆栈段段30252861基址243062操作系统内存进程A的段表段号段长0252861基址243062进程B的段表段号段长3A的数据段文本编辑程序B的数据段A的程序段B的堆栈段43062B的程序段分段式存储管理中的存储保护与共享2..

在分段式环境下,段是有完整意义的逻辑信息单位,因此对段中的所有内容可以采用相同的方式使用。.

为实行存储保护,在段表表项里增加权限位,指出每段是可读、可写或只执行等信息。每次进行地址映射时,都将这次访问的类型与权限位比较,若不符合就产生出错中断。.

在分段式存储管理中很容易实现段的共享,只需在有关作业的段表中增加一个表项,让其基址指向共享段在内存中的起始地址即可。.

进程A和B要共享文本编辑程序,就可把文本编辑程序作为它们地址空间中的段0。假定文本编辑程序存放在内存43062起始的连续分区里,那么在所对应的各段表中,段号为0的表项的基址都是43062,从而达到共享该文本编辑程序的目的。(1)

页是信息的物理单位,段是信息的逻辑单位:系统根据内存块的尺寸划分页,不考虑页中的信息是否完整。因此,一页对应的是信息的一个物理单位;段是基于用户程序结构提出的存储管理模式,用户知道自己的程序分多少段,每段在逻辑上都是相对完整的一组信息。所以,段是信息的逻辑单位。(2)

页的尺寸由系统确定,段的尺寸因段而异:实行分页式存储管理的系统,页的尺寸是由系统确定的,它与内存页帧的大小相同。段的长度取决于用户编写的程序,不同的段有不同的长度。

(3)

页式地址空间是一维的,段式地址空间是二维的:在分页式存储管理时,用户必须通过链接编辑程序,把各程序段链接成一个相对于0编址的一维线性空间,用户向系统提供的是一个一维的逻辑地址空间;在分段式存储管理时,用户不把各程序段连接成一个相对于0编址的一维线性空间,各程序段之间是通过[段号,段内位移]进行访问的。因此,用户向系统提供的是一个二维的逻辑地址空间。3.5.4分段与分页的区别

.

形式上看,分段式与分页式存储管理有很多相似之处。比如,一个为(页号,页内位移),一个为[段号,段内位移];一个有页表,一个有段表;如此等等。不过它们却是两个完全不同的概念。.分段与分页的主要区别3.6虚拟存储与请求页式存储管理3.6.1虚拟存储的概念1.作业程序不必全部在内存

由于程序执行具有“局部性”,因此实际运行时,没有必要把全部信息都放在内存里。只要合理组织,调度恰当,在发现所需访问的信息不在内存时,能够找到它,能够把它调入内存,那么不仅可以保证作业的正确执行,而且还提高了系统的资源利用率,使得系统具有更高的运行效率。2.虚拟存储的概念

作业提交给系统时,先进入辅存。运行时,只将部分信息装入内存,大部分仍保存在辅存中。运行过程中需要用到不在内存的信息时,再把它们调入,以保证程序的正常运行。这样一个被用户认为有的、但实际上不存在的“大”存储器,就被称为“虚拟存储器”。..

虚拟存储器是一种扩大内存容量的设计技术,它把辅存作为计算机内存的后援。在虚拟存储意义下,用户作业的相对地址空间,就是系统提供给他的虚拟存储器。在多道程序设计环境下,每个用户都有自己的虚拟存储器。在提供虚拟存储管理的系统里,把用户作业的相对地址空间称为“虚拟地址空间”,里面的地址称为“虚拟地址”。

把内存划分成尺寸相同、位置固定的块。然后按照内存块的大小,把作业的虚拟地址空间(即以前的相对地址空间)划分成页。由于页的尺寸与块一样,因此虚拟地址空间中的一页,可以装入到内存中的任何一块中。3.6.2

请求分页式存储管理的基本思想最多可有2048页每页1KB第0页第1页第2页虚拟存储器第2045页第2046页第2047页第0块第1块第2块第29块第30块第31块内存储器1.与分页式相同处2.与分页式不同处

作业全部进入辅存。运行时,只装入要用的若干页,其他页仍在辅存。运行过程中,虚拟地址被转换成数对:(页号,页内位移)。由页号查页表,若该页在内存,运行就进行下去;若该页不在内存,表明“缺页”,运行无法继续。这时,就根据页号把该页从辅存调入内存。所谓“请求分页式”,即是当运行中需要某页时,再把它从辅存调入内存使用的意思。

中断处理程序查存储分块表,找空闲块;根据页在辅存的位置,启动磁盘读信息。

2173.6.3缺页中断的处理1.页表表项中的“缺页中断位”页号块号缺页中断位辅存地址

在请求分页式存储管理中,是由页表表目项的“缺页中断位”来判断所需页是否在内存的。该位为“1”,表示此页在内存;为“0”,表示不在内存,并发出“缺页”中断信号,以求得系统的处理。2.缺页中断处理过程作业2虚拟地址空间05184KB8KB830012KBcall8300第0页第1页第2页XXXXXX205114012操作系统第7块作业2的页表内存储器作业2第2页

根据执行指令中的虚拟地址,(页号,页内位移)。用页号去查页表,判断该页是否在内存。

若该页缺页中断位为“0”,产生缺页中断,进行中断处理。

把从磁盘上读出的信息装入到分配的内存块中。

修改页表中相应的表目内容,修改存储分块表里相应表目的状态。

在完成所需页面的装入后,返回原指令重新执行。①②③④⑤⑥(1)(2)(3)(4)(5)(6)

假定一个作业运行的页面走向中涉及的页面总数为A,其中有F次缺页,必须通过缺页中断把它们调入内存。定义:

f=F/A称f为“缺页中断率”。显然,缺页中断率与缺页中断的次数有密切的关系。

缺页中断处理完成后,仍返回到原指令去重新执行,因为那条指令并未执行。而一般中断则是返回到下一条指令去执行,因为这条指令已经执行完毕了。

缺页中断是在执行一条指令时产生的中断,并立即转去处理;一般中断则是在一条指令执行完后,发现有中断请求时才去响应和处理。3.缺页中断与一般中断的区别..4.页面走向和缺页中断率

作业运行时,虚拟地址在随时发生变化,它是程序的执行轨迹,是程序的一种动态特征。由于每个虚拟地址都与一个数对:(页号,页内位移)相对应,因此这种动态特征可以用程序执行时页号的变化来描述。通常,称一个程序执行过程中页号的变化序列为“页面走向”。所给程序的页面走向是:0、1、0、2、0、1,涉及的页面总数是6.。..用户作业程序100LOAD1#,1120104ADD1#,2410108STORE1#,1124虚拟地址100112010424101081124数对:(页号,页内位移)(0,100)(1,96)(0,104)(2,362)(0,108)(1,100)页面走向010201

程序1按行对a的元素初始化,缺页中断进一页,就能完成对a一行元素的初始化。a共128行,需128次缺页中断将它们调入,完成对a的初始化。程序2按列对a的元素初始化。通过缺页中断进来一页,只能对a的一行的一个列元素初始化。于是,每列元素的初始化,须128次缺页中断才完成。程序2需128×128

=

16384次缺页中断,才能完成a的初始化工作。

要把128×128的数组元素初始化为“0”。数组中的每个元素占一个字。若页面尺寸为128字,规定数组按行存放,系统只给该作业2个内存块:一个存程序,另一个用于数组初始化。开始时,程序已在内存块,数据未进入。试问下面给出的两个程序在运行时各会发生多少次缺页中断?

页面尺寸:页面尺寸是与块尺寸相同的,因此块大页也就大。页面增大了,在每个内存块里的信息相应增加,缺页的可能性下降。反之,页面尺寸减少,每块里的信息减少,缺页的可能性上升。

分配给作业的内存块数:由于分配给作业的内存块数多,同时能够装入内存的作业页面就多,缺页的可能性下降,发生缺页中断的可能性也就下降。影响缺页中断次数的因素.(1)程序的实现:作业程序的编写方法,对缺页中断产生的次数也会有影响。(2)(3)例:程序1: 程序2:main() main(){ {inta[128][128]; inta[128][128];inti,j; inti,j;for(i=0;i<128;i++) for(j=0;j<128;j++)for(j=0;j<128;j++) for(i=0;i<128;i++)a[i][j]=0; a[i][j]=0;} }解:

改变位:该位为“0”时,表示此页面在内存时数据未被修改过;为“1”时,表示被修改过。当其为淘汰对象时,根据此位的取值来确定是否要进行磁盘回写操作。

引用位:在系统规定的时间间隔内,该页是否被引用过的标志(该位在页面淘汰算法中将会用到)。3.6.4页面淘汰算法1.几个问题.

页面淘汰:缺页时,要从辅存把所需页面调入内存。若当时内存有空闲块,那么不会有什么问题;若当时内存中已没有空闲块,那就必须在内存中选择一页,把它调出内存,以便为即将调入的页面让出块空间。这就是所谓的“页面淘汰”。.

缺页中断与页面淘汰的关系:页面淘汰是由缺页中断引起的,但缺页中断不一定引起页面淘汰。只有当内存中没有空闲块时,缺页中断才会引起页面淘汰。.

抖动:若一个刚被淘汰出去的页,时隔不久因要访问它,又从辅存调入。调入后不久又被淘汰,再访问,再调入。如此频繁地反复进行,使得整个系统一直陷于页面的调入、调出,大部分CPU时间都用于处理缺页中断和页面淘汰上,很少顾及到用户作业的实际计算。这种现象被称为“抖动”或称为“颠簸”。.

页表表目的变动:选中了一个淘汰的页面,若该页面在内存时未被修改过,就可直接用调入的页面将其覆盖;若该页面在内存时被修改过,就必须把它回写到磁盘,以更新该页在辅存上的副本。一个页面在内存时是否被修改过,可通过页表表目反映。页号块号缺页中断位辅存地址引用位改变位(1)(2)

比如,作业的页面走向为:

1、2、3、4、1、2、5、1、2、3、4、5即作业运行时,先用到第1页,再用到第2页、第3页和第4页等。页面走向中涉及的页面总数为12。

先进先出(FIFO)页面淘汰算法的基本思想是:当要进行页面淘汰时,总是把最早进入内存的页面作为淘汰对象。2.先进先出页面淘汰算法123412555344123412225331234111255√√√123412512345√√√√√√页面走向3个内存块缺页计数:缺页中断率:f=9/12=75%..

由于3个内存块中没有第4页,因此要通过缺页中断将其调入。但供该作业使用的3个内存块全部分配,必须进行页面淘汰才能让所需的第4页进来。可以看出,前面3个缺页中断没有引起页面淘汰,现在这个缺页中断引起了页面淘汰。.

假定只分给该作业3个内存块使用。开始时作业程序全部在辅存,3个内存块都为空。运行后,通过3次缺页中断,把第1、第2、第3三个页面分别从辅存调入内存块中。当页面走向到达4时,用到第4页。.

根据FIFO的淘汰原则,应该把第一个进来的第1页淘汰出去。紧接着用到第1页,它不在内存的三个块中,于是要把第2页淘汰出去,让第1页进来,等等。..

对于所给的页面走向,它涉及到的页面总数为12,通过缺页中断调入页面的次数是9(因为“缺页计数”栏中有9个勾),因此它的缺页中断率f是:

f

=

9/12

=

75%.

这种算法把进入内存的页面按进入先后次序组成链表。选择淘汰对象时,考查链表的第1个页面,检查它的“引用位(R)”。若R位为“0”,表示上一次页面淘汰以来,它没有被引用过,因此可以把它立即淘汰;若R位为“1”,表示上一次页面淘汰以来,它被引用过,因此暂时不淘汰它,而是将R位修改为“0”,然后排到链表的最后,继续在链表上搜索符合条件的淘汰对象。FIFO的着眼点是,认为在内存中存放时间最长的页面,被访问的可能性最小。在实际中,就可能把经常要访问的页面淘汰出去。为尽量避免出现这种情形,提出了对它的改进:“第二次机会页面淘汰算法”。.ABCDEFGH链表首指针链表尾指针R=1ABCDEFGH链表首指针链表尾指针R=0(a)(b)插入到队列最后AGJDBCLKHIFE指针移动方向页面失效时,考察指针所指页面,根据R位采取动作:R=0时替换该页;R=1时清零,往下考察

第二次机会页面淘汰算法把在内存中的页面组织成一个链表来管理,页面要在链表中经常移动,从而影响系统的效率。..

可把页面组织成循环链表的形式,类似于时钟,用一个指针指向当前最先进入内存的页面。发生缺页中断并要求页面淘汰时,先检查指针指向的页面的R位。它实际上是第二次机会页面淘汰算法的变形,有时称为“时钟页面淘汰算法”。

最近最少用(LFU)页面淘汰算法的着眼点是考虑内存块里页面的使用频率,认为在一段时间里使用得最多的页面,将来用到的可能性就大。因此,进行页面淘汰时,总是把当前使用得最少的页面淘汰出去。为此,为每个在内存中的页面设置一个计数器。产生缺页中断时,把计数器取值最小的那个页面淘汰出去。3.最近最久未用页面淘汰算法

最近最久未用(LRU)页面淘汰算法的着眼点是在页面淘汰时,检查可淘汰对象的被访问时间,总是把最长时间未被访问过的页面淘汰出去。即该算法认为若一个页面刚被访问过,那么不久的将来被访问的可能性就大;否则被访问的可能性就小。123412512345123412512341234125123√√√123412512345√√√√√√页面走向3个内存块缺页计数:√缺页中断率:f=10/12=83%4.最近最少用页面淘汰算法5.最优页面淘汰算法

已知一个作业的页面走向,那么在进行页面淘汰时,把以后不再使用的或在最长时间内不会用到的页面淘汰出去,这样所引起的缺页中断次数肯定最小。这就是所谓的“最优(OPT)页面淘汰算法”。

遗憾的是,OPT的前提是要已知作业运行时的页面走向,这根本不可能做到,所以OPT页面淘汰算法没有实用价值,它只能用来作为一个标杆(或尺度),与别的淘汰算法进行比较。..

内存块为3时缺页中断率f

=

9/12;内存块为4时缺页中断率f

=

10/12。也就是说,对于这个页面走向,FIFO页面淘汰算法会出现异常现象。

它不仅打破了占据连续存储区的禁锢,而且也打破了要求作业全部进入内存的禁锢。由于它能够向用户作业提供虚拟存储器,从而解决了小内存大作业的矛盾。6.异常现象7.请求页式存储管理的特点

对FIFO页面淘汰算法,有时增加分配给作业的可用内存块数,它的缺页次数反而上升。通常把这称为“异常现象”。8.请求页式存储管理的缺点432143555211432143335224321444355√√√432143543215√√√√√√页面走向3个内存块缺页计数:√缺页中断率:f=9/12=75%4321115432154322215432144321543√√√432143543215√√√√√√页面走向4个内存块缺页计数:缺页中断率:f=10/12=83%44333215432.

它有分页式存储管理的所有特点。.

平均每个作业要浪费半页大小的存储块。也就是说,请求分页式存储管理会产生内部碎片。

某作业页面走向是4、3

温馨提示

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

最新文档

评论

0/150

提交评论