第4章存储管理-上_第1页
第4章存储管理-上_第2页
第4章存储管理-上_第3页
第4章存储管理-上_第4页
第4章存储管理-上_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

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

文档简介

1、第四章第四章 存储器管理存储器管理 存储器管理内容1.概述概述2.连续分配存储管理方式连续分配存储管理方式3. 不连续分配存储管理方式不连续分配存储管理方式页式存储管理页式存储管理段式存储管理段式存储管理段页式存储管理段页式存储管理4.虚拟存储虚拟存储一、概述存储器的层次结构存储器的层次结构 内存:无限容量大,速度内存:无限容量大,速度无限快,永久性存储器无限快,永久性存储器金钱、技术金钱、技术存储管理存储管理寄存器高速缓存主存磁盘缓存磁盘可移动存储介质CPU寄存器主存辅存一、概述 存储管理的目的存储管理的目的主存的分配和管理主存的分配和管理提高主存储器的利用率提高主存储器的利用率“扩充扩充”

2、主存容量主存容量存储保护存储保护二、概述-程序的装入和链接对用户程序的处理步骤对用户程序的处理步骤库链接程序装入模块装入程序编译程序产生的目标模块第一步:编译第二步:链接第三步:装入内存地址映射地址映射Load A 1200 3456 。 。1200物理地址空间物理地址空间Load A data1data1 3456源程序源程序Load A 200 34560100200编译编译连接连接逻辑地址空间逻辑地址空间BA=1000名空间、地址空间、存储空间2.1.2.1.程序的装入程序的装入绝对装入方式 程序中所使用的绝对地址,可在编译或汇编时给出,程序中所使用的绝对地址,可在编译或汇编时给出, 也

3、可由程序员直接赋予。也可由程序员直接赋予。 但在由程序员直接给出绝对地但在由程序员直接给出绝对地址时,址时, 不仅要求程序员熟悉内存的使用情况,而且一旦不仅要求程序员熟悉内存的使用情况,而且一旦程序或数据被修改后,可能要改变程序中的所有地址。程序或数据被修改后,可能要改变程序中的所有地址。因此,通常是宁可在程序中采用符号地址,然后在编译因此,通常是宁可在程序中采用符号地址,然后在编译或汇编时,再将这些符号地址转换为绝对地址。或汇编时,再将这些符号地址转换为绝对地址。可重定位装入方式动态运行时装入方式 动态运行时的装入程序,在把装入模块装入内存后,动态运行时的装入程序,在把装入模块装入内存后,并

4、不立即把装入模块中的相对地址转换为绝对地址,而并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行。因是把这种地址转换推迟到程序真正要执行时才进行。因此此,装入内存后的所有地址都仍是相对地址。装入内存后的所有地址都仍是相对地址。绝对装入方式绝对装入方式MOV 1000,5CALL 100printf0100400a1000逻辑地址空间逻辑地址空间MOV 1000,5CALL 100printf0100400a1000物理地址空间物理地址空间可重定位装入方式可重定位装入方式MOV 1000,5CALL 100printf0100400a1000逻辑地址空间

5、逻辑地址空间MOV , 5CALLprintf400041004400a5000物理地址空间物理地址空间50004100MOV 1000 , 5CALL 100printf400041004400a5000CPU+4000重定位寄存器重定位寄存器MMUMOV 1000,51000逻辑地址逻辑地址5000物理地址物理地址动态运行时装入方式动态运行时装入方式2.2.2.2.程序的链接程序的链接静态链接方式在程序运行之前,先将各目标模块及它们所需的库在程序运行之前,先将各目标模块及它们所需的库函数,链接成一个完整的装配模块,以后不再拆开。函数,链接成一个完整的装配模块,以后不再拆开。装入时动态链接在

