《操作系统第4章辅导与自测.docx》由会员分享,可在线阅读,更多相关《操作系统第4章辅导与自测.docx(17页珍藏版)》请在三一办公上搜索。
1、操作系统第4章辅导与自测第4章 存储管理 辅导与自测 4.1 本章知识点 存储器是计算机系统中的关键资源,对内存如何处理在很大程度上将影响整个系统的性能。存储管理即对内存的管理,存储管理目前仍是人们研究操作系统的中心问题之一,以至操作系统的命名也往往取决于存储管理的策略。 本章的主要知识点为: 本章的重要概念 本章涉及到的概念比较多,主要有:内存、外存、逻辑地址/相对地址、物理地址/绝对地址、逻辑地址空间/地址空间、内存空间/物理空间/绝对空间、重定位、静态重定位、动态重定位、对换技术、碎片、紧缩、虚拟存储器、页面抖动。 存储器作为计算机系统中最主要的组成部分,按照速度、容量和成本划分一个层次
2、结构,分别是寄存器、高速缓存、内存、磁盘和磁带。用户程序必须装入到内存才能运行。进程的地址空间不同于内存的物理空间。经过重定位可以把逻辑地址转变为内存的物理地址。重定位分为静态和动态两种方式,现在的计算机系统中都采用动态重定位方法。 对换技术可以利用外存来解决内存不足的问题。现在Linux系统中还采用这种技术。 分区管理技术 分区分配是为支持多道程序运行而设计的一种最简单的存储管理方式,可分为固定分区法和动态分区法。固定分区就是内存中分区的个数固定不变,各个分区的大小也固定不变,但不同分区的大小可以不同。每个分区只可装入一个进程。动态分区是在进程要进入内存时才建立的,使其大小恰好适应进程的大小
3、。动态分区法常用的分配策略有两种:最先适应算法和最佳适应算法,前者空闲表按位置排列,后者空闲表以空闲分区的大小为序。 具有固定大小分配单元的系统,如MFT或分页系统,会产生内部碎片;而具有可变大小分配单元的系统,如MVT,会出现外部碎片。 为了有效解决碎片问题,实现的方法是移动某些已分配区的内容,使所有进程的分区紧挨在一起,而把空闲区留在另一端。这种技术称为紧缩。采用紧缩技术的分区方法称为可重定位分区法。动态重定位由硬件实现,包括基址寄存器和限长寄存器,对CPU生成的所有地址进行合法性检查,并映像到物理地址。 分页技术 除了用紧缩技术解决碎片问题,还可以使用分页技术,即允许程序的存储空间不一定
4、连续,可以把一个进程分散地放在各个空闲的内存块中。 分页存储管理的基本方法是:逻辑空间分页,内存空间分块,块与页的大小相等。页连续而块离散,用页号查页表,由硬件作转换。 分页存储管理可以实现页面的共享,但是这样做并不实际,因为逻辑上相对完整的内容不见得存在于一个或几个完整的页面中。此外,还可以在页表中设置存取控制字段,进行页面保护,禁止非法访问。 虚拟存储管理 虚拟存储器是用户能作为可编址内存对待的虚拟存储空间,它使用户逻辑存储器与物理存储器分离,是操作系统给用户提供的一个比真实内存空间大得多的地址空间。 1 虚拟存储技术允许把大的逻辑地址空间映射到较小的物理内存上,这样就提高了多道程序并发执
5、行的程度,增加了CPU的利用率。虚拟存储器的特性包括:虚拟扩充、部分装入、离散分配和多次对换等。 使用虚拟存储技术的页式管理为请求分页式存储管理。它是根据实际程序执行的顺序,动态申请存储块。并不是把所有页面都放入内存。对一个程序的第一次访问将产生缺页中断,转入操作系统进行相应处理。操作系统依据页表确定页面在外存上的位置,然后找一个空闲块,把该页面从外存上读到内存块中。同时,修改页表有关项目,以反映这种变化,产生缺页中断的那条指令被重新启动执行。这种方式允许一个程序即使它的整个存储映像并没有同时在内存中,也能正确运行。只要缺页率足够低,其性能还是很好的。 请求分页可用来减少分配给一个进程的块数,
6、这就允许更多进程同时执行,而且允许程序所需内存量超出可用内存总量。 常用页面置换算法 当总内存的需求量超出实际内存量时,为释放内存块给新的页面,需要进行页面置换。有各种页面置换算法可供使用。先进先出法是最容易实现的,但性能不是很好。最佳置换法需要未来知识,仅有理论价值。最近最少使用置换法是OPT的近似算法,但实现时要有硬件的支持和软件开销。最近未使用置换法是LRU的近似算法。 置换算法的好坏直接影响系统的性能。好的页面置换算法能够适当降低页面更换频率,尽量避免系统“抖动”。 Linux系统的存储管理技术 Linux采用对换和请求分页存储管理技术,页面置换采用LRU算法。对换任务是由内核的对换守
7、护进程kswapd完成,以保证系统中有足够的空闲内存页。Linux系统采用三级页表的方式,以节省内存资源。采用位图和链表两种方法来管理内存页。 4.2 典型例题解析 在目标程序装入内存时,一次性完成地址修改的方式是. A静态重定位 B动态重定位 C静态连接 D动态连接 答案 A 分析 回答这道题需要清楚静态重定位和动态重定位的不同。 静态重定位是在目标程序装入内存时,由装入程序对目标程序中的指令和数据的地址进行修改,即把程序的逻辑地址都改成实际的内存地址。对每个程序来说,这种地址变换只是在装入时一次完成,在程序运行期间不再进行重定位。按照静态重定位方式,一个程序A装入内存时的情况就变成图4.1
8、所示的样子。 从图中可以看出,经过静态重定位,原100号单元中的指令放到内存5100号单元,该指令中的相对地址500相应变成5500。以后程序A执行时,CPU是从绝对地址5500号单元中取出数据12345,装入到寄存器A中。 静态重定位的优点是无须增加硬件地址转换机构,便于实现程序的静态连接。在早期计算机系统中大多采用这种方案。它的主要缺点是程序的存储空间只能是连续的一片区域,而且在重定位之后就不能再移动,这不利于内存空间的有效使用;另外各个用户进程很难共享内存中的同一程序的副本。 2 0 0 5000 100 LOAD A 500 5100 LOAD A 5500 500 12345 550
9、0 12345 700 700 程序A的地址空间 5700 程序A的内存空间 图4.1 静态重定位示意图 动态重定位是在程序执行期间每次访问内存之前进行重定位。这种变换是靠硬件地址变换机构实现的。通常采用一个重定位寄存器,其中放有当前正在执行的程序在内存空间中的起始地址,而地址空间中的代码在装入过程中不发生变化。动态重定位的过程如图4.2所示。 这时,操作对象的绝对地址就是重定位寄存器中的内容操作对象的相对地址。 重定位寄存器 0 5000 0 5000 相对地址 5100 100 LOAD A 500 LOAD A 500 500 500 5500 12345 12345 700 700 5
10、700 程序A的地址空间 程序A的内存空间 图4.2 动态重定位示意图 动态重定位的主要优点是程序占用的内存空间动态可变,也不必连续存放在一处;比较容易实现几个进程对同一程序副本的共享使用。它的主要缺点是需要附加的硬件支持,增加了机器成本,而且实现存储管理的软件算法比较复杂。 与静态重定位相比,动态重定位的优点突出。所以现在一般计算机系统中都采用动态重定位方法。 动态分区分配按进程的需求量分配内存分区,所以。 A分区的长度是固定的 B分区的个数是确定的 C分区的长度和个数都是确定的 D分区的长度不是预先固定的,分区的个数是不确定的 答案 D 3 分析 分区法分为固定分区和动态分区。其中,固定分
11、区内存中分区的个数固定不变,各个分区的大小也固定不变,但不同分区的大小可以不同。动态分区在最初时,除了操作系统占用的分区外,全部内存对用户进程都是可用的。分区是在进程要进入内存时才建立的,按照进程的需求量划分内存分区,根本无法预测分区的长度和个数。本题的选项A、B、C是针对固定分区而言的,只有选项D是描述动态分区的。 考虑一个由8个页面,每页有1024个字节组成的逻辑空间,把它装入到有32个物理块的存储器中,问: 逻辑地址需要多少二进制位表示? 物理地址需要多少二进制位表示? 解 因为页面数为8=23,故需要3位二进制数表示。每页有1024个字节,1024=210,于是页内地址需要10位二进制
12、数表示。32个物理块,需要5位二进制数表示。 页的逻辑地址由页号和页内地址组成,所以需要3+10=13位二进制数表示。 页的物理地址由块号和页内地址的拼接,所以需要5+10=15位二进制数表示。 分析 在分页存储管理中,逻辑地址结构如下图所示。 页号p 页内地址d 它由两个部分组成:前一部分表示该地址所在页面的页号p;后一部分表示页内地址d。页号的地址位数决定了页的多少,假设页号有20位,则地址空间中最多可容纳的页面数为220,即1MB个页面。页内地址位数确定了每页的大小,若页内地址为12位,则每页大小为212,即2KB。 同理,物理地址中块号的地址位数决定了块的多少,由于页式存储管理内存空间
13、块的大小与页面大小相同,所以物理地址中块内地址与逻辑地址中的页内地址位数相同。 若在一分页存储管理系统中,某作业的页表如下所示。已知页面大小为1024字节,试将逻辑地址1011,2148,4000,5012转化为相应的物理地址。 页号 0 1 2 3 块号 2 3 1 6 解 本题中,为了描述方便,设页号为p,页内位移为d,则: 对于逻辑地址1011,pint0,d1011 mod 10241011。查页表第0页在第2块,所以物理地址为1024210113059。 对于逻辑地址2148,pint2,d2148 mod 1024100。查页表第2页在第1块,所以物理地址为10241001124。
14、 对于逻辑地址4000,pint3,d4000 mod 1024928。查页表第3页在第6块,所以物理地址为102469287072。 对于逻辑地址5012,pint4,d5012 mod 1024916。因页号超过页表长度,该逻辑地址非法。 分析 页式存储管理的地址结构是一维的,即逻辑地址/物理地址只用一个数值即可表示。若给定的逻辑地址A,页面的大小为L,则页号p和页内地址d可按照下式求得: p=int (A/L) d=A mod L 其中,int是取整函数,mod是取余函数。 图4.3显示了页式管理系统的地址转换机构。 4 逻辑地址 物理地址 内 f d p d CPU 页表 0 存 p
15、p f 图4.3 页式存储管理中的地址转换机构 页表的作用是实现从页号到物理块号的地址映射。以逻辑地址的页号检索页表,得到该页的物理块号;同时将页内地址d直接送入物理地址寄存器的块内地址字段中。这样,物理块号和块内地址拼接成了实际访问内存的地址,从而完成了从逻辑地址到物理地址的转换。 判断:虚拟存储器实际上是一种设计技巧,使主存物理容量得到扩大。 答案 错误。 分析 根据程序执行时的互斥性和局部性两个特点,可以只将作业的一部分装入主存,其余的部分放在辅存上,当需要的时候,再从辅存调入主存,这样用户编制程序时可以不必考虑主存的实际容量,允许用户的逻辑地址空间大于主存的绝对地址空间,对用户来说,好
16、像计算机具有一个容量很大的主存,这就是“虚拟存储器”。 虚拟存储器实际上是为扩大主存容量而采用的一种设计技巧。它与实际的主存物理容量无关,而是大小比主存大得多的假想空间,使用户感觉到所能使用的“主存空间”非常大。 与虚拟存储技术不能配合使用的是。 A分区管理 B页式存储管理 C段式存储管理 D段页式存储管理 答案 A 分析 采用页式、段式、段页式管理可以实现虚拟存储器,但对固定分区、可变分区方式都不能实现虚拟存储器。 我们知道实现虚拟存储技术的物质基础是二级存储结构和动态的地址转换机构。固定分区方式没有硬件地址转换机构。 可变分区方式管理主存也不能实现虚拟存储。因为在这种管理方式下,每次必须将
17、作业完整地调入主存,并要求连续存放,这不符合虚拟存储器的基本原理;另外,虽然可变分区方式有硬件地址转换机构,但它把绝对地址超出限定范围按出错处理,而不是产生“缺分区中断”。 虚拟存储器的特征可以归结为以下16个字:虚拟扩充、部分装入、离散分配、多次对换。 考虑下述页面走向: 1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6 当内存块数量分别为3时,试问FIFO、LRU、OPT这三种置换算法的缺页次数各是多少? 解 使用FIFO算法,缺页次数是16;使用LRU算法,缺页次数是15;使用OPT算法, 5 缺页次数是11。 分析 所有内存块最初都是空的,所以第一次用到的
18、页面都产生一次缺页。 当内存块数量为3时: FIFO 1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6 块1 1 1 1 4 4 4 6 6 6 3 3 3 2 2 2 6 块2 2 2 2 1 1 1 2 2 2 7 7 7 1 1 1 块3 3 3 3 5 5 5 1 1 1 6 6 6 3 3 缺页 因此,FIFO算法发生缺页中断的次数为16。 在FIFO算法中,先进入内存的页面被先换出。例如,当页6要调入时,内存的状态为4、1、5,考查页6之前调入的页面,分别为5、1、2、4、,可见4为最先进入内存的,本次应换出,然后把页6调入内存。 LRU 1,2,3,
19、4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6 块1 1 1 1 4 4 5 5 5 1 1 7 7 2 2 2 块2 2 2 2 2 2 6 6 6 3 3 3 3 3 3 块3 3 3 1 1 1 2 2 2 2 6 6 1 6 缺页 因此,LRU算法发生缺页中断的次数为15。 在LRU算法中,最近最少使用的页面被先换出。例如,当页6要调入时,内存的状态为5、2、1,考查页6之前调入的页面,分别为5、1、2、,可见2为最近一段时间内使用最少的,本次应换出,然后把页6调入内存。 OPT 1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6 块1
20、1 1 1 1 1 1 3 3 3 3 6 块2 2 2 2 2 2 2 7 2 2 2 块3 3 4 5 6 6 6 6 1 1 缺页 因此,OPT算法发生缺页中断的次数为11。 在OPT算法中,在最远的将来才被访问的页面被先换出。例如,当页6要调入时,内存的状态为1、2、5,考查页6后面要调入的页面,分别为2、1、2、,可见5为最近一段时间内使用最少的,本次应换出,然后把页6调入内存。 4.3 练习题 一、选择题 1. 通常,用户编写的程序中所使用的地址是。 A逻辑地址 B物理地址 C绝对地址 D内存地址 2. 可由CPU调用执行的程序所对应的地址空间为。 A符号名空间 B虚拟地址空间 C
21、物理空间 D逻辑地址空间 3. 把逻辑地址转变为内存物理地址的过程称作。 A编译 B连接 C运行 D重定位 4. 经过,目标程序可以不经过任何改动而装入物理内存单元。 6 A静态重定位 B动态重定位 C编译或汇编 D存储扩充 5. 动态重定位是在程序期间,每次访问内存之前教学重定位。 A执行 B编译 C装入 D修改 6. 在分时系统中,可将进程不需要或暂时不需要的部分移到外存,让出内存空间以调入其他所需数据,称为。 A覆盖技术 B对换技术 C虚拟技术 D物理扩充 7. 分区管理中进行分区的是主存的。 A系统区域 B用户区域 C程序区域 D整个区域 8. 分区管理要求对每一个作业都分配的内存单元
22、。 A地址连续 B若干地址不连续 C若干连续的页面 D若干不连续的页面 9. 固定分区中各分区的大小是。 A相同的 B相同或者不同,但预先固定 C根据进程要求确定 D随进程个数而定 10. 动态分区管理方式下,分配作业的主存空间根据。 A 一张分区说明表 B 一张分区说明表和一张空闲分区表 C 一张“位示图”构成的分区说明表 D 由系统自定 11. 在存储管理中,为实现地址映射,硬件应提供两个寄存器,一个是基址寄存器。另一个是。 A控制寄存器 B程序状态字寄存器 C限长寄存器 D通用寄存器 12. 可重定位分区存储管理采用的地址转换公式是。 A 绝对地址=界限寄存器值+逻辑地址 B 绝对地址=
23、下限寄存器值+逻辑地址 C 绝对地址=基址寄存器值+逻辑地址 D 绝对地址=块号块长+页内地址 13. 最先适应分配算法把空闲区 A 按地址顺序从小到大登记在空闲区表中 B 按地址顺序从大到小登记在空闲区表中 C 按长度以递增顺序登记在空闲区表中 D 按长度以递减顺序登记在空闲区表中 14. 最容易形成很多小碎片的可变分区算法是。 A最先适应算法 B最佳适应算法 C位示图法 D以上都不是 15. 下列存储管理方案中,不采用动态重定位的是。 A页式管理 B可变分区 C固定分区 D段式管理 16. 在分页存储管理系统中,从页号到物理块号的地址映射是通过实现的。 A段表 B页表 CPCB DJCB
24、7 17. 在页式存储管理系统中,整个系统的页表个数是个。 A1个 B2个 C与页面数相同 D和装入主存的进程个数相同 18. 虚拟存储技术是。 A扩充内存空间的技术 B扩充相对地址空间的技术 C扩充外存空间的技术 D扩充输入输出缓冲区的技术 19. 虚拟存储器的容量是由计算机的地址结构决定的,若CPU有32位地址,则它的虚拟地址空间为。 A100K B640K C2G D4G 20. 在请求分页虚拟存储管理中,若所需页面不在内存中,则会引起。 A输入输出中断 B时钟中断 C越界中断 D缺页中断 21. 下列存储管理方案中,不要求将进程全部调入并且也不要求连续存储空间的是。 A固定分区 B可变
25、分区 C页式存储管理 D请求分页式存储管理 22. 存储管理中,页面抖动是指。 A 使用机器时,屏幕闪烁的现象 B 被调出的页面又立刻被调入所形成的频繁调入调出现象 C 系统盘有问题,致使系统不稳定的现象 D 由于主存分配不当,偶然造成主存不够的现象 23. 在页式虚拟存储管理系统中,LRU算法是指。 A 最早进入内存的页先淘汰 B 近期最长时间以来没被访问的页先淘汰 C 近期被访问次数最少的页先淘汰 D 以后再也不用的也先淘汰 二、判断题 1. 在现代操作系统中,不允许用户干预内存的分配。 2. CPU可以直接访问外存上的数据。 3. 固定分区存储管理的各分区的大小不可变化,这种管理方式不适
26、合多道程序设计系统。 4. 可重定位分区存储管理可以对作业分配不连续的内存单元。 5. 采用动态重定位技术的系统,目标程序可以不经任何改动,而装入物理内存。 6. 动态存储分配时,要靠硬件地址变换机构实现重定位。 7. 在页式存储管理方案中,为了提高内存的利用效率,允许同时使用不同大小的页面。 8. 虚拟存储器是利用操作系统产生的一个假想的特大存储器,是逻辑上扩充了内存容量,而物理内存的容量并未增加。 9. 虚拟存储方式下,程序员编制程序时不必考虑主存的容量,但系统的吞吐量在很大程度上依赖于主存储器的容量。 10. 虚拟存储空间实际上就是辅存空间。 11. 在虚拟存储系统中,操作系统为用户提供
27、了巨大的存储空间。因此,用户地址空间的大小可以不受任何限制。 12. 页式存储管理系统不利于页面的共享和保护。 8 三、简答题 四、应用题 请同学们解答参考教材137页的课后习题。 请大家自己完成 参考答案: 一、ACDBA BBABB CCABC BDBDD DBB 二、1,5,6,8,9,12是正确的。 2. 。CPU不能直接访问外存上的数据,需要放入内存后才可以存取。 3. 。固定分区管理方式支持多道程序设计。 4. 。分区存储管理要求对作业分配连续的内存单元。 7. 。页式存储管理中使用的页面均大小相同。 10. 。虚拟存储空间不是一个实际存在的存储空间,是操作系统对逻辑内存的扩充。 11. 。虚拟存储器的容量不是无限大的,它受到指令的地址字长和外存容量的限制。 三和四、见本章教材习题解答。 9