操作系统第5章(存储器管理习题与解答)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第5章存储器管理习题与解答

5.2 例题解析

例5.2.1 为什么要引入逻辑地址?

解引入逻辑地址有如下原因:

(1) 物理地址的程序只有装入程序所规定的内存空间上才能正确执行,如果程序所规定内存空间不空闲或不存在,程序都无法执行;

(2) 使用物理地址编程意味着由程序员分配内存空间,这在多道程序系统中,势必造成程序所占内存空间的相互冲突;

(3) 在多道程序系统中,程序员门无法事先协商每个程序所应占的内存空间的位置,系统也无法保证程序执行时,它所需的内存空间都空闲。

(4) 基于上述原因,必须引入一个统一的、在编程时使用的地址,它能够在程序执行时根据所分配的内存空间将其转换为对应的物理地址,这个地址就是逻辑地址。

(5) 逻辑地址的引入为内存的共享、保护和扩充提供方便。

例5.2.2 静态重定位的特点有哪些?

(1) 实现容易,无需增加硬件地址变换机构;

(2) 一般要求为每个程序分配一个连续的存储区;

(3) 在重定位过程中,装入内存的代码发生了改变;

(4) 在程序执行期间不在发生地址的变换;

(5) 在程序执行期间不能移动,且难以做到程序和数据的共享,其

内存利用率低。

例5.2.3 动态重定位的特点有哪些?

(1) 动态重定位的实现要依靠硬件地址变换机构,且存储管理的软件算法比较复杂;

(2) 程序代码是按原样装入内存的,在重定位的过程中也不发生变化,重定位产生的物理地址存放在内存地址寄存器中,因此不会改变代码;

(3) 同一代码中的同一逻辑地址,每执行一次都需要重位一次;

(4) 只要改变基地址,就可以很容易地实现代码在内存中的移动;

(5) 动态重定位可以将程序分配到不连续的存储区中;

(6) 实现虚拟存储器需要动态重定位技术的支持;

尽管动态重定位需要硬件支持,但他支持程序浮动,便于利用零散的内存空间,利于实现信息共享和虚拟存储,所以现代计算机大都采用动态重定位。

例5.2.4 装入时动态链接的优点有哪些?

(1)便于软件版本的修改和更新

在采用装入时动态链接方式时,要修改或更新各个目标模块,是件非常容易的事,但对于经静态链接以装配在一起的装入模块,如果要修改或更新其中的某个目标模块时,则要求重新打开装入模块,这不仅是低效的,而且对于普通用户是不可能的。

(2)便于实现目标模块共享

若采用装入时动态链接方式,OS能够将一个目标模块链接到几个应用程序中去。即实现多个应用程序对该模块的共享;然而,采用静态链接方式时每个应用模块都必须含有该目标模块的拷贝,则无法实现共享。

例5.2.5 覆盖技术与虚拟存储技术有何本质不同?交换技术与虚存中使用的调入调出技术有何相同和不同之处?

解覆盖技术与虚拟存储技术的本质不同是:

(1) 虚拟存储器对于程序员时透明的,不需要程序员了解程序结构、覆盖的区域、时机,不需要精心的设计程序及其数据结构,所有的操作由操作系统自动完成。

(2) 覆盖的程序段的最大长度要受到物理内存容量的限制,而虚拟存储器的最大长度不受物理内存容量的限制,只受计算机地址结构的限制。

交换技术与虚存中使用的调入调出技术相同和不同之处:

(1) 主要相同点是都要在内存与外存之间交换信息;

(2) 主要区别在于交换技术换出换进一般是整个进程(proc结构和共享正文段除外),因此一个进程的大小受物理存储器的限制;而虚存中使用的调入调出技术在内存与外存之间来回传递的是存储页或存储段,而不是整个进程,从而使得进程映射具有了更大的灵活性,且允许进程的大小比可用的物理存储空间大的多。

例5.2.7 有一计算机系统,内存容量为512K,辅存容量为2G,逻辑地址形式如下:

段号段内地址

29 20 19 0

求其虚拟存储器的实际容量?

解虚拟内存的实际大小由系统的逻辑地址结构、主存辅存容量共同决定。虚拟内存容量的理论值是210 *220=1G;最大段内地址为220=1M,远大于内存容量,其段长超过512K的内存容量,故最大实际段长为512k而不是1M。

所以可计算虚拟存储容量为210 *512K =210 *0.5M=0.5G。 0.5G<2G,因此虚拟存储器的实际容量是0.5G。

例 5.2.8 段页式存储系统中,为了获得一条指令或数据,需几次访问内存?

解在段页式系统中,为了获得一条指令或数据,需三次访问内存。第一次访问,是访问内存中的段表,从中取得页表始址;第二次访问,是访问内存中的页表,从中取出逻辑页面对应的内存物理块号,并将该块号与页内地址一起形成指令或数据的物理地址;第三次访问,才是真正从第二次访问所得的地址中,取出指令或数据。

例5.2.9 在实存管理上,管理方法主要分成哪两种类型?

解实存管理的方法主要分成:

(1) 用户程序需要占用连续的内存空间,如分区存储管理;

(2) 用户程序不需要占用连续的内存空间,如分页、分段、段页等管理,一个用户程序在内存可能是不连续的,如果它有不只一页或一段的话。

例 5.2.10 解释静态链接、装入时动态链接和执行时动态链接的不同。

解“链接”(link),本应是编译系统的任务,但是,随着程序执行方式的改进,当出现了“动态链接”之后,“程序链接”就不仅仅是编译系统的事情,它还需要OS的支持。

程序的静态链接,指的是在程序装入内存之前,由链接程序将已编译好的多个目标模块(.obj文件)链成一个统一的可执行文件。其特点是:①链接好的可执行文件可以重复使用和执行;②被链接的模块一般不可能再拆开,因而不便修改和更新;③不便于多个程序共享某些模块,需使用同一模块的多个程序需分别将该模块链入自己的程序空间。

装入时动态链接,指的是在程序加载入内存(准备执行)时,由OS 中的装入程序(如exec())将存放在盘上的诸多目标模块边装入边在内存链接成一个统一的可执行程序。其特点是:①链接好的可执行程序只存在于内存,因而每次执行都要重新链接;②被链接的诸目标模块在盘上是各自独立存放的,因而便于修改;③便于共享,当多个程序需使用同一模块时,该模块在内存只需一个副本。

相关文档
最新文档