6、装入内存时是边装入内存,边装入边链接,即在在装入内存时是边装入内存,边装入边链接,即在装入一个目标模块时,若发生一个外部模块调用,装入一个目标模块时,若发生一个外部模块调用,将引起装入程序去找出相应的外部目标模块,并将将引起装入程序去找出相应的外部目标模块,并将它装入内存。它装入内存。运行时动态链接对某些目标模块的链接,是在程序执行中需要该对某些目标模块的链接,是在程序执行中需要该(目标)模块时,才对它进行的链接。(目标)模块时,才对它进行的链接。静态链接方式 在将这几个目标模在将这几个目标模块装配成一个装入块装配成一个装入模块时,须解决以模块时,须解决以下两个问题:下两个问题: (1) (1

7、) 对相对地址进对相对地址进行修改。行修改。 (2) (2) 变换外部调用变换外部调用符号。符号。程序链接示意图装入时动态链接装入时动态链接方式有以下优点:装入时动态链接方式有以下优点: 便于修改和更新。便于修改和更新。 (2) 便于实现对目标模块的共享。便于实现对目标模块的共享。运行时动态链接运行时动态链接(Run-time Dynamic Linking) 近几年流行起来的运行时动态链接方式,是对上述在装入近几年流行起来的运行时动态链接方式,是对上述在装入时链接方式的一种改进。这种链接方式是时链接方式的一种改进。这种链接方式是将对某些模块的将对某些模块的链接推迟到执行时才执行链接推迟到执行

8、时才执行,亦即,在执行过程中,当发现,亦即,在执行过程中,当发现一个被调用模块尚未装入内存时,立即由一个被调用模块尚未装入内存时,立即由OS去找到该模去找到该模块并将之装入内存,块并将之装入内存, 把它链接到调用者模块上。凡在执把它链接到调用者模块上。凡在执行过程中未被用到的目标模块,都不会被调入内存和被链行过程中未被用到的目标模块,都不会被调入内存和被链接到装入模块上,这样不仅可加快程序的装入过程,而且接到装入模块上,这样不仅可加快程序的装入过程,而且可节省大量的内存空间。可节省大量的内存空间。 三、连续内存分配方式三、连续内存分配方式单一连续分配单一连续分配 分区式分配分区式分配固定分区式

9、动态分区式动态重定位分配动态重定位分配3.1 单一连续分配单一连续分配(1 1)基本原理:基本原理: 内存分为两个区域:内存分为两个区域:系统区,用于操作系统系统区,用于操作系统;用户区,用于用户进程。用户区某一时刻只能存放用户区,用于用户进程。用户区某一时刻只能存放一个用户进程,称为一个用户进程,称为“单道,单一单道,单一”用户程序用户程序位于位于RAM中的中的操作系统操作系统0 xFFF.0位于位于RAM中的中的操作系统操作系统用户程序用户程序0ROM中的中的设备驱动程序设备驱动程序用户程序用户程序位于位于RAM中的中的操作系统操作系统0(2)内存的分配和回收)内存的分配和回收一般用户单道

10、系统一般用户单道系统用时分配,空闲回收用时分配,空闲回收(3)内存的保护)内存的保护为了防止用户程序破坏操作系统的代码为了防止用户程序破坏操作系统的代码和数据,要采取一些保护措施。和数据,要采取一些保护措施。采用动态重定位时加一些保护措施,用采用动态重定位时加一些保护措施,用到两个寄存器:到两个寄存器:重定位寄存器:用户程序装入内存的起重定位寄存器:用户程序装入内存的起始地址始地址界限寄存器:存放用户程序的长度界限寄存器:存放用户程序的长度物理地址物理地址CPU界限寄存器界限寄存器重定位寄存器重定位寄存器内存内存逻辑逻辑地址地址是是否否地址错误地址错误3.2.3.2.固定分区分配固定分区分配

11、1 基本原理基本原理分区分区4分区分区3分区分区2分区分区1操作系统操作系统输入队列输入队列2 划分分区的方法划分分区的方法(1)分区大小相等分区大小相等,即使所有的即使所有的内存分区大小相等。适用内存分区大小相等。适用于控制多个相同对象。于控制多个相同对象。 (2) 分区大小不等。分区大小不等。 多个较小多个较小的分区,适量的中等分区的分区,适量的中等分区及少量的大分区及少量的大分区3.3.内存分配内存分配 固定分区使用表固定分区使用表 如何回收如何回收3.3 3.3 动态分区分配动态分区分配 1 基本原理基本原理 根据进程的需要动态地分配连续的内存空间。实现根据进程的需要动态地分配连续的内

