操作系统习题 存储器管理

1、什么是静态链接、装入时动态链接和运行时的动态链接?

答:静态链接:在程序运行之前,先将各目标模块及它们所需的库函数链接成一个完整的装配模块,以后不再拆开。
装入时动态链接:这里指将用户源程序编译后所得到的一组目标模块,在装入内存时,采用边装入边链接的连接方式。即在装入一个目标模块时,若发生一个外部模块调用事件,将引起装入程序去找出相应的外部目标模块,并把它装土内存,还要修改目标模块中的相对地址。
运行时动态链接:将对某些模块的链接推迟到程序执行时进行。在执行过程中,当发现一个被调用模块尚未装入内存时,立即由os去找到该模块,并将之装入内存,将其链接到被调用者模块上,这样不仅能加快程序的转入过程,而且可节省大量的内存空间。

2、简述分页系统和分段系统的异同点

答:相同之处:两者都采用离散分配方式,且都是通过地址映射机构实现地址变换。
不同之处:1.页是信息的物理单位。采用分页存储管理方式是为实现离散分配方式,以消除内存的外零头,提高内存的利用率,是系统行为,对用户不可见。分段存储管理方式中的段是信息的逻辑单位,它通常包含的是一组意义相对完整的信息,分段的目的主要在于能更好地满足用户的需要。
2.页的大小固定且由系统决定。分页系统中硬件结构上把用户的逻辑地址划分为页号和页内地址,因而在每个系统中只能有一种大小的页面。分段系统中断的长度却不固定,决定于用户所编写的程序,通常根据信息的性质划分。
3.分页的用户程序地址空间是一维的。分页是系统的行为。分段是用户的行为,用户程序的地址空间是二维的,程序员在标识一个地址时,既要给出段名,又要给出段内地址。

3、什么情况下需要重定位?为什么要引入重定位?

答:因为对于用户程序编译后所形成的若干个目标模块,它们的起始地址通常都是从0开始的,程序中的其它地址也都是相对于起始地址计算的。其分配到的内存空间的起始地址通常不为0,因此指令和数据的实际物理地址和装入模块内的相对地址是不同的,为了使程序能够正确执行,必须将相对地址转换成物理地址,即进行重定位。
为了程序能正确执行,不引起地址变换带来的问题。当程序装入到内存后,链接地址跟运行地址不同,我们需要用到变量的时候直接用变量名访问它就行了。有的程序不可避免也要用到变量,各个变量在内存中的位置自然也不相同。因为这些变量没有固定的地址,那么程序在运行的过程中只有重定位后才可以访问相关资源。

4、在具有快表的段页式存储管理方式中,如何实现地址变换?

答:在段表寄存器中存放段表始址和段长TL。首先利用段号s,将它与段长TL比较。若S 为了提高执行速度,在地址变换机构中增设一个高速缓冲寄存器。每次访问它时,同时利用段号和页号去检索高速缓存,若找到匹配的表项,便可从中得到相应页的物理块号,用来与页内地址一起形成物理地址。若找不到匹配项,则需3次访问内存,得到物理块号,并将其抄入快表。快表已满时,则通过适当的算法,换出最近最久没有被访问的项。

5、什么是对换技术?为什么要引入对换? 对换有哪些类型?

答:把内存中暂时不能运行的进程或者暂时不用的程序和数据换出到外存上,以便腾出足够的内存空间,再把已具备运行条件的进程或者暂时不用的程序和数据换出到外存上,以便腾出足够的内存空间,再把已具备运行条件的进程或进程所需要的的程序和数据换入内存。

在多道环境下,一方面,内存中的某些进程由于某事件尚未发生而被阻塞,但它却占用了大量的内存空间,甚至有时可能出现在内存中所有进程都被阻塞而迫使CPU停止下来等待的情况;另一方面,却又有着许多作业在外存上等待,因无内存而不能进入内存运行的情况、这是对系统资源的一种严重浪费,使系统的吞吐量下降。
对换有两种类型:整体对换和页面(分段)对换。

6、在采用首次适应算法回收内存时,可能出现哪几种情况?应怎样处理这些情况?

答:1.回收区与插入点的前一个空闲分区F1邻接。此时应将回收区与插入点的前一分区合并,不必为回收分区分配新表项,而只需修改其前一分区F1的大小。
2.回收区与插入点的后一空闲分区F2相邻接,此时也可将两分区合并,形成新的空闲分区,但用回收区的首址作为新空闲区的首址,大小为两者之和。
3.回收区同时与插入点的前后两个分区邻接,此时将三个分区合并,使用F1的表项和F1的首址,取消F2的表项,大小为三者之和。
4.回收区既不与F1邻接,又不与F2邻接,这时应为回收区单独建立一个新表项,填写回收区的首址和大小,并根据其首址插入到空闲链中的适当位置。

7、给定内存空闲分区,按地址从小到大为:100K、500K、200K、300K、600K。现有用户进程依次分别212K、417K、112K、426K。(1)分别用首次适应算法、循环首次适应算法、最佳适应算法、最坏适应算法将它们装入到内存的哪个分区?(2)哪个算法最有效利用内存?

(1)答:
分区 首次适应算法 循环首次适应算法 最佳适应算法 最坏适应算法
100k
500k 212k
112k 212k
112k 417k 417k
200k 112k
300k 212k
600k 417k 417k 426k 212k
112k
无法分配426k,等待 无法分配426k,等待 无法分配426k,等待

(2)答:最佳适应算法最有效利用内存。

8、某系统采用页式存储管理策略,拥有逻辑空间32页,每页2KB,拥有物理空间1MB。

(1)写出逻辑地址的格式。
(2)若不考虑访问权限等,进程的页表有多少项?每项至少有多少位?
(3)如果物理空间减少一半,页表结构应相应作怎样的改变?

(1)答:逻辑空间32页,故页号为5位,每页为2KB,因此页内偏移为11位。因此逻辑地址的格式为:

15-11 10-0
页号 页内地址

(2)每个进程最多有32个页面,因此,进程的页表项最多为32项;若不考虑访问权限,则页表中无控制字段,只需给出物理块号。1MB物理空间可分为2^9个内存块,因此每个页表项至少有9位。
(3)答:如果物理空间减少一半,一共有32个页表项,但每项至少8位。

9、已知某分页系统,主存容量为64K字节,页面大小为1K,对一个4页大的作业,其0、1、2、3页分别被分配到主存的2、4、6、7块中,试:将十进制的逻辑地址1023、2500、3500、4500转换成物理地址。

答:1023:1023%1024=0…1023,0为页号,对应物理块号为2,页内地址位21024+1023=3071同理:2500%1024=2…452,物理块号为6,页内地址为452,物理地址:61024+452=6596
3500%1024=3…428,物理块号为7,页内地址为7*1024+428=7596
4500%1024=4…404,越界

10、对于下表所示的段表,请将逻辑地址(0,137),(1,4000),(2,3600),(5,239)转换成物理地址。
段号 内存始址 段长
0 50K 10K
1 60K 3K
2 70K 5K
3 120K 8K
4 150K 4K
答:(0,137):50k+135=51337;
(1,4000):4000>3k,段内地址越界
(2,3600):70k+3600=75280;
(5,239):段号越界

你可能感兴趣的:(经验分享)