版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章 存储管理,1.,2.,3.,本章讲述内容:,4.,地址的静态重定位和动态重定位;,不同的存储管理方案;,存储共享和存储保护;,存储扩充和虚拟存储器。,3.1 固定分区存储管理,3.1.1地址重定位,几个概念,1.,地址重定位的定义,2.,0,100,1KB,2KB,3000,3KB,XXXXXX,call 100,用户程序A的 相对地址空间,XXXXXX,call 100,内存储器,0,20KB,20KB+100,21KB,22KB,20KB+3000,23KB,操作系统,X,XXXXXX,call 100,内存储器,0,20KB,20KB+100,21KB,22KB,20KB+300
2、0,23KB,操作系统,XXXXXX,call 100,内存储器,0,22KB,22KB+100,23KB,24KB,22KB+3000,25KB,操作系统,20KB,把用户程序指令中的相对地址变换成为所在绝对地址空间中的绝对地址的过程,称为“地址重定位”。,.,绝对地址(或物理地址),.,绝对地址空间(或物理地址空间),.,相对地址(或逻辑地址),.,相对地址空间(或逻辑地址空间),静态重定位是在程序运行之前完成地址重定位工作的;,3.1.2 地址的静态重定位,1.,静态重定位的定义,2.,谁来进行静态重定位,静态重定位是由操作系统中的重定位装入程序来完成。用户作业的相对于“0”编址的目标程
3、序,是重定位装入程序的输入。重定位装入程序按照分配区域的起始地址逐一调整目标程序指令中的地址部分。目标程序经过重定位后,不仅进到分配给自己的绝对地址空间中,而且程序指令里的地址部分全部进行了修正,反映出正确的存储位置。从而保证程序的正确运行。,3.,静态重定位的特点,.,.,.,静态重定位由软件实现,无须硬件提供支持;,实行静态重定位时,地址重定位工作是在程序装入时被一次集中完成的;,如果在程序运行之前,就为用户程序实行了地址重定位的工作,那么称这种地址重定位为地址的“静态重定位”。,.,.,绝对地址空间里的目标程序与原相对地址空间里的目标程序面目已不相同,因为前者进行了地址调整 ;,实施静态
4、重定位后,若用户程序在内存中做了移动,那么程序指令中的地址就不再反映所在存储位置了,除非重新进行地址重定位。,内存用户区又被分为“使用区”和“空闲区”两部分,分配给了用户、但又未使用的区域称为“内部碎片”。内部碎片的存在是对内存资源的一种浪费。,3.1.3,单一连续分区存储管理,1.,2.,单一连续分区存储管理的基本思想,单一连续区存储管理的特点,总体上把内存储器分为两个分区:一个分区固定分配给操作系统使用;另一个分配给用户使用,称为“用户区” 。,.,.,.,.,.,.,作业3,作业2,作业1,操作系统,用户区,内存,0,a,b,操作系统,使用区,内存,0,a,b,空闲区,用户区,c,操作系
5、统,使用区,内存,0,a,b,空闲区,c,a,界限寄存器,系统总是把整个用户区分配给一个用户使用 。,这种系统只适用于单用户(或单道)的情况。,作业独享系统中的所有资源,包括内存中的整个用户区。,采用这种存储分配策略时,将对用户程序实行静态重定位。,为阻止用户程序指令中的地址闯入操作系统所占用的区域,在CPU里设置一个用 于存储保护的 专用寄存器: “界限寄存器”。,作业比用户区小时,就会形成碎片,造成内存储器资源的浪费。,3.,单一连续分区管理的缺点,.,.,.,4.,覆盖技术,每次只能一个作业进入内存,故不适宜多道程序设计,系统的工作效率不高,资源利用率低下。,若用户作业的相对地址空间比用
6、户区大,该作业就无法运行。,“覆盖”是早期为程序设计人员提供的扩充内存的技术,中心思想是允许作业的若干个程序段使用同一个存储区域,共用的存储区被称为“覆盖区”。,MAIN(10KB),A(50KB),B(30KB),C(30KB),D(20KB),E(40KB),MAIN(10KB),A(50KB),B(30KB),C(30KB),D(20KB),E(40KB),0,180KB,连接装配,10KB,50KB,40KB,内存,MAIN,A或B,C或D或E,5.,对换技术,作业1,作业2,作业3,辅助存储器,内存储器,操作系统,用户区,换出,换入,基本思想:将作业都存放在辅存。每次只让其中的一个进
7、入内存投入运行。当运行中提出输入输出请求或分配给的时间片用完时,就把这个程序从内存“换出”到辅存,把辅存里的另一个作业“换入”运行 ,产生出“多道”的效果。,3.1.4,固定分区存储管理,1.,基本思想,所谓“固定分区”存储管理,是指预先把内存的用户区划分成若干个连续的分区,它们的尺寸可以相同,也可以不同。划分后,内存中分区的个数以及每个分区的尺寸保持不变。每个分区里只允许装入一个作业运行。,2.,对作业的组织,操作系统,第1分区(8KB),第2分区(32KB),第3分区(64KB),第4分区(132KB),0,256KB,20KB,A,B,C,D,E,F,操作系统,第1分区(8KB),第2分
8、区(32KB),第3分区(64KB),第4分区(132KB),0,256KB,20KB,A,B,C,D,E,F,.,每个分区设置一个后备作业队列,.,多个分区只设置一个后备作业队列,一个作业到达时,总是进入到“能容纳该作业的最小分区”的那个后备作业队列里去排队。,当某个分区空闲时,统一都到这一个队列里去挑选作业,装入运行。,作业尺寸比任何一个分区的长度都大时,就无法运行。,.,.,3.,分区的分配与释放,.,分区空闲时,若它的队列非空,就把该分区分配给队列的第一个作业使用;作业运行完毕,收回该分区,进行下一次分配。,每个分区设置一个后备作业队列,多个分区只设置一个后备作业队列,在任何一个分区释
9、放时,就根据分配方案从该队列里挑选一个作业装入运行。,4.,地址重定位与存储保护,在固定分区存储管理中,实行静态重定位。,.,在固定分区存储管理中,要防止用户程序对操作系统的侵扰,也要防止用户程序间的侵扰。因此设置一对专用寄存器:“低界限寄存器”和“高界限寄存器” ,用于存储保护 。,地址重定位,存储保护,0,a,b,c,d,a,b,作业1,作业2,作业3,第1分区,第2分区,第3分区,操作系统,低界限寄存器,高界限寄存器,CPU,5.,固定分区存储管理的特点与缺点,.,是最简单的、具有“多道”色彩的存储管理方案。,.,作业程序一次性全部装入分配给它的连续分区。,.,实行的是静态重定位。,.,
10、.,会产生内部碎片,引起内存资源的浪费。,在存储管理中,把那些无法分配出去满足作业存储请求的空闲区称为“外部碎片”。,3.2.1,可变分区存储管理的基本思想,3.2 可变分区存储管理,1.,基本思想,2.,内部碎片与外部碎片,在作业要求装入内存时,若当时内存中有足够的存储空间满足该作业的需求,那就划分出一个与作业相对地址空间同样大小的分区分配给它。,操作系统,空闲区,作业A (15KB),作业B (20KB),作业C (10KB),内存,操作系统,空闲区,作业A (15KB),作业B (20KB),内存,操作系统,空闲区,作业A (15KB),内存,操作系统,空闲区,作业A (15KB),内存
11、,作业B (20KB),作业C (10KB),.,.,内部碎片,外部碎片,在存储管理中,把分配给了用户而用户未用的存储区称为“内部碎片”。,静态重定位是在程序运行之前完成地址转换的;动 态重定位却是将地址转换的时刻推迟到指令执行时进行。,实行静态重定位,原来的指令地址部分被修改了;实行动态重定位,只是按照所形成的地址去执行这条指令,并不对指令本身做任何修改。,静态重定位是在装入时一次集中地把程序指令中所有要转换的地址全部加以转换;而动态重定位则是每执行一条指令时,对其地址加以转换。,静态重定位是由软件完成地址转换工作的;动态重定位则由一套硬件提供的地址转换机构来完成。,1.,基本思想,2.,地
12、址静态和动态重定位的比较,3.2.2,地址的动态重定位,把相对地址空间中的用户作业程序“原封不动” 地装入到分配给它的绝对地址空间中去。执行某条指令时,才根据当前程序所在区域,对指令中的地址进行重定位。即指令中地址的转换是在程序执行时动态完成的,故称为地址的“动态重定位”。,0,用户作业A的 相对地址空间,XXXXXX,100,1KB,2KB,3000,call 100,3KB,0,XXXXXX,22KB+100,23KB,24KB,22KB+3000,call 100,25KB,20KB,22KB,22KB,定位寄存器,22628,22528,操作系统,内存,.,.,.,.,一是调度到某作业
13、时,若系统的每个空闲区尺寸都小于它的需要,但空闲区总存储量大于它的存储请求,于是进行空闲区合并,得到一个大的空闲区,满足该作业的需要;一是只要有作业运行完归还所占用的存储区,系统就进行空闲区的合并。,释放区的前、后邻接分区都是空闲区。因此,释放区应该和前、后两个邻接的空闲区合并成一个新的空闲区。,释放区的前邻接分区是已分配区,后邻接分区是空闲区。因此,释放分区应该和后邻接的空闲区合并成一个新的空闲区。,释放分区的前邻接分区是空闲区,后邻接分区是已分配区。释放区应该和前邻接的空闲区合并成一个新的空闲区。,释放分区的前、后邻接分区都是已分配区,没有合并的问题存在。,3.2.3 空闲区的合并,1.,
14、前后相邻接分区的四种关系,2.,空闲分区合并的时机,已分配区,空闲区,释放分区,空闲区,已分配区,释放分区,空闲区,空闲区,释放分区,已分配区,已分配区,释放分区,.,.,.,.,若有作业运行结束,则根据作业名到已分配表里找到它的表目项,将该项的 “状态”改为“空”,随之在空闲区表里寻找一个状态为“空”的表目项,把释放分区的信息填入,并将表目项状态改为“空闲”。,作业提出存储需求时,查 空闲区表里状态为“空闲”的表 目项。若该项的尺寸能满足所 求,就将它一分为二:分配出 去的那部分在已分配表里找一 个状态为“空” 的表目项进行登 记,剩下的部分仍在空闲区表里占据一个表目项。,3.2.4 分区的
15、管理与组织方式,1.,表格法,设置两张表:“已分配表”和“空闲区表”。其中“序号”是表目项的顺序号,“起始地址”、“尺寸”、“状态” 都是该分 区的相应属性。由于系统中分 区的数目是变化的,因此每张 表格中的表目项数要足够的多, 暂时不用的表目项的状态被设 为“空”。,内存,操作系统,空闲区(8KB),作业B(32KB),空闲区(32KB),作业D(120KB),空闲区(300KB),序号,起始地址,尺寸,状态,1,2,3,4,5,0,20KB,28KB,60KB,92KB,212KB,512KB,28KB,32KB,作业B,空,空,空,92KB,120KB,作业D,序号,起始地址,尺寸,状态
16、,1,2,3,4,5,60KB,32KB,作业B,空闲,空,空,作业D,20KB,8KB,212KB,300KB,已分配表,空闲区表,.,.,.,把内存中的每个空闲分区视为一个整体,在它的里面开辟出两个单元,一个存放该分区的长度(size),一个存放它下一个空闲分区的起址(next),操作系统开辟一个单元,存放第1个空闲分区的起址,这个单元称为“链首指针”。最后一个空闲分区的next里存放标志“NULL” 。这样一来,系统里所有空闲分区被next连接成一 个链表。从链首指针出发,顺着各个空闲分 区的next往下走,就能到达每一个空闲分区。,20KB,8KB,60KB,2.,单链表法,.,siz
17、e,next,空闲区 长度,下一个空 闲区起址,空闲区,8KB,212KB,32KB,NULL,300KB,20KB,60KB,空闲区(8KB),32KB,212KB,空闲区(32KB),300KB,NULL,空闲区(300KB),作业B(32KB),作业D(120KB),0,20KB,28KB,60KB,92KB,212KB,512KB,内存,操作系统,链首指针,链首指针,.,基本思想,对提出的任何一个存储请求,从空闲区链表首指针开始查看一个个空闲区。若有满足要求的,按尺寸分配,调整next指针;若到达NULL未见满足要求,则分配失败。,存储分配,.,存储释放,作业完成任务后,将占用的存储区
18、 释放,链入空闲区链表(要调整指 针和空闲区合并)。,空闲区(300KB),size,next,.,3.,双链表法,基本思想,20KB,空闲区长度,下一个空 闲区起址,空闲区,300KB,NULL,作业B(32KB),作业D(120KB),0,20KB,28KB,60KB,92KB,212KB,512KB,内存,操作系统,链首指针,prior,上一个空 闲区起址,空闲区(32KB),32KB,212KB,60KB,20KB,空闲区(8KB),8KB,60KB,NULL,在每个空闲分区里,即存 放下一个空闲区起址next,也 存放它的上一个空闲区起址(prior)的 信息。这样,通过双向链表,就
19、可以方 便地由next找到一个空闲区的下一个空 闲区,也可以由prior找到一个空闲区的上一个空闲区。,.,存储合并,把释放区链入空闲区双向链表时,若通过它的prior发 现该释放区的前面一个空闲区的起址加上长度,等于释放 区的起址,那么说明它前面的空闲区与它直接邻接,应该 把这个释放区与原先的空闲区合并。若释放区起址加上长 度正好等于next所指的下一个空闲区的起址,那么说明它 与后面的空闲区直接邻接,应该把这个释放区与原先的空 闲区合并。,.,空闲区的两种组织形式,若将每个空闲分区按其起址由小到大排列在链表里,则把这种组织称为“地址法”;若按每个空闲分区的长度由小到大排列在链表里,则把这种
20、组织称为“尺寸法”。,最先适应算法:总是把最先找到的、满足存储需求的那个空闲分区作为分配的对象。,3.2.5 空闲分区的分配算法,1.,三种分配算法,2.,可变分区存储管理的特点,最佳适应算法:总是从当前所有空闲区中找出一个能够满足存储需求的、最小的空闲分区作为分配的对象 。,最坏适应算法:总是从当前所有空闲区中找出一个能够满足存储需求的、最大的空闲分区作为分配的对象。,.,.,.,3.,可变分区存储管理的缺点,.,.,作业一次性地全部装入到一个连续的存储分区中。,.,分区是按照作业对存储的需求划分的,因此不会出现内部碎片这样的存储浪费。,.,为确保作业能够在内存中移动,要由硬件支持实行指令地
21、址的动态重定位。,.,只要作业的存储需求大于系统提供的整个用户区,该作业就无法投入运行。,.,有可能出现极小的分区暂时分配不出去的情形,产生外部碎片。,由于是通过移动程序来达到分区合并的目的,势必增加系统在这方面的投入与开销。,用户作业仍然相对 于“0”进行编址,形成一 个连续的相对地址空间。操作系统按照内存块的尺寸对该空间进行划分,每一个分区被称为“页”,编号从0开始。,用户作业相对地址空间的划分,把整个内存储器划分成大小相等的许多分区,每个分区称为“块” 。比如把内存储器划分成n个分区,编号为0,1,2,n-1。块是存储分配的单位。,3.3 分页式存储管理,3.3.1 分页式存储管理的基本
22、思想,操作系统,内存储器,作业A(第2页),作业A(第0页),作业A(第1页),0,20KB,24KB,28KB,32KB,36KB,40KB,44KB,48KB,256KB,(04块),第5块,第6块,第7块,第8块,第9块,第10块,第11块,0,4KB,8KB,11KB,12KB,第0页,第1页,第2页,1092,108,(1, 1092),(2, 108),5188,9200,用户作业A的 相对地址空间,1.,内存的划分,2.,3.,相对地址的映射,用户相对地址空间中的每一个相对地址,都可以用数对“页号,页内位移”来表示。,用数对里的“页号”2去查作业A的页、块对应关系表。,把内存第7
23、块的起始地址与页内位 移相加,就得到了相对地址3000现在的绝对地址,即7K+952=8120。,记录作业A的页、块对应关系,4.,分页式存储管理的地址重定位,用户作业A的 相对地址空间,XXXXXX,call 3000,0,100,1KB,2KB,3000,3KB,952,第0页,第1页,第2页,内存储器,操作系统,call 3000,作业A(第0页),XXXXXX,952,作业A(第2页),作业A(第1页),0,4KB,4KB+100,5KB,6KB,7KB,7KB+952,8KB,9KB,10KB,(03块),第4块,第5块,第6块,第7块,第8块,第9块,(2, 952),用户作业A的
24、 页、块对应关系,页号,块号,0,1,2,4,9,7,7K+952=8120,.,.,.,运行到指令 “call 3000”时,把 相对地址 3000 转 换成:(2,952)。 计算公式是: 页号=相对地址/块尺寸 页内位移=相对地址%快尺寸,.,.,系统就去做指令“call 8120”,从而得到了正确地执行 。,利用内存记录作 业页、块对应关系的 表,就是“页表”。每 个作业都有自己的页 表。作业相对地址空 间有多少页,页表就 有多少个表项。为了地址转换, 硬件设置一个专用寄存器:“页 表控制寄存器”。进程调度时, 把调度到作业的页表起址和长度 放入寄存器中,达到映射不同作业地址的目的。,
25、3.3.2 分页式存储管理的地址转换,1.,数对(页号,页内位移)的形成,把块(或页)的尺寸限定只能是2 的方幂,那么利用计算机系统设定的地址结构,很容易得到相对地址所对应的数对(页号,页内位移) 。,0,15,0,14,0,13,0,12,1,11,0,10,1,9,1,8,1,7,0,6,1,5,1,4,1,3,0,2,0,1,0,0,0,15,0,14,0,13,0,12,1,11,0,10,1,9,1,8,1,7,0,6,1,5,1,4,1,3,0,2,0,1,0,0,0,15,0,14,0,13,0,12,1,11,0,10,1,9,1,8,1,7,0,6,1,5,1,4,1,3,0
26、,2,0,1,0,0,页号(2),页内位移(952),页号(11),页内位移(184),2.,页表与快表,.,利用内存构成页表,操作系统,内存储器,块号,页内位移,绝对地址,页表,起始地址,长度,页表控制寄存器,页号,页内位移,相对地址,CPU,用一组快速的硬件寄存 器构成公用页表。调度到谁时,就 把谁在内存的页表内容装入该组寄 存器中。这样硬件把页号与寄存器 组中所有的表项同时并行比较,立即输出与页号匹配的块号。这时无须访问内存,并且通过并行匹配直接完成地址变换,因此速度是快。,.,.,操作系统,内存储器,块号,页内位移,绝对地址,快速寄存器组,页号,页内位移,相对地址,CPU,快速寄存器组
27、,页表/快表,操作系统,内存储器,块号,页内位移,绝对地址,快表,页号,页内位移,相对地址,长度,起始地址,页表控制寄存器,页表,考虑到大多数程 序在一次调度运行时, 倾向于在少数页面中 进行频繁的访问(即 程序的“局部性”原理),因此 实际系统中的做法是采用内存 页表与快速寄存器组相结合的 解决方案,且只用极少几个快 速寄存器来构成寄存器组,起 名为:“相联寄存器”,或简称“快表”。,3.3.3 内存块的分配与回收,1.,对内存块的管理,.,.,存储分块表,单链表,操作系统,作业C第2页,作业B第0页,作业A第0页,空闲块,作业A第2页,空闲块,空闲块,作业B第1页,空闲块,空闲块,作业A第
28、1页,作业C第3页,作业C第0页,作业C第1页,空闲块,内存储器,0,64K,空闲块 链表起址,块号,状态,0,已分配,1,已分配,2,已分配,3,已分配,4,空闲,5,已分配,6,空闲,7,空闲,8,已分配,9,空闲,10,空闲,11,已分配,12,已分配,13,已分配,14,已分配,15,空闲,空闲块总数:6,系统维持一张表格,表格表项与内存 中的一块相对应, 记录该的块使用情况。 只要表格中 “空闲块总数” 记录的数目大于 请求的存储量,就可进行分配 ,并把分配出去的块的状态改为 “已分配” 。作业完成后归还存储块时,就把表中相应块的状态改为“空闲”。,单链表,存储分块表,把空闲块链接成
29、一个单链表加以管理,系统必须设置一个空闲块链表的起始地址指针,以便进行存储分配时能够找到空闲的内存块。无论是进行空闲块的分配还是作业完成后归还存储块,都要调整空闲块间的链表指针。,作业虽然不占据连续的存储区,但每次仍要求一次全部进入内存。因此,如果作业很大,其存储需求大于内存,那么还是存在小内存不能运行大作业的问题。,用户作业的相对地址空间按照块的尺寸划分成页。这种划分是在系统内部进行的,用户感觉不到,即对用户是“透明”的。,2.,分页式存储管理的特点,.,.,内存存储器事先被划分成相等尺寸的块,它是进行存储分配的单位。,.,.,相对地址空间中的页可以进入内存中的任何一个空闲块,并且分页式存储
30、管理实行的是动态重定位,因此它打破了一个作业必须占据连续存储空间的限制,作业在不连续的存储区里,也能够得到正确的运行。,3.,分页式存储管理的缺点,.,平均每一个作业要浪费半页大小的存储块。,.,位图,用二进制位与内存块的使用建立起关系,为“0”,表示对应块空闲;为“1”,表示对应块已分配。,1,1,1,1,0,1,0,0,1,0,0,1,1,1,1,0,空闲块总数:6,0,1,2,3,4,5,6,7,0,1,字节号,位号,位图,3.4 分段式及段页式存储管理,3.4.1 分段式存储管理的基本思想概念,用户的程序结构不是一维的,多由主程序及一些子程序、过程、函数或模块构成,还包括各种数据结构,
31、如堆栈、表格、变量等。即程序多由程序段和数据段组成。,.,1.,2.,用户程序的二维结构,段MAIN(0段),段P(1段),段D(2段),段Q(3段),call p,x,0,0,0,8KB,8KB,5KB,6KB,4KB,x:,x,.,分段支持用户二维观点的内存管理方案。作业的逻辑地址空间由一组段组成,每个段有自己的名称和长度,用户通过数对:段名,段内元素名指定某段中的地址。于是,用户的逻辑地址空间是二维的。,分段式存储管理中的逻辑地址,.,分段式存储管理中,逻辑地址用两个成分 描述:段名和段内元素名。系统接受了用户的逻 辑地址空间后,在内部就用段号s代替段名,用段内位移d代替段内元素名。,段
32、号s,段内位移d,31,16,15,0,.,在这种地址结构中,由于是各用16个2进制为表示段号s和段内位移d,因此允许用户逻辑地址空间最多有64K个段,每段的最大长度是64KB。,3.,分段式存储管理中的内存分配,.,在分段式存储管理中,作业逻辑地址空间的段原封不动离散地存放到内存的不同分区中。即系统为每个段分配一个连续的分区,而各段在内存中则不必连续。系统为每个作业进程设置一个段表,记录逻辑地址空间中各段在内存中的基址,通过段表实现逻辑地址到内存物理地址的映射。,段 0,MAIN,0,8KB,段 1,P,0,5KB,段 2,D,0,6KB,段 3,Q,0,4KB,逻辑地址空间,段号 段长 基
33、址,0 8KB,1 5KB,2 6KB,3 4KB,段表,段MAIN,段Q,段D,段P,操作系统,内存储器,比如,指令里给出一个逻辑地址s,d时,就用地址中的段号s去查段表,从那里得到该段在内存中的基址,由基址“加上”逻辑地址中的段内位移,就得到了所对应的物理地址。,.,4.,分段式与分页式的主要区别,分页是系统管理的需要,用户不知系统在 内部将自己的空间划分成页。因此,页是信息 的物理单位。分段是基于用户程序结构提出的 存储管理模式,用户知道自己的程序分多少段, 每段在逻辑上都是相对完整的一组信息。因此,段是信息的逻辑单位。,.,.,分页式存储管理中的页的尺寸是由系统确定的,它与内存块的大小
34、相同。段的长度取决于用户编写的程序,不同的段有不同的长度。,.,分页时,用户须把各程序段连接成一个相对于0编址的一维逻辑地址空间。但分段时,用户向系统提供的是一个二维的逻辑地址空间。,用相对地址中的段内位移d与该段 段长比较:如果大于段长,则表示该地址 出错;否则,由段的基址和段内位移d拼装出所需的绝对地址,从而实现对内存的访问。,若段号大于段表长度,表示越界出错。否则以段号为索引查段表,得到该段在内存的基址。,从CPU给出的相对地址数对:段号s,段内位移d中提取段号s。,3.4.2 分段式存储管理的地址转换过程,实施分段式存储管理时,系统为每个用户程序设置一个段表,用于记录各段在内存中的存放
35、信息。逻辑空间中有多少段,段表里就有多少个表项。每个表项包括的信息有段号、段长、该段的基址(即起始地址)等。,.,.,为完成地址变换,需要一个段表控制寄存器。当作业调度时,把调度到的作业的段表起址和段表长度(即段表表项的数目)放入寄存器中,以期达到映射不同作业的目的。,段表起址,段表长度,段表控制寄存器,段号s,段内位移d,相对地址,越界中断,段号 段长 基址,0,1,2,3,段表,d,内 存,操作系统,段 1,段 3,段 0,段 2,绝对地址,.,地址转换的具体步骤,(1),(2),(3),3.4.3 存储保护与共享,1.,分页式存储中的存储保护与共享,.,在页式环境下,存储保护以页面为单位
36、。在页表的每个表项里设置一个所谓的“保护位”,由该位的不同取值定义对应页是可读、可写或只可读等。,.,被共享的程序文本不一定正好在一个或几个完整的页面中,有可能一个页面中既有允许共享的内容,又有不能共享的私有数据。因此,在分页环境下实现页面的共享比较困难,但也不是不可能。,ed1,进程A的 逻辑地址空间,0,ed2,1,ed3,2,dataA,3,进程A的页表,0,3,1,2,3,4,6,2,ed1,进程B的 逻辑地址空间,0,ed2,1,ed3,2,dataB,3,进程B的页表,0,3,1,2,3,4,6,8,ed1,进程C的 逻辑地址空间,0,ed2,1,ed3,2,dataC,3,进程C
37、的页表,0,3,1,2,3,4,6,11,操作系统,dataA,dataB,dataC,ed1,ed2,ed3,0,1,2,3,4,5,6,7,8,9,10,11,12,.,若页面尺寸为50KB,文本编辑程序的代码是可重入的,需要3页,用户进程的数据段需要一页。那么每个用户进程的逻辑地址空间为4页。如图画出三个进程的逻辑地址空间和对应页表,它们的02页都划归给文本编辑程序使用(ed1,ed2,ed3),页表中的02表项都对应于块号3、4和6;各进程的数据页(即dataA、dataB、dataC)都位于自己空间的第3页,分别存放在内存的2、8和11块。,2.,分段式存储中的存储保护与共享,在分段
38、环境下,段是有完整意义的逻辑信息单位,为实行存储保护,只需在段表表项里增加权限位,指出每段是可读的、可写的或只执行的等。每次进行地址映射时,都将这次访问的类型与权限位比较,若不符合就产生出错中断。,.,.,在段式存储管理中很容易实现段的共享,只需在作业的段表中都增加一个表项,让该段的基址指向共享段在内存中的起始地址即可。,文本 编辑程序,段 0,程序段,段 1,数据段,段 2,进程A的逻辑地址空间,文本 编辑程序,段 0,程序段,段 1,数据段,段 2,进程B的逻辑地址空间,堆栈段,段 3,段号 段长 基址,0 25286 43062,1,2,进程A的段表,1,2,3,进程B的段表,段号 段长
39、 基址,0 25286 43062,进程A的数据段,文本编辑程序,进程B的数据段,进程A的程序段,进程B的堆栈段,进程B的程序段,操作系统,内 存,43062,比如进程A和B要对文本编辑程序进行共享,那么可把文本编辑程序作为它们地址空间中的段0,如图所示。若文本编辑程序存放在内存43062起始的连续分区里,那么在所对应的各段表中,段号为0的表项的基址都是43062,从而可共享该文本编辑程序。,.,3.4.4 段页式存储管理的基本思想,实行页式可以避免内存产生外部碎片,实行段式可以避免内存产生内部碎片。这表明分页和分段各有所长。若将分页和分段技术结合起来形成所谓的“段页式存储管理”,就必定能够取
40、长补短,获得更好的存储管理效果。,.,.,段页式存储管理的基本思想是将用户的作业地址空间按分段来管理(这与段式管理类同),系统在内部将该空间中的每一段按内存块的尺寸划分成固定大小的页(这与分页式管理类同)。在这样的管理模式下,任何一个作业有一个段表,作业中的每个段有一个页表。系统通过一个段表和若干个页表,实现对作业存储空间的管理和地址转换。,.,0,4KB,8KB,14KB,16KB,第0页,第1页,12KB,第2页,第3页,段MAIN,第0页,第1页,段SUBP,第0页,第1页,段DATA,第2页,段号s,段内位移d,段内页号p,页内位移w,用户逻辑 地址空间中的 地址结构将由 如图所示的三
41、 个部分组成: 段号s,段内 页号p,页内 位移w。其中, 段内页号p和 页内位移w是 由段内位移d分解而成。,块号与相对地址 中的页内位移进行拼装,得到所需要的物理地址,完成相对地址的一次转换。,3.4.5 段页式存储管理的地址转换过程,段表起址,段表长度,段表控制寄存器,段号s,段内页号p,相对地址,越界中断,段号 页表长度 页表起址,0,1,2,3,段表,w,内 存,操作系统,段 1,1段0页,页内位移w,0,1,2,3,第1段的页表,0,1,2,第0段的页表,1段1页,1段2页,1段3页,w,p,s,绝对 地址,在段页式存储管理中,逻辑地址为(段号s,段内页号p,页内位移w),其地址转
42、换过程如图所示。,.,.,地址转换的具体步骤如下,(1),从段表控制寄存器读取段表起始地址,得到运行作业的段表。,(2),段表起示地址与相对地址中的段号s进行拼装,查段表中的相应表项,得到该段页表在内存的起 始地址。,(3),页表起 始地址与相对地址中的段内页号p进行拼装,查页表中的相应表项,得到该页在内存中的块号。,(4),3.5 虚拟存储与请求页式存储管理,3.5.1 虚拟存储的概念,1.,作业程序不必全部在内存,由于程序执行具有“局部性”,因此实际运行时,没有必要把全部信息都放在内存里。只要合理组织,调度恰当,在发现所需访问的信息不在内存时,能够找到它,能够把它调入内存,那么不仅可以保证
43、作业的正确执行,而且还提高了系统的资源利用率,使得系统具有更高的运行效率。,2.,虚拟存储的概念,作业提交给系统时,先进入辅存。运行时,只将部分信息装入内存,大部分仍保存在辅存中。运行过程中需要用到不在内存的信息时,再把它们调入,以保证程序的正常运行。这样一个被用户认为有的、但实际上不存在的“大”存储器,就被称为“虚拟存储器”。,.,.,虚拟存储器是一种扩大内存容量的设计技术,它把辅存作为计算机内存的后援。在虚拟存储意义下,用户作业的相对地址空间,就是系统提供给他的虚拟存储器。在多道程序设计环境下,每个用户都有自己的虚拟存储器。在提供虚拟存储管理的系统里,把用户作业的相对地址空间称为“虚拟地址
44、空间”,里面的地址称为“虚拟地址”。,3.5.2 请求页式存储管理的基本思想,最多可有2048页,每页1KB,第0页,第1页,第2页,虚拟存储器,第2045页,第2046页,第2047页,第0块,第1块,第2块,第29块,第30块,第31块,内存储器,1.,与分页式相同处,把内存划分成尺寸相同、位置固定的块。然后按照内存 块的大小,把作业的虚 拟地址空间(即以前的 相对地址空间)划分成 页。由于页的尺寸与块 一样,因此虚拟地址空 间中的一页,可以装入 到内存中的任何一块中。,2.,与分页式不同处,作业全部进入辅 存。运行时,只装入 要用的若干页,其他页仍在辅存。运 行过程中,虚拟地址被转换成数
45、对: (页号,页内位移)。由页号查页表,若该页在内存,运行就进行下去;若该页不在内存,表明“缺页”,运行无法继续。这时,就根据页号把该页从辅存调入内存。所谓“请求分页式”,即是当运行中需要某页时,再把它从辅存调入内存使用的意思。,中断处理程序查存储分块表,找空闲块;根据页在辅存的位置,启动磁盘读信息。,2,1,7,3.5.3 缺页中断的处理,1.,缺页中断位,页号,块号,缺页中断位,辅存地址,在请求分页式存储管理中,是 由页表表目项的“缺页中断位”来判断所需页是否在内存的。该位为“1”,表示此页在内存;为“0”,表示不在内存,并发出“缺页”中断信号,以求得系统的处理。,2.,缺页中断处理过程,
46、作业2 虚拟地址空间,0,518,4KB,8KB,8300,12KB,call 8300,第0页,第1页,第2页,XXXXXX,2,0,5,1,1,4,0,1,2,操作系统,第7块,作业2的页表,内存储器,作业2 第2页,根据执行指令中的虚拟地址,(页号,页内位移)。用页号去查页表,判断该页是否在内存。,若该页缺页中 断位为“0”,产生缺页 中断,进行中断处理。,把从磁盘上读出的信息装入到分配的内存块中。,修改页表中相应的表目内容,修改存储分块表里相应表目的状态。,在完成所需页面的装入后,返回原指令重新执行。,(1),(2),(3),(4),(5),(6),假定一个作业运行的页面走向中涉及的页
47、面总数为A,其中有F次缺页,必须通过缺页中断把它们调入内存。定义: f=F/A 称 f 为 “缺页中断率” 。显然 ,缺页中断率与缺页中断的次数有密切的关系。,缺页中断处理完成后,仍返回到原指令去重新执行,因为那条指令并未执行。而一般中断则是返回到下一条指令去执行,因为这条指令已经执行完毕了。,缺页中断是在执行一条指令时产生的中断,并立即转去处理;一般中断则是在一条指令执行完后,发现有中断请求时才去响应和处理 。,3.,缺页中断与一般中断的区别,.,.,4.,页面走向和缺页中断率,作业运行时,虚拟地址在随时发生变化,它是程序的执行轨迹,是程序的一种动态特征。由于每个虚拟地址都与一个数对:(页号,页内位移)相对应,因此这种动态特征可以用程序执行时页号的变化来描述。通常,称一个程序执行过程中页号的变化序列为“页面走向”。,.,.,用户作业程序,100 LOAD 1#, 1120,104 ADD 1#, 2410,108 STORE 1#, 1124,虚拟地址,100,1120,104,2410,108,1124,数对:(页号, 页内位移),(0, 100),(1, 96),(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026成都环境投资集团有限公司市场化选聘中层管理人员1人考试参考题库及答案解析
- 2026年建筑施工安全事故应急题库
- 2026年葡萄酒品鉴师考试葡萄酒品鉴师继续教育路径题
- 2026年文化馆音乐辅导员考试和声学基础四部和声和弦连接题
- 2026年产品经理面试模拟题集市场分析与预测
- 2026山西忻州市招聘就业困难高校毕业生公益性岗位人员20人考试备考试题及答案解析
- 2026年金融风险管理面试要点解析
- 2026北京市丰台区王佐镇社区卫生服务中心招聘1人考试参考题库及答案解析
- 2026年网格化残疾人服务保障知识试题
- 2026年市干部综合素质考核指南与题解
- 2025年爆破公司自查自纠报告及整改措施范文
- 试验样机管理办法
- 安徽省合肥市四十五中学2026届中考二模英语试题含答案
- 珍惜时间200字11篇
- 幼儿园谷雨课件
- 量子计算入门:通过线性代数学习量子计算 课件 第11章 量子傅里叶变换
- 行政处罚法专题培训课件
- 统计知识党校培训课件
- 2025年四川省泸州市中考道德与法治真题(附答案解析)
- 传统曲艺进高校活动方案
- 心电图基础知识与识图理论考核试题题库及答案
评论
0/150
提交评论