12、存空间。实现时涉及到三个问题:分区分配中的数据结构、分区时涉及到三个问题:分区分配中的数据结构、分区分配算法和分区的分配与回收。分配算法和分区的分配与回收。2 分区分配中的数据结构分区分配中的数据结构空闲分区表空闲分区表 空闲分区链空闲分区链0操作系统操作系统400K2560K11000KP3,300K2000K2300K260K300KP4,700K100KP5,500K900K1700K起始地址长度900K100K1700K300K2300K260K空闲分区表空闲分区表900K100K1700K300K2300K260KNULL空闲分区链空闲分区链可变分区模式的工作流程可变分区模式的工作流

13、程先看一个例子。一个计算机有先看一个例子。一个计算机有2560K2560K内存,采用可变分区模式管理内存,采用可变分区模式管理内存,操作系统占用低地址的内存,操作系统占用低地址的400K400K空间,剩余空间,剩余2160K2160K的空间为用户区。的空间为用户区。最初整个用户区是空闲的,就一最初整个用户区是空闲的,就一个分区。然后随着用户程序的创建个分区。然后随着用户程序的创建和撤销。分区的个数和大小位置开和撤销。分区的个数和大小位置开始变化。始变化。P1来,来,600K0操作系统操作系统400K2560K1P1,600K1000K1560K内存的初始状态内存的初始状态P2来,来,1000K

14、0操作系统操作系统400K2560K1P1,600K1000K560K2000KP2,1000K0操作系统操作系统400K2560K12160KP3来,来,300K0操作系统操作系统400K2560K1P1,600K1000KP3,300K2000KP2,1000K2300K260KP2结束结束0操作系统操作系统400K2560K1P1,600K1000KP3,300K2000K2300K260K1000KP4来来 700KP1结束结束P5来来 500K0操作系统操作系统400K2560K11000KP3,300K2000K2300K260K300KP4,700K600K1700K0操作系统操

15、作系统400K2560K11000KP3,300K2000K2300K260K300KP4,700K100KP5,500K900K1700K0操作系统操作系统400K2560K1P1,600K1000KP3,300K2000K2300K260K300KP4,700K1700K3.分区分配算法分区分配算法 首次适应算法首次适应算法FF 循环首次适应算法循环首次适应算法 最佳适应算法最佳适应算法 最坏适应算法最坏适应算法 快速适应算法快速适应算法 首次适应算法首次适应算法 该算法要求空闲分区链按照空闲分区该算法要求空闲分区链按照空闲分区起始地址递增起始地址递增的次序排序。的次序排序。 在分配内存时

16、,每次都从链首开始查找,直至找到在分配内存时,每次都从链首开始查找,直至找到一个长度大于用户程序的分区,就进行分配。一个长度大于用户程序的分区,就进行分配。 倾向于优先利用内存中低址部分的内存,从而保留倾向于优先利用内存中低址部分的内存,从而保留高址的大空闲区,但是低址部分会留下许多难以利高址的大空闲区,但是低址部分会留下许多难以利用的、很小的内存空闲区,增加查找时间用的、很小的内存空闲区,增加查找时间 循环首次适应算法循环首次适应算法 该算法是从首次适应算法演变而来的。在分配内存该算法是从首次适应算法演变而来的。在分配内存时,不再是每次都从链首开始找,而是从上次找到时,不再是每次都从链首开始

17、找,而是从上次找到的空闲分区的下一个节点开始找。到了链尾,再从的空闲分区的下一个节点开始找。到了链尾,再从链首开始找。链首开始找。 内存中空闲区分布的比较均匀,减少查找时间,但内存中空闲区分布的比较均匀,减少查找时间,但会缺乏大的空闲区。会缺乏大的空闲区。 最佳适应算法最佳适应算法 所谓所谓“最佳最佳”是指分配内存时,总是把是指分配内存时,总是把满足要求的满足要求的最小分区最小分区分配给用户程序。分配给用户程序。 为了加快分配速度,可以把空闲分区链按照空闲分为了加快分配速度,可以把空闲分区链按照空闲分区的大小递增的顺序排序,则找到的第一个满足要区的大小递增的顺序排序,则找到的第一个满足要求的分

