当前位置:文档之家› 操作系统内存管理练习题

操作系统内存管理练习题

Байду номын сангаас
解释静态链接、装入时动态链接和执行时动态链接的不同。 解 “链接”(link),本应是编译系统的任务,但是,随着程序执行方 式的改进,当出现了“动态链接”之后,“程序链接”就不仅仅是编 译系统的事情,它还需要OS的支持。 程序的静态链接,指的是在程序装入内存之前,由链接程序将已编译好 的多个目标模块(.obj文件)链成一个统一的可执行文件。其特点是: ①链接好的可执行文件可以重复使用和执行;②被链接的模块一般不 可能再拆开,因而不便修改和更新;③不便于多个程序共享某些模块, 需使用同一模块的多个程序需分别将该模块链入自己的程序空间。 装入时动态链接,指的是在程序加载入内存(准备执行)时,由OS中的 装入程序(如exec())将存放在盘上的诸多目标模块边装入边在内存 链接成一个统一的可执行程序。其特点是:①链接好的可执行程序只 存在于内存,因而每次执行都要重新链接;②被链接的诸目标模块在 盘上是各自独立存放的,因而便于修改;③便于共享,当多个程序需 使用同一模块时,该模块在内存只需一个副本。
装入时动态链接的优点有哪些? (1)便于软件版本的修改和更新 在采用装入时动态链接方式时,要修改或更新各个目标模块, 是件非常容易的事,但对于经静态链接以装配在一起的装 入模块,如果要修改或更新其中的某个目标模块时,则要 求重新打开装入模块,这不仅是低效的,而且对于普通用 户是不可能的。 (2)便于实现目标模块共享 若采用装入时动态链接方式,OS能够将一个目标模块链接 到几个应用程序中去。即实现多个应用程序对该模块的共 享;然而,采用静态链接方式时每个应用模块都必须含有 该目标模块的拷贝,则无法实现共享。
在虚拟页式存储系统为什么要引入缺页中断?缺页中断实现由哪几部分组成,并分别说明 其实现方法。 解 页式虚存管理是在页式存储管理的基础上实现虚拟存储器的,作业在执行时并不是所有 的页均放在主存,若欲访问的页面不在主存,则须由操作系统把当前所需页面从辅存 装入主存。这一过程就交由中断系统完成,称为缺页中断。 缺页中断由缺页处理和页淘汰组成,缺页处理过程如下: (1)中断触发:在地址变换过程中,当查询页表时,发现逻辑页面不在内存,即其状态位为 0,则发生缺页中段。 (2)页面调入:OS在页表中找到对应页面的辅存地址,进行页面的淘汰,将所缺页调入内 存; (3)修改页表:将该页面的内存地址填入页表,修改状态位为1; 缺页中断结束,恢复现场,重新执行指令。 页面淘汰处理如下: (1)如果内存有空闲的页面,直接调入外存的页面,修改页表; (2)如果内存没有空间,根据页面淘汰算法,在内存中找到可淘汰的页面; (3)如果被淘汰页面修改位为0,则直接调入外存页面将其覆盖,修改页表; (4)如果被淘汰页面修改位为1,则要申请一块交换空间,将该内存的内容保存到交换区 中,然后将辅存的页面调入其中,修改页表。
动态重定位,是在程序执行的过程中,根据执行的 需要动态地装入、链接和定位。它不是根据程序 在内存的位置立即将指令和数据的逻辑地址转换 成物理地址,而是把这种位置信息送入一个称之 为“地址映射机构”的硬件中,然后,CPU按逻 辑地址执行程序。在执行中,由“映射机构”将 逻辑地址及时地转换成正确的访存物理地址。这 种定位方法的主要特点是重定位后,内存中的代 码没有发生了变化,允许程序在执行的过程中在 内存移动位置,这只要更换“映射机构”中的启 址信息就可将同一程序映射到内存不同的地方。 这种位置移动对提高内存空间的利用率是有好处 的。
说明静态重定位和动态重定位的区别。 解 “重定位”,在实际上指的是这样相互联系的两件事情: 一是确定一个待执行程序在内存中的位置;二是将程序中 的逻辑地址转换成物理地址。说它们是相互联系的,是因 为后一件事情是由前一件事情决定的。 静态重定位,指的是在程序装入时实现的重定位。具体的讲, 就是将程序装入内存后,立即根据其装入位置将程序中需 重定位的逻辑地址转换成物理地址,包括指令地址、数据 地址、子程序入口地址等。这种“定位”的特点是“定位” 之后,内存中的代码发生了变化,程序不能在内存移动, CPU按物理地址运行程序。
虚存与单、多道程序设计,程序重定位,程序动态链接以及覆盖和交换 技术之间有什么关系? 解 从原理上讲,单道程序设计系统也可实现虚存管理,但从实际上看, 虚存主要是应用在多道程序设计系统中。 虚存的实现需要程序的动态重定位技术的支持,因为程序的对换会导致 同一部分程序多次进出内存并有可能在内存中不断地移动位置。 虚存与程序的动态链接没有必然的因果关系,但程序的动态链接可以避 免无用的程序进入内存,使虚存的效率提高实现; 虚存需要覆盖和交换技术的支持,但覆盖和交换与虚存是不同的概念。 在实存管理下覆盖和交换是一种可以节省内存的技术,对用户是不透 明,覆盖和交换的区由程序结构和程序员决定。而在虚存下的交换和 覆盖对程序员是透明的,操作是由OS根据某种算法决定的。
内存管理练习题
为什么要引入逻辑地址? 解 引入逻辑地址有如下原因: (1)物理地址的程序只有装入程序所规定的内存空间上才能正确执行,如 果程序所规定内存空间不空闲或不存在,程序都无法执行; (2)使用物理地址编程意味着由程序员分配内存空间,这在多道程序系统 中,势必造成程序所占内存空间的相互冲突; (3)在多道程序系统中,程序员门无法事先协商每个程序所应占的内存空 间的位置,系统也无法保证程序执行时,它所需的内存空间都空闲。 (4)基于上述原因,必须引入一个统一的、在编程时使用的地址,它能够 在程序执行时根据所分配的内存空间将其转换为对应的物理地址,这 个地址就是逻辑地址。 (5)逻辑地址的引入为内存的共享、保护和扩充提供方便。
执行时动态链接,是把程序的链接推迟到程 序执行时根据执行的需要动态地装入和链 接。它除了有与“装入时动态链接”相同 的特点外,还有一个显著的特点,是不会 将本次执行中不需要的模块(如错误处理 模块)装入内存,从而减少时空开销。当 然,它也增加了链接的复杂性,且需要一 定的硬件支持。动态链接需要OS的支持和 服务。
存储空间分配的“边界要求”是什么意思?为什么有的系统有这种要求? 解 空间分配的“边界要求”,指的是要求所分得的空间的起始地址落在 所分得空间的大小的整数倍上。例如,若要求分一个4K大的空间,则 实际分得的空间的起始地址应是0,4K,8K,12K,…;有的系统之 所以有这种要求,主要是为了便于机器的判断和管理。例如,在分页 存储管理系统内,每一个页面在内存的起始地址都应是页面大小的整 数倍,这样才能正确地将一个地址划分成页号和页内位移量两部分, 并正确地实现分页管理下的地址映射;又如,若为一个数组分配空间, 则所分空间的起始地址也应落在数组元素个数(假定一个元素需要偶 数个字节)的整数倍上,这样就可以根据当前地址算出当前处理的是 第几个元素,并且,当数组中的所有元素都处理一遍后,此时地址的 低部分会与数组起始地址的低部分相同,这样,机器就很容易判断该 数组已处理完一遍。
• 若在一分页存储管理系统中,某作业的页 表如下所示。已知页面大小为1024字节, 试将逻辑地址1011,2148,3000,5012转 化为相应的物理地址(注:此处块号即为 页面号)。
本题中,为了描述方便,设页号为P,页内位移为W,逻辑 地址为A,内存地址为M,页面大小为L,则 P=int(A/L) W=A mod L 对于逻辑地址1011 P=int(1011/1024)=0 W=1011 mod 1024=1011 A=1011=(0,1011) 查页表第0页在第2块,所以物理地址为M=1024*2+1011= 3059。
什么是抖动现象?如何消除这种现象? 解 抖动现象,是在虚存管理下,用于页面(在内、外存之间) 对换的时间比程序的有效运行时间还要多的这样一种现象。 它可以是一进程内部的局部性抖动,也可以是整个系统的 全局性抖动。造成这种情况固然与置换算法和页面走向有 关,但其根本原因是多道系统内的进程数太多,从而分给 每个进程的页面数太少。因此,解决这一问题的最有效的 办法是减少系统内的进程数。Denning于1980年提出了 “L=S准则”,即调整系统内的进程数,使得产生缺页的 平均间隔时间(L)等于系统处理进程缺页的平均时间 (S)。理论和实践表明,此时的CPU利用率最高。
有一计算机系统,内存容量为512K,辅存容量为2G,逻辑 地址形式如下: 段号 段内地址 29 20 19 0 求其虚拟存储器的实际容量? 解 虚拟内存的实际大小由系统的逻辑地址结构、主存辅存容 量共同决定。虚拟内存容量的理论值是2^10 *2^20=1G; 最大段内地址为2^20=1M,远大于内存容量,其段长超过 512K的内存容量,故最大实际段长为512k而不是1M。 所以可计算虚拟存储容量为2^10 *512K =2^10 *0.5M=0.5G。 0.5G<2G,因此虚拟存储器的实际容量是0.5G。
静态重定位的特点有哪些? (1)实现容易,无需增加硬件地址变换机构; (2)一般要求为每个程序分配一个连续的存储 区; (3)在重定位过程中,装入内存的代码发生了 改变; (4)在程序执行期间不在发生地址的变换; (5)在程序执行期间不能移动,且难以做到程 序和数据的共享,其内存利用率低。
动态重定位的特点有哪些? (1)动态重定位的实现要依靠硬件地址变换机构,且存储管理的软件算法 比较复杂; (2)程序代码是按原样装入内存的,在重定位的过程中也不发生变化,重 定位产生的物理地址存放在内存地址寄存器中,因此不会改变代码; (3)同一代码中的同一逻辑地址,每执行一次都需要重位一次; (4)只要改变基地址,就可以很容易地实现代码在内存中的移动; (5)动态重定位可以将程序分配到不连续的存储区中; (6)实现虚拟存储器需要动态重定位技术的支持; 尽管动态重定位需要硬件支持,但他支持程序浮动,便于利用零散的内 存空间,利于实现信息共享和虚拟存储,所以现代计算机大都采用动 态重定位。
常用的内存信息保护方法有哪几种?它们各自的特点是什么? 解 常用的内存保护方法有硬件法、软件法和软硬件结合保护法三种。 界地址保护法,即上下界保护法,是一种常用的硬件保护法。上、下界存储保护 技术要求为每个进程设置一对上、下界寄存器。上、下界寄存器中装有被保 护程序和数据段的起始地址和终止地址。在程序执行过程中,在对内存进行 访问操作时,首先进行访问地址合法性检查,即检查经过重定位之后的内存 地址是否在上、下界寄存器所规定的范围之内。若在规定的范围之内,则访 问是合法的,否则是非法的,并产生访问越界中断。 保护键法也是一种常用的软件存储保护法。保护键法为每一个被保护的存储块分 配一个单独的保护键。在程序状态字中设置相应的保护键开关字段,对不同 的进程赋予不同的开关代码,与被保护的存储块中的保护键匹配。保护键可 以设置成对读写同时保护的,或只对读写进行单项保护的。如果开关字段与 保护键匹配或存储块未受到保护,则访问该存储块是允许的,否则将产生访 问出错中断。 另外一种常用的软硬件内存保护方式是界限存储器与CPU的用户态、核心态相结 合的保护方式。在这种保护方式下,用户态进程只能访问那些在界限寄存器 所规定范围内的内存部分,而核心态进程则可以访问整个内存地址空间。
相关主题