单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,习题第46章,Chap 4 存储管理,P152,2.可采用哪几种方式将程序装入内存?它们分别适用于何种场合?,答:a.首先由编译程序将用户源代码编译成若干目标模块,再由链接程序将编译后形成的目标模块和所需的库函数链接在一起,组成一个装入模块,再由装入程序将装入模块装入内存;b.装入模块的方式有:绝对装入方式,可重定位方式和动态运行时装入方式;c.绝对装入方式适用于单道程序环境下,编译时,知道程序将驻留在内存的什么位置;d.可重定位方式适用于多道程序环境下,程序在内存的起始地址确定,地址变换是在装入时一次完成的;e.动态运行时装入方式也适用于多道程序环境下,程序在内存的首地址不固定,地址变换是在程序真正要运行时才进行的。,7.为什么要引入动态重定位?如何实现?,答:a.为了允许程序在执行过程中,在内存中移动位置,每当访问指令或数据时,将要访问的程序或数据的逻辑地址转换成物理地址,引入了动态重定位;b.可在系统中增加一对寄存器,用来装入(存放)程序在内存中的起始地址和长度,程序在执行时,真正访问的内存地址是相对地址(若没有越界)与重定位寄存器中的地址相加而形成的,从而实现动态重定位。,9.在采用首次适应算法回收内存时,可能出现哪几种情况?应怎样处理这些情况?,答:a.回收区与插入点的前一个分区相邻接,此时可将回收区与插入点的前一分区合并,不再为回收分区分配新表项,而只修改前邻接分区的大小;b.回收分区与插入点的后一分区相邻接,此时合并两区,然后用回收区的首址作为新空闲区的首址,大小为两者之和;c.回收区同时与插入点的前后两个分区邻接,此时将三个分区合并,使用前邻接分区的首址,大小为三区之和,取消后邻接分区的表项;d.回收区没有邻接空闲分区,则应为回收区单独建立一个新表项,填写回收区的首址和大小,并根据其首址,插入到空闲链中的适当位置。,补.何谓静态链接及装入?何谓装入时动态链接和运行时的动态链接?,答:a.静态链接是指事先进行链接形成一个完整的装入模块,以后不再拆开的链接方式;b.装入时动态链接是指目标模块在装入内存时,边装入边链接的链接方式;c.运行时的动态链接是将某些目标模块的链接推迟到执行时才进行。,19.什么是页表?页表的作用?,答:系统为每个进程建立一张页面映射表,用来,给出逻辑地址页号和内存物理块号对应的关系。,通过页表,能够查找到页面放置在内存的位置。,20.为实现分页存储管理,需要哪些硬件支持?,答:地址变换机构,页表及页表寄存器。,24.在具有快表的段页式存储管理方式中,如何实现地址变换?,答:,b,1,l,1,越界中断,段表长度C,l,比较,s,p,b,快表,段页号,块号,段表始址C,b,+,段号,s,段内页号p,页内地址d,b,d,物理地址寄存器,段表寄存器,逻辑地址,段表,01,.,.,.,比较,b,01,.,.,+,S段页表,26.分页和分段有何区别?,答:a.分页和分段都采用离散分配的方式,且都要通过地址映射机构来实现地址变换,这是它们的共同点;b.对于它们的不同点有三,第一,从功能上看,页是信息的物理单位,分页是为实现离散分配方式,以消减内存的外零头,提高内存的利用率,即满足系统管理的需要,而不是用户的需要;而段是信息的逻辑单位,它含有一组其意义相对完整的信息,目的是为了能更好地满足用户的需要;c.页的大小固定且由系统确定,而段的长度却不固定,决定于用户所编写的程序;d.分页的作业地址空间是一维的,而分段的作业地址空间是二维的。,补充:,有一系统采用页式存储管理,有一进程大小是8KB,页大小为2KB,依次装入内存的第7、9、10、5块,试将虚地址7145,3412转换成内存地址。,答:7145/2048=3,页号,块号,0,7,1,9,2,10,3,5,补充:有一系统采用页式存储管理,有一作业大小是8KB,页大小为2KB,依次装入内存的第7、9、10、5块,试将虚地址7145,3412转换成内存地址。,虚地址 3412,P3412/2048 1,W 3412 mod 2048,1364,MR=9*2048+1364=19796,虚地址3412的内存地址,是:19796,页号,块号,0,7,1,9,2,10,3,5,虚地址 7145,P7145/2048 3,W7145 mod 2048,1001,MR=5*2048+1001=11241,虚地址7145的内存地址是:11241,页号,块号,0,7,1,9,2,10,3,5,页式地址变换虚地址结构,虚地址结构(程序字),虚地址是用户程序中的逻辑地址,它包括页号和页内地址(页内位移)。,区分页号和页内地址的依椐是页的大小,页内地址占虚地址的低位部分,页号占虚地址的高位部分。,假定页面大小1024字节,虚地址共占用2个字节(16位),页号 页内地址(位移量),P W,15 10 9 0,页式地址变换,虚地址结构,页式地址映射,页式地址映射,1.虚地址(逻辑地址、程序地址)以十六进制、八进制、二进制的形式给出,将虚地址转换成二进制的数;,按页的大小分离出页号和位移量,(低位部分是位移量,高位部分是页号);,根据题意产生页表,;,将位移量直接复制到内存地址寄存器的低位部分;,以页号查页表,得到对应页装入内存的块号,,并将块号转换成二进制数填入地址寄存器的高位部分,从而形成内存地址,。,页式地址映射,2.虚地址以十进制数给出,页号虚地址/页大小,位移量虚地址 mod 页大小,根据题意产生页表;,以页号查页表,得到对应页装入内存的块号,内存地址块号页大小位移量,页式地址映射,例:有一系统采用页式存储管理,有一作业大小是8KB,页大小为2KB,依次装入内存的第7、9、A、5块,试将虚地址0AFEH,1ADDH转换成内存地址。,虚地址0AFEH,0000 1,010 1111 1110,P1 W010 1111 1110,MR0100 1,010 1111 1110,4AFEH,页式地址映射,虚地址1ADDH,0001 1,010 1101 1101,P3,W010 1101 1101,MR,0010 1,010 1101 1101,2ADDH,分段管理,对所示段表,给出逻辑地址,0,430;1,10;2,500;3,400;4,112;求所对应的物理地址(用十进制表示)。,段 号,始 地 址,长 度,0,256,600,1,1024,500,2,2048,200,3,2304,700,4,4096,400,0,430:430600256+430,1,10:10200越界,3,400:4007002304+400,4,112:112f.size,B、将r合并到f2,r.addr;r.size+r.size=f2.size,C、f1、r、f2 合并到f1,f1.addr;,f1.size+r.size+f2.size=f1.size 撤消f2空闲区,D、r作为一个空闲区,并插入到空闲区表的适当位置。,几种分配算法,一、,首次适应算法,首次适应算法,的表是按空闲区首址升序的(即空闲区表是按空闲区首址从小到大)方法组织的。,二、,最佳适应算法,最佳适应算法的空闲区表按空闲区大小升序方法组织。,分配时,按申请的大小逐个与空闲区大小进行比较,找到一个满足要求的空闲区,就说明它是最适合的(即最佳的)。,这种算法最大的缺点是分割后的空闲区将会很小,直至无法使用,而造成浪费。,三、,最坏适应算法,最坏适应算法的空闲区表是按空闲区大小降序的方法组织的(从大到小的顺序)。,分配时总是取表中的第一个表目,若不能满足申请者的要求,则表示系统中无满足要求的空闲区,分配失败;否则,将从该空闲区中分配给申请者,然后修改空闲区的大小,并将它插入到空闲区表的适当位置,。,几种分配算法,这三种放置算法的优劣很难区分,要具体情况具体分析。,例如:某时刻系统中有三个空闲区,其大小和首址为:,(35KB,100KB)、(12KB,156KB)、(28KB,200KB),有一作业系列:,(JOB1,12KB)、(JOB2,30KB)、(JOB3,28KB),几种分配算法,