18、区即是最佳的。求的分区即是最佳的。 每次分配剩下的内存是最小的,导致存储区留下许每次分配剩下的内存是最小的,导致存储区留下许多难以利用的小空闲区多难以利用的小空闲区 最坏适应法最坏适应法 将空闲区从大到小分配,每次都分配最大的空闲区。将空闲区从大到小分配,每次都分配最大的空闲区。 优点是可使剩下的空闲区不至于太小,产生碎片的优点是可使剩下的空闲区不至于太小,产生碎片的几率最小,适合中小作业,同时分配算法查找效率几率最小,适合中小作业,同时分配算法查找效率最高。最高。 缺点导致缺乏大空闲区缺点导致缺乏大空闲区。以上以上4种算法都为顺序搜索法种算法都为顺序搜索法 快速适应算法:又称为分类搜索法快速

19、适应算法:又称为分类搜索法 将空闲分区根据其容量大小进行分类,对于每一类具将空闲分区根据其容量大小进行分类,对于每一类具有相同容量的所有空闲分区,单独设立一个空闲分区有相同容量的所有空闲分区,单独设立一个空闲分区链表,在内存中设立一张管理索引表,该表的每一表链表,在内存中设立一张管理索引表,该表的每一表项对应了一个空闲分区类型并记录了该类型空闲分区项对应了一个空闲分区类型并记录了该类型空闲分区链表表头的指针。空闲分区的分类是根据进程常用的链表表头的指针。空闲分区的分类是根据进程常用的空间大小进行划分,如空间大小进行划分,如2KB,4KB,8KB等。等。 优点:查找效率高,根据进程的长度,寻找到

20、能容纳优点:查找效率高,根据进程的长度,寻找到能容纳它的最小空闲区链表,取下第一块进行分配即可。能它的最小空闲区链表,取下第一块进行分配即可。能保持大空间需要,也不会产生内存碎片,保持大空间需要,也不会产生内存碎片, 分区归还主存时算法复杂,系统开销较大。分区归还主存时算法复杂,系统开销较大。4.分区分配操作分区分配操作 分配内存分配内存 从头开始查表检索完否?m.size u.size?m.size u.sizesize?从该分区中划出u.size大小的分区将该分区分配给请求者修改有关数据结构返回返回继续检索下一个表项将该分区从链中移出YNNYYN内存分配流程回收内存回收内存 根据回收区的首

21、址,从空闲区链表中找到相应根据回收区的首址,从空闲区链表中找到相应的插入点,可能出现以下的插入点,可能出现以下4 4种情况:种情况:P2P1P3P1运行结束运行结束P2P1P3F1P3运行结束运行结束P1所占分区的上下都不空闲,在空闲分区所占分区的上下都不空闲,在空闲分区链中添加一项,填写回收区的首址和大小链中添加一项,填写回收区的首址和大小P3所占分区下边的分区所占分区下边的分区F1空闲,应进行空闲,应进行合并。在空闲分区链中找到合并。在空闲分区链中找到F1节点,修节点,修改其起始地址和长度改其起始地址和长度P2P1P3F1P2运行结束运行结束P2所占分区上边的分区所占分区上边的分区F1空闲

22、,应空闲,应进行合并。在空闲链表中找到进行合并。在空闲链表中找到F1节节点,修改其长度点,修改其长度P2P1P3F1F2P1运行结束运行结束P2P2所占分区上下边的分区所占分区上下边的分区F1和和F2都空都空闲,应进行合并。在空闲链表中找到闲,应进行合并。在空闲链表中找到F1节点,修改其长度为节点,修改其长度为F1、F2和和P2所所占分区的长度和。删除占分区的长度和。删除F2节点节点伙伴系统伙伴系统固定分区和动态分区方式都有不足之处。固定分区方式固定分区和动态分区方式都有不足之处。固定分区方式限制了活动进程的数目,当进程大小与空闲分区大小不匹配限制了活动进程的数目,当进程大小与空闲分区大小不匹

