操作系统内存管理问题集锦

来源:互联网 发布:生态环境被破坏的数据 编辑:程序博客网 时间:2024/05/19 07:28

1. 可采用哪几种方式将程序装入内存?它们分别适用于何种场合?

a. 首先由编译程序将用户源代码编译成若干目标模块,再由链接程序将编译后形成的目标模块和所需的-库函数链接在一起,组成一个装入模块,再由装入程序将装入模块装入内存; 

b. 装入模块的方式有: 绝对装入方式,可重定位方式和动态运行时装入方式; 

c. 绝对装入方式适用于单道程序环境下; 

d. 可重定位方式适用于多道程序环境下; 

e. 动态运行时装入方式也适用于多道程序环境下.


2. 何谓静态链接及装入时动态链接和运行时的动态链接?

a. 静态链接是指事先进行链接形成一个完整的装入模块,以后不再拆开的链接方---式;

b. 装入时动态链接是指目标模块在装入内存时,边装入边链接的链接方式;

c. 运行时的动态链接是将某些目标模块的链接推迟到执行时才进行.


3. 在进行程序链接时,应完成哪些工作?

a. 对相对地址进行修改; 

b. 变换外部调用符号.


4. 在动态分区分配方式中,可利用哪些分区分配算法?

a. 首次适应算法; 

b. 循环首次适应算法; 

c. 最佳适应算法.


5. 在动态分区分配方式中,应如何将各空闲分区链接成空闲分区链?

应在每个分区的起始地址部分,设置一些用于控制分区分配的信息,以及用于链接各分区的前向指针;在分区尾部则设置一后向指针,通过前,后向指针将所有的分区链接成一个双向链.


6. 为什么要引入动态重定位?如何实现?

a. 为了在程序执行过程中,每当访问指令或数据时,将要访问的程序或数据的逻辑地址转换成物理地址,引入了动态重定位. 

b. 可在系统中增加一个重定位寄存器,用它来装入(存放)程序在内存中的起始地址,程序在执行时,真-正访问的内存地址是相对地址与重定位寄存器中的地址相加而形成的,从而实现动态重定位.


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

a. 回收区与插入点的前一个分区相邻接,此时可将回收区与插入点的前一分区合并,不再为回收分区分配新表项,而只修改前邻接分区的大小;

b. 回收分区与插入点的后一分区相邻接,此时合并两区,然后用回收区的首址作为新空闲区的首址,大-小为两者之和;

c. 回收区同时与插入点的前后两个分区邻接,此时将三个分区合并,使用前邻接分区的首址,大小为三区之和,取消后邻接分区的表项;

d. 回收区没有邻接空闲分区,则应为回收区单独建立一个新表项,填写回收区的首址和大小,并根据其首址,插入到空闲链中的适当位置.


8. 在系统中引入对换后带有哪些好处?

能将内存中暂时不运行的进程或暂时不用的程序和数据,换到外存上,以腾出足够的内存空间,把已具备运行条件的进程或进程所需的程序和数据换入内存,从而大大地提高了内存的利用率.


9.为实现对换,系统应具备哪几方面功能?

a. 对对换空间的管理; 

b. 进程的换出; 

c. 进程的换入.


10.在以进程为单位进行对换时,每次是否都将整个进程换出?为什么?

a. 以进程为单位进行对换时,每次都将整个进程换出; 

b. 目的为了解决内存紧张的问题,提高内存的利用率.


11.请较详细地说明,引入分段存储管理是为了满足用户哪几方面的需要?

a. 方便了编程; 

b. 实现了分段共享; 

c. 实现了分段保护; 

d. 实现了动态链接; 

e. 实现了动态增长;


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

首先,必须配置一段表寄存器,在其中存放段表始址和段长TL. 进行地址变换时,先利用段号S,与段长TL进行比较,若STL,表示未越界,(若S=TL,表示段号太大,访问越界,产生越界中断信号)于是利用段表始址和段号来求出该段对应的段表项在段表中的位置,从中求出该段的页表始址,并利用逻辑地址中的段内页号P来获得对应页的页表项位置,从中读出该页所在的物理块号b,再用块号b和页内地址构成物理地址.


13.为什么说分段系统较之分页系统更易于实现信息共享和保护?

a. 对于分页系统,每个程序段是分散存储的,一个程序段可能对应着几个不同的页。为了实现信息共享和保护,则页面之间需要一一对应起来,为此需要建立大量的页表项;

b. 而对于分段系统,每个段都从0开始编址,并采用一段连续的地址空间,这样在实现共享和保护时.只需为所要共享和保护的程序设置一个段表项,将其中的基址与内存地址一一对应起来即可.


14.分页和分段有何区别?

a. 分页和分段都采用离散分配的方式,且都要通过地址映射机构来实现地址变换,这是它们的共同点;

b. 对于它们的不同点有三,第一,从功能上看,页是信息的物理单位,分页是为实现离散分配方式,以消减内存的外零头,提高内存的利用率,即满足系统管理的需要,而不是用户的需要;而段是信息的逻辑单位,它含有一组其意义相对完整的信息,目的是为了能更好地满足用户的需要;

c. 页的大小固定且由系统确定,而段的长度却不固定,决定于用户所编写的程序;

d. 分页的作业地址空间是一维的,而分段的作业地址空间是二维的.


15.试全面比较连续分配和离散分配方式.

a. 连续分配是指为一个用户程序分配一个连续的地址空间,包括单一连续分配方式和分区式分配方式,前者将内存分为系统区和用户区,系统区供操作系统使用,用户区供用户使用,是最简单的一种存储方式,但只能用于单用户单任务的操作系统中;分区式分配方式分为固定分区和动态分区,固定分区是最简单的多道程序的存储管理方式,由于每个分区的大小固定,必然会造成存储空间的浪费;动态分区是根据进程的实际需要,动态地为之分配连续的内存空间,常用三种分配算法: 首次适应算法FF,该法容易留下许多难以利用的小空闲分区,加大查找开销;循环首次适应算法,该算法能使内存中的空闲分区分布均匀,但会致使缺少大的空闲分区;最佳适应算法,该算法也易留下许多难以利用的小空闲区;

b. 离散分配方式基于将一个进程直接分散地分配到许多不相邻的分区中的思想,分为分页式存储管理,分段存储管理和段页式存储管理. 分页式存储管理旨在提高内存利用率,满足系统管理的需要,分段式存储管理则旨在满足用户(程序员)的需要,在实现共享和保护方面优于分页式存储管理,而段页式存储管理则是将两者结合起来,取长补短,即具有分段系统便于实现,可共享,易于保护,可动态链接等优点,又能像分页系统那样很好的解决外部碎片的问题,以及为各个分段可离散分配内存等问题,显然是一种比较有效的存储管理方式;c. 综上可见,连续分配方式和离散分配方式各有各自的特点,应根据实际情况加以改进和利用.

0 0