存储器管理练习题

版权声明:欢迎交流讨论 https://blog.csdn.net/qq_37746973/article/details/83589866

第四章 存储器管理

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

 

静态链接是在生成可执行程序的时候就把库中的内容加入到程序中。静态链接在一开始就把所有模块都加载进入内存,所以如果模块很多的话效率就会被大大拉低。

载入时动态链接是在将功能模块读入内存时当把一个模块载入内存时检查有调用关系的模块载入内存。

运行时动态链接是在执行程序调用到模块内容时再将动态库中的相应模块载入到内存。

 

 

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

 

分页就是将进程的逻辑地址空间分成若干大小相等的片(即页),然后装入内存。

分段就是用户可以把自己的作业按逻辑关系划分为若干个段,每个段都是从0开始编址,并有自己的名字和长度

相同点:

两者都属于存储器管理方式中的离散分配方式。都要通过地址映射机构来实现地址变换。

不同点:

1、页是信息的物理单位,分页是为实现离散分配方式,以消减内存的外零头,提高内存的利用率;或者说,分页仅仅是由于系统管理的需要,而不是用户的需要。

段是信息的逻辑单位,它含有一组其意义相对完整的信息。分段的目的是为了能更好的满足用户的需要。

2、页的大小固定且由系统确定,把逻辑地址划分为页号和页内地址两部分,是由机器硬件实现的,因而一个系统只能有一种大小的页面。

段的长度却不固定,决定于用户所编写的程序,通常由编辑程序在对源程序进行编辑时,根据信息的性质来划分。

3、分页的作业地址空间是维一的,即单一的线性空间,程序员只须利用一个记忆符,即可表示一地址。

分段的作业地址空间是二维的,程序员在标识一个地址时,既需给出段名,又需给出段内地址。

 

 

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

 

由于一个作业装入到与其地址空间不一致的存储空间,要对有关地址部分的调整,这个时候需要重定位。

当程序装入到内存后,链接地址跟运行地址不同,我们需要用到变量的时候直接用变量名访问它就行了。有的程序不可避免也要用到变量,各个变量在内存中的位置自然也不相同。因为这些变量没有固定的地址,那么程序在运行的过程中只有重定位后才可以访问相关资源。

 

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

在段页式系统中,为了便于实现地址变换,须配置一个段表寄存器,其中存放段表始址和段长TL。

进行地址变换时,首先利用段号S,将它与段长TL进行比较。若S<TL,表示未越界,利用段表始址和段号来求出该段所对应的段表项在段表中的位置,从中得到该段的页表始址,并利用逻辑地址中的段内页号P来获得对应页的页表项位置,从中读出该页所在的物理块号b.再利用块号b和页内地址来构成物理地址。

在段页式系统中,为了获得一条指令或数据,须三次访问内存。第一次访问内存中的段表,从中取得页表始址; 第二次访问内存中的页表,从中取出该页所在的物理块号,并将该块号与页内地址一起形成指令或数据的物理地址; 第三次访问才是真正从第二次访问所得的地址中,取出指令或数据。显然,这使访问内存的次数增加了近两倍。

为了提高执行速度,在地址变换机构中增设一个高速缓冲寄存器。每次访问它时,都须同时利用段号和页号去检索高速缓存,若找到匹配的表项,便可从中得到相应页的物理块号,用来与页内地址一起形成物理地址; 若未找到匹配表项,则仍须再三次访问内存。

 

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

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

引入原因:在多道程序环境下,一方面,在内存中某些进程由于某事件尚未发生而阻塞,但它却占用了大量的内存空间,甚至有时可能在内存中所有进程都被阻塞,而无可运行的进程,迫使CPU停止下来等待的情况;另一方面,却又有着许多作业,因内存空间不足了,一直驻留在外存上,不能进入内存运行。

对换类型:(1)整体对换(2)部分(分页、分段)对换

 

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

可能出现4种情况: 

(1)回收区前邻空闲区。将回收区与前邻空闲区合并,将前邻空闲区大小修改为两者之和。 

(2)回收区后邻空闲区。将两区合并,改后邻空闲区始址为回收区始址,大小为两者之和。 

(3)回收区前后均邻空闲区。将三个分区合并,修改前邻空闲区大小为三者之和。

(4)回收区前后均不邻空闲区。为回收区设置空闲区表项,填入回收区始址和大小并插入空闲区队列。

 

 

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

 

分区号

分区长

首次适应算法

循环首次适应算法

最佳适应算法

最坏适应算法

1

100k

 

 

 

 

2

500k

1 )212k

3 )112k

1 )212k

3 )112k

2 ) 417k

2 ) 417k

3

200k

 

 

3 ) 112k

 

4

300k

 

 

1 ) 212k

 

5

600k

2 )417k

2 ) 417k

4 ) 426k

1 ) 212k
3 ) 112k

 

 

4 ) 426K无法满足,需等待

 4 ) 426K无法满足,需等待

 

4 ) 426K无法满足,需等待

 

最佳适应算法最有效利用内存。

 

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

(1)写出逻辑地址的格式。

(2)若不考虑访问权限等,进程的页表有多少项?每项至少有多少位?

(3)如果物理空间减少一半,页表结构应相应作怎样的改变?

 

  1. 该系统拥有逻辑空间32页,故逻辑地址中页号必须用5位来描述,而每页为2KB,因此,页内地址必须用11位来描述。这样,可得到它的逻辑地址格式如下

  1. 每个进程最多有32个页面,因此,进程的页表项最多为32项;若不考虑访问权限等,则页表项中只需给出页所对应的物理块号。1MB的物理空间可分成29个内存块,故每个页表项至少有9位。
  2. 物理空间减少一半,则页表中项表项数仍不变,但每项的长度可减少1位。

 

 

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

1023 : 1023 / 1024 = 0;   所以在第0页,第2块   

1023 % 1024 = 1023;      2 * 1024 + 1023 = 3071

2500: 2500 / 1024 = 2; 所以在第2页,第6块   

2500 % 1024 = 452       6 * 1024 + 452 = 6596

3500:    3500 / 1024 = 3;   所以在第3页,第7块

3500 % 1024 = 428;       7 * 1024 + 428 = 7596

4500        4500 / 1024 = 4; 不存在第4页,所以越界了,产生越界中断。

 

  1. 对于下表所示的段表,请将逻辑地址(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): 137 < 10k ;  50k + 137 = 51337

 

(1,4000) :  4000 > 3k  段内地址越界

 

(2,3600): 3600 < 5k  70k + 3600 = 57280

 

(5,239):    段号越界

没有更多推荐了,返回首页