23、配时,内存空间利用率很低。动态分区方式算法复杂,回收空时,内存空间利用率很低。动态分区方式算法复杂,回收空闲分区时需要进行分区合并等,系统开销较大。伙伴系统方闲分区时需要进行分区合并等,系统开销较大。伙伴系统方式是对以上两种内存方式的一种折衷方案。式是对以上两种内存方式的一种折衷方案。 伙伴系统规定,无论已分配分区或空闲分区,其大小均伙伴系统规定,无论已分配分区或空闲分区,其大小均为为2 2的的k k次幂,次幂,k k为整数,为整数,lkm,其中:,其中:21表示分配的最小表示分配的最小分区的大小,分区的大小,2m表示分配的最大分区的大小,通常表示分配的最大分区的大小,通常2m是整个是整个可分

24、配内存的大小。可分配内存的大小。 假设系统的可利用空间容量为假设系统的可利用空间容量为2m个字,则系统开始运行个字,则系统开始运行时,整个内存区是一个大小为时,整个内存区是一个大小为2m的空闲分区。在系统运行的空闲分区。在系统运行过程中,由于不断的划分,可能会形成若干个不连续的空闲过程中,由于不断的划分,可能会形成若干个不连续的空闲分区,将这些空闲分区根据分区的大小进行分类,对于每一分区,将这些空闲分区根据分区的大小进行分类,对于每一类具有相同大小的所有空闲分区,单独设立一个空闲分区双类具有相同大小的所有空闲分区,单独设立一个空闲分区双向链表。这样,不同大小的空闲分区形成了向链表。这样,不同大

25、小的空闲分区形成了k(0km)个空个空闲分区链表。闲分区链表。 当需要为进程分配一个长度为当需要为进程分配一个长度为n的存储空间时,首先计的存储空间时,首先计算一个算一个i值,使值,使2i1紧凑-程序地址变化操作系统操作系统P110KP315KP730KP8操作系统操作系统P110KP315KP730KP8紧凑技术紧凑技术compaction2 2)动态重定位的实现)动态重定位的实现 动态重定位示意图动态重定位示意图 LOAD1,25003650100250050002500相对地址10000重定位寄存器LOAD1,250036510000101001250015000作业J处理机一侧 存储器

26、一侧主存3 )动态重定位分区分配算法)动态重定位分区分配算法 动态分区分配算法流程图动态分区分配算法流程图 请求分配u.size分区检索空闲分区链(表)找到大于u.size的可用区否?按动态分区方式进行分配修改有关的数据结构返回分区号及首批空闲分区总和u.size?进行紧凑形成连续空闲区修改有关的数据结构否是无法分配返回否7、交换(、交换(Swapping)交换交换(Swapping)的引入的引入 为了提高内存的利用率,出现了交换技术。为了提高内存的利用率,出现了交换技术。 进程在运行过程中经常因为进行进程在运行过程中经常因为进行I/O操作和等待其他事操作和等待其他事件而阻塞,无法执行。系统在

27、内存紧张时把这些进程件而阻塞,无法执行。系统在内存紧张时把这些进程暂时换出内存放入外存,腾出内存分配给有条件运行暂时换出内存放入外存,腾出内存分配给有条件运行的进程。的进程。 所谓所谓“对换对换”, 是指把内存中暂时不能运行的进程或是指把内存中暂时不能运行的进程或者暂时不用的程序和数据,调出到外存上,以便腾出者暂时不用的程序和数据,调出到外存上,以便腾出足够的内存空间,再把已具备运行条件的进程或进程足够的内存空间,再把已具备运行条件的进程或进程所需要的程序和数据,调入内存。对换是提高内存利所需要的程序和数据,调入内存。对换是提高内存利用率的有效措施。用率的有效措施。 以进程为单位进行交换以进程

28、为单位进行交换对换空间的管理对换空间的管理 在外存上,系统管理着专门的空间用于存放从内存换出的进程,这空间称为对换区。 为了能对对换区中的空闲盘块进行管理,在系统中应配置相应的数据结构,以记录外存的使用情况。其形式与内存在动态分区分配方式中所用数据结构相似,即同样可以用空闲分区表或空闲分区链。在空闲分区表中的每个表目中应包含两项, 即对换区的首址及其大小,它们的单位是盘块号和盘块数。进程的换出与换入进程的换出与换入 进程的换出:每当一进程由于创建子进程而需进程的换出:每当一进程由于创建子进程而需要更多的内存空间,但又无足够的内存空间等要更多的内存空间,但又无足够的内存空间等情况发生时,系统应将

29、某进程换出。情况发生时,系统应将某进程换出。 其过程是:其过程是:系统首先选择处于阻塞状态且优先级最低的进系统首先选择处于阻塞状态且优先级最低的进程作为换出进程,然后启动盘块,将该进程的程作为换出进程,然后启动盘块,将该进程的程序和数据传送到磁盘的对换区上。若传送过程序和数据传送到磁盘的对换区上。若传送过程未出现错误,便可回收该进程所占用的内存程未出现错误,便可回收该进程所占用的内存空间,并对该进程的进程控制块做相应的修改空间,并对该进程的进程控制块做相应的修改 选择阻塞、优先级低选择阻塞、优先级低-将次进程保持到交换区将次进程保持到交换区-回收内存回收内存 进程的换入进程的换入交换区中选择交

30、换区中选择“就绪就绪”、时间最久、时间最久-换入到内存。换入到内存。四、基本分页存储管理四、基本分页存储管理 4.1 基本原理基本原理 把用户的程序空间把用户的程序空间(逻辑地址空间)划分成大小相等的逻辑地址空间)划分成大小相等的块,称为块,称为页(面)、逻辑页页(面)、逻辑页,从,从0开始给页编号。开始给页编号。 页的大小应是页的大小应是2的的n次幂,通常是次幂,通常是512B8KB 物理内存按照页的大小也划分成大小相等的区域,称物理内存按照页的大小也划分成大小相等的区域,称为为页框、物理页、物理块页框、物理页、物理块,从,从0开始编号开始编号 内存分配:将进程空间中的逻辑页面映射到物理空间

31、内存分配:将进程空间中的逻辑页面映射到物理空间中空闲的页面中空闲的页面.0123456程序逻辑空间程序逻辑空间内存物理空间内存物理空间01234567要求要把程序的要求要把程序的所有页所有页都装入到内存后,都装入到内存后,程序才能运行。程序才能运行。用户程序分页逻辑地址的结构:用户程序分页逻辑地址的结构: 32位位 011位页内地址(每页大小为位页内地址(每页大小为4KB=212KB););1231页号(地址空间最多允许有页号(地址空间最多允许有1M=220页)页)页号页号 页内地址页内地址0111231对于某特定机器,其地址结构是一定的。若给定一个逻对于某特定机器,其地址结构是一定的。若给定

32、一个逻辑地址空间中的地址为辑地址空间中的地址为A,页面的大小为,页面的大小为L,则页号,则页号P和页内和页内地址地址d可按下式求得:可按下式求得: AMODLdLAINTP其中,其中,INT是整除函数,是整除函数,MOD是取余函数。例如,其系统的是取余函数。例如,其系统的页面大小为页面大小为1 KB,设,设A = 2170 B则由上式可以求得则由上式可以求得P = 2,d = 122。 2、数据结构、数据结构(1)内存页表:)内存页表:要完成内存物理页的分配,则必须知道哪些物要完成内存物理页的分配,则必须知道哪些物理页空闲,哪些被占用。要用一个数据结构来随理页空闲,哪些被占用。要用一个数据结构

33、来随时记录内存的情况,这个数据结构称为时记录内存的情况,这个数据结构称为内存页表内存页表。01234n0,空闲,空闲1,被占用,被占用问题:内存页表有多少项?与问题:内存页表有多少项?与哪些因素有关?哪些因素有关?回答:回答: 内存页表的行数内存页表的行数内存的大小内存的大小 / 页的大小页的大小(2)进程页表)进程页表内存页表中的空闲物理页是随着不断内存页表中的空闲物理页是随着不断的分配与回收而随机分布的。因此一个的分配与回收而随机分布的。因此一个程序的所有页装入到哪些内存物理页也程序的所有页装入到哪些内存物理页也是随机的。这就需要为是随机的。这就需要为每一个进程每一个进程建立建立一张表,来

34、记录该进程的每一页都装入一张表,来记录该进程的每一页都装入到哪个物理页去了,这张表称为到哪个物理页去了,这张表称为进程页进程页表。表。 进程页表进程页表0123456用户程序空间用户程序空间内存物理空间内存物理空间01234567421311221824进程页表进程页表用户程序0 页1 页2 页3 页4 页5 页n 页页表页号块号02132638495内存012345678910问题:进程页表放在哪儿?问题:进程页表放在哪儿?回答:内存回答:内存问题:进程页表的首地址放在哪儿?问题:进程页表的首地址放在哪儿?回答:进程的回答:进程的PCB,页表的长度也放,页表的长度也放PCB 4.3分配与回收

35、分配与回收 分配过程分配过程用户程序请求运行用户程序请求运行查找内存页表有足够查找内存页表有足够的空闲物理页吗?的空闲物理页吗?系统根据程序长度计算所需的页数系统根据程序长度计算所需的页数否否是是等待等待修改内存页表,建立进程页表,页表始址和长度放修改内存页表,建立进程页表,页表始址和长度放PCB装入用户程序装入用户程序回收过程回收过程 根据进程页表的内容,把内存页表中对应的根据进程页表的内容,把内存页表中对应的物理页改为空闲物理页改为空闲 撤销进程页表撤销进程页表4.4地址转换(重定位)问题地址转换(重定位)问题 某系统逻辑地址某系统逻辑地址32位,页的大小为位,页的大小为4K04K8K12

36、K16KMOV 8193,200 用户程序空间用户程序空间13689进程页表进程页表0123456789物理内存物理内存8193应转换的物理地址是什么?应转换的物理地址是什么?81934K21逻辑页号为逻辑页号为2,页内地址,页内地址1由页表得知由页表得知2号逻辑页装入到号逻辑页装入到6号物号物理页,所以物理地址为:理页,所以物理地址为:64K1 24577P=INTA/L d=AMOD L1.基本的地址变换机构基本的地址变换机构 b注意:要求页表连续存放注意:要求页表连续存放PTR00000000000100000000000000000010页号页号页内地址页内地址逻辑地址逻辑地址 819

37、33112110页表寄存器页表寄存器页表始址页表始址页表长度页表长度6+物理内存区的映射物理内存区的映射 段表存放在内存,其起始地址和长度存入进程段表存放在内存,其起始地址和长度存入进程的的PCB段号段号012段长度段长度基址基址58K20K100K110K260K540K操作系统操作系统.B0SA0NY0LX0PM0K逻辑段号逻辑段号01234作业作业1的地址空间的地址空间10003200500060008000PKSLN主存主存K 3200P 1500L 6000N 8000S 5000长度长度 段地址段地址01234操作系统操作系统逻辑地址逻辑地址00000000000000110000

38、000000000010,物理地址是多少?,物理地址是多少? 地址转换地址转换-动态重定位动态重定位 Cl Cb+段号段号S S 段内地址段内地址d比较比较比较比较b + d比较比较段段表表S= Cl快表快表物理地址物理地址段表始址寄存器段表始址寄存器段表长度寄存器段表长度寄存器逻辑地址逻辑地址lb.Slb地址越界地址越界d=1d=l地址映射及存储保护机制地址映射及存储保护机制地址越界地址越界地址越界地址越界比较比较长度长度 始址始址5.1分段存储基本原理 分页与分段的区别 页是信息的物理单位,段则是信息的逻辑单位 页的大小固定且由系统决定,而段的长度却不固定 分页的作业地址空间是一维的,即单一的线性地址空间,分段的作业地址空间则是二维的,程序员在标识一个地址时即需给出段名,又需给出段内地址5.2

温馨提示

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

评论

0/150

提交评论