:存储管理
Posted 快乐江湖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了:存储管理相关的知识,希望对你有一定的参考价值。
文章目录
费翔林操作系统课后题
思考题
1.试述存储管理的基本功能
【答案】
- 存储分配:为进程分配内存空间以便运行,完成内存区的分配和回收工作
- 地址映射:为了使编程更加方便,程序员写程序时应该只需要关注指令、数据和逻辑地址,而无需关心物理内存的实际情况,实际转换应该交给操作系统负责
- 存储保护:系统负责隔离分配给进程的内存区,使之互不干扰、免遭破坏,确保进程对存储单元的独占式使用,防止地址越界或操作越权
- 存储共享:为了节省内存空间和实现进程通信,系统允许多个进程共享内存区
- 存储扩充:操作系统把内存和外存结合起来,进程一个容量近似外存、速度近似内存的虚拟存储器。允许用户的逻辑地址空间大于内存的物理地址空间,虚存管理自动在内存和外存之间移动信息
2.试述计算机系统中的存储器层次,为什么要配置层次式存储器
【答案】
采用层次结构的存储子系统可以在容量大小、速度快慢、价格高低等因素取得一个平衡点,获得较好的性价比。计算机系统的存储器层次结构自上而下分为:寄存器、缓存、内存、磁盘、磁带5层,存储介质的访问速度自上而下越来越快,容量越来越小,价格越来越高
3:什么是逻辑地址和物理地址
【答案】
逻辑地址:程序员视角中看到的地址
物理地址:数据在主存中真实的地址、
4:何谓地址转换(重定位)?哪些方法可以实现地址转换
【答案】
可执行程序逻辑地址转换为物理地址的过程称之为地址重定位
- 静态地址重定位:由装载程序实现装载代码模块的加载和地址转换,把它装入分配给进程的内存指定区域,其中所有逻辑地址修改为内存物理地址
- 动态地址重定位:由装载程序实现装载代码模块的加载,把它再装入分配个进程的内存指定区域,但对链接程序处理过的应用程序的逻辑地址则不做任何修改,程序内存起始地址被置入硬件专用寄存器——重定位寄存器
- 运行时链接地址重定位:现代操作系统通常支持动态链接系统库及运行时链接装载方式,不再要求启动执行程序时就已装载整个程序的所有目标模块
5.分区存储管理中常采用哪些分配策略?比较其优缺点?
①:单一连续分配
②:固定分区分配
③:动态分区分配
6.什么是移动技术?在什么情况下采用这种技术?
【答案】
当在未分配区表中找不到足够大的空闲区来装入新进程时,可以采用移动技术把已经在内存中的进程分区连接在一起,使分散的空闲区汇集成片,也叫内存紧凑。第一种方法是把所有当前占用的分区内容移动到内存的一端;第二种方法是把占用分区内容移动到内存的一端,但是当产生足够大的空闲区时就停止移动
7.若采用表格方式管理可变分区,试绘制分配和释放一个存储区的算法流程图
【答案】
假设进程A请求 x x xKB的内存区
- 查内存分配表,若有大于 x x xKB 的空闲区则转步骤4
- 若空闲区总和小于 x x xKB,则令进程A等待内存资源
- 移动内存的相关分区信息,修改内存分配表有关项,修改被移动者的基址寄存器等信息
- 分配 x x xKB内存,修改内存分配表有关项,设置进程A的基址寄存器,有申请者等待时予以释放
8.什么是存储保护?在分区存储管理中如何实现分区的保护
【答案】
分区保护的目的是防止未经核准的用户访问分区
- 上界/下界寄存器保护:界寄存器中存放的是作业的装入地址,下界寄存器装入的是作业的结束地址,形成的物理地址必须满足上界寄存器<=物理地址<=下界寄存器
- 基址/限长寄存器保护:基址寄存器中存放的是作业的装入地址,限长寄存器装入的是作业长度,形成的物理地址必须满足基址寄存器<=物理地址<基址寄存器+限长寄存器
9.什么是虚拟存储器?列举采用虚拟存储技术的必要性和可能性
【答案】
虛拟存储器是指在具有层次结构存储器的计算机系统中,具有请求调入和交换功能,为用户提供一个比实际物理内存容量大得多的可寻址的一种存储器系统,它能从逻辑上对内存容量进行扩充
- 必要性:
- 可能性:根据程序的局部性定理,应用程序在执行之前,没有必要全部装入内存,而只需要将那些当前要运行的部分页或段先装入内存即可运行,其余部分可以仍然留在外存。程序在执行时,如果它所访问的页(段)已经调入内存,便可继续执行下去
10.试述请求分页虚存管理的实现原理
【答案】
请求分页虚存管理是将进程信息副本存放外存,当它被调度投入运行时,程序和数据没有全部装入内存,仅当装入当前使用页面,进程执行过程中访问到不在内存的页面时,再由系统自动调入。用得较多的分页虚存管理是请求分页,当需要执行某条指令或使用某个数据而发现它们不在内存时产生缺页异常,系统从磁盘中把此指令或数据所在的页面调入,这样做能够保证用不到的页面不会被装入内存
11.分页虚存管理中有哪几种比较常见的页面淘汰算法
【答案】
- OPT:最优算法
- FIFO:先进先出算法
- PageBuf:页面缓冲算法
- LRU:近期最少用算法
- NRU:最近未使用算法
- NFU:最不经常使用算法
- aging:老化算法
- SCR:第二次机会算法
- Clock1:时钟算法
- Clock2:改进型时钟算法
- ws:工作集算法
- PDFF:缺页频率替换算法
12.试比较分页虚存管理和分段虚存管理
【答案】
13.试述几种存储保护方法
【答案】
- 界地址保护:上下界保护,地址检查机构和基址、限长寄存器和动态地址转换机构。
- 存储键保护
14.试述存储管理中的碎片。列出各种存储管理方法中可能产生何种碎片
【答案】
- 内部碎片:在一个分区内部出现的碎片叫做内部岁批判。比如固定分区就会产生内部碎片
- 外部碎片:在所有分区之外新增的碎片叫做外部碎片。比如在动态分区法中出现的越来越多的小空闲块就是外部碎片
15.试述分页存储管理中决定页面大小的主要因素
- 页面大小的设置主要因素是与系统的硬件有关
- 如果页面较小,虛存的页面数就增加,页表也随着扩大,占用的空间多,但内
碎片小,浪费少;如果页面较大,可以减少页表所耗费的存储空间,有利于提高IO 的效率,但内部碎片大,浪费多
16.实现虚拟存储必须要有哪些软硬件支持
【答案】
- 硬件:Cache
- 软件:局部性原理
17.如果内存中的某页正在与外部设备交换信息,那么当发生缺页中断时,可以将这一页淘汰吗?有什么解决方法
【答案】
不可以。
18.为什么在页式存储器中实现程序共享时,必须对共享程序给出相同的页号
【答案】
实现程序共享时,由于页式存储结构要求逻辑地址空间是连续的,共享程序若含有转移指令,这些转移指令的转移地址是确定的,所以在程序运行前共享程序的页号必须是确定的
19.在段式存储器中实现程序共享时,共享段的段号是否一定相同?
【答案】
不用。几道作业共享的例行程序可放在一个段中,只要让各道作业的共享部分有相同的基址/限长值就行了,共享的段号不一定相同
20.试述段页式存储器的优缺点
【答案】
- 优点:段页式存储分配方式既照顾到了用户共享和使用方便的需求,又考虑到了主存的利用率,提高了系统的性能
- 缺点:段页式存储分配方式的空间浪费要比页式管理的多。作业各段的最后一页都有可能浪费一部分空间。另外段表和页表占用的空间都比页式和段式的多,这样就增加了系统开销
21.什么是抖动?请给出抖动的例子
【答案】
在请求分页存储管理中,可能出现这种情况,即对刚被替换出去的页,立即又要被访问。需要将它调入,因无空闲内存又要替换另一页,而后者又是即将被访问的页,于是造成了系统需花费大量的时间忙于进行这种频繁的页面交换,致使系统的实际效率很低,严重导致系统瘫痪,这种现象称为抖动现象
抖动现象发生在FIFO页面置换算法中,FIFO还会产生Belady现象,因而FIFO并不是一个好的置换算法。
22.在可变分区存储管理中回收一个分区时有多种不同的邻接情况,试讨论各种情况的处理方法
【答案】
- 回收分区的上邻分区是空闲的:需要将两个相邻的空闲区合并成一个更大的空闲区,然后修改空闲区表
- 回收分区的下邻分区是空闲的:需要将两个相邻的空闲区合并成一个更大的空闲区,然后修改空闲区表
- 回收分区的上、下邻分区都是空闲的:需要将三个空闲区合并成一个更大的空闲区,然后修改空闲区表
- 回收分区的上、下邻分区都不是空闲的:则直接将空闲区记录在空闲区表中。
23.在请求分页存储管理中,如果把进程的页框数增加一倍,那么缺页中断次数会减少至一半吗?
【答案】
当然不一定是一半,这还得取决于操作系统内核的相关结构以及实际运行情况。因为系统中,缺页中断次数和页面大小有些关系,但并不只取决于页面大小,还跟系统总内存总量等很多因素有关,当系统内存不足时,会发生页面交换,此时也会产生很多次缺页中断,但与页面大小就没有太大关系了
24.试讨论虚拟存储器容量与地址总线宽度、内存容量及外存容量之间的关系
【答案】
虚存的最大容量由CPU的地址长度决定。虚存的实际容量由CPU的地址长和外存的容量决定,当CPU的地址长度能表示的大小远远大于外存容量时,虚存的实际容量为内存和外存容量之和;当外存容量远大于CPU字长能表示的大小时,虚存的实际容量由CPU字长决定。一般情况下,CPU的地址长度能表示的大小都大于外存容量
25.分页存储管理中大页面与小页面各自特点
【答案】
- 如果页面较小,虛存的页面数就增加,页表也随着扩大,占用的空间多,但内
碎片小,浪费少 - 如果页面较大,可以减少页表所耗费的存储空间,有利于提高IO 的效率,但内部碎片大,浪费多
26.试述缺页中断与一般中断之间的区别
【答案】
范围不同
- 一般中断只需要保护现场,然后就直接跳到需及时处理的地方
- 缺页中断除了保护现场之外,还要判断内存中是否有足够的空间存储所需的页或段,然后再把所需页调进来再使用
结果不同
- 一般中断在处理完之后返回时,执行下一条指令
- 缺页中断返回时,执行产生中断的那一条指令
次数不同
- 在指令执行期间产生和处理缺页中断信号,一条指令在执行期间,可能产生多次缺页中断
- 一般中断只产生一次,发生中断指令后转入相应处理程序进行处理,恢复被中断程序现场
应用题
【答案】
【答案】
(1)首次适应算法
12KB选中分区3,这时分区3还剩8KB。10KB选中分区1,恰好分配故应删
去分区1。9KB选中分区4,这时分区4还剩9KB
(2)最佳适应算法
12KB选中分区7,恰好分配故应删去分区7。10KB 选中分区1,恰好分配故
应删去分区1。9KB选中分区6,恰好分配故应删去分区6。
(3)最差适应算法
12KB选中分区3,这时分区3还剩8KB。10KB选中分区4,这时分区4还
剩8KB。9KB选中分区8,这时分区8还剩6KB
(4)下次适应算法
12KB选中分区3,这时分区3还剩8KB。10KB选中分区4,这时分区4还
剩8KB。9KB选中分区6,恰好分配故应删去分区6。
【答案】
由题目可知,页内偏移量占12位,故一个页面大小为 2 12 = 4 2^12=4 212=4KB,共有 2 20 2^20 220个页面
【答案】
数据如果在缓存了,那么直接访问;如果不在缓存,需要装入
- 数据在缓存中的比率为: n − 1 n \\fracn-1n nn−1
- 数据在内存中的比率为: ( 1 − n − 1 n ) × m − 1 m = m − 1 n m (1-\\fracn-1n)×\\fracm-1m=\\fracm-1nm (1−nn−1)×mm−1=nmm−1
- 数据在辅存中的比率为: ( 1 − n − 1 n ) × ( 1 − m − 1 m ) = 1 n m (1-\\fracn-1n)×(1-\\fracm-1m)=\\frac1nm (1−nn−1)×(1−mm−1)=nm1
- 平均访问时间为== ( n − 1 n × A ) + ( m − 1 n m × ( A + B ) ) + ( 1 n m × ( A + B + C ) ) = A + B n + C n m (\\fracn-1n×A)+(\\fracm-1nm×(A+B))+(\\frac1nm×(A+B+C))=A+\\fracBn+\\fracCnm (nn−1×A)+(nmm−1×(A+B))+(nm1×(A+B+C))=A+nB+nmC
【答案】
(1)2.4us
(2)0.8×1.2+0.2×2.4=1.24us
将下列段号和位数转化为对应物理地址
【答案】
- <0,430>:649
- < 3,400>:1727
- <1,1>:2301
- <2,50>:由于140>90,越界
- <4,4>:1956
【答案】
首先将逻辑地址11123456转为二进制,也即001 001 001 010 011 100 101 110,由于页面大小为1KB,因此后10位作为偏移量,即1100101110。主存大小为 2 18 2^18 218B,所以主存块为256块,因此这里100(八进制)=001000000是合法的地址,接着与后10位拼接,形成地址001000000 1100101110,故物理地址为201456(八进制)
【答案】
由题意可知,页号部分占用4位。2F6A对应的二进制为:0010 1111 0110 1010,又因为其对应的物理块号为14,所以对应物理地址为EF6AH
【答案】
一共有100×100=10000个数据,每页存放200个数据,也即有50页,对于程序A,中断次数为50次(访问完一行数据需要中断一次),但是对于程序B,访问不连续,是按照一列一列跳转访问,所以中断次数会增加,也即5000次(访问一个数据就需要中断一次)
【答案】
t
1
t_1
t1时刻的工作集为1,2,3,6,7,8,9
t
2
t_2
t2时刻的工作集为3,4
19:有一个分页虚拟存储系统,测得CPU和磁盘利用率如下。试指出每种情况下所存在的问题和采取的措施
(1)CPU:13%;磁盘97%
(2)CPU:87%;磁盘3%
(1)CPU:13%;磁盘3%
【答案】
(1)系统可能出现抖动,可以暂停运行部分进程
(2)系统运行进程,可以增加进程数进一步提高资源利用率
(3)处理器和设备利用率均很低,可以增加并发运行的进程数目
【答案】
当数组元素a [0],a[1] ,…,a[19]存放在一个页面中时,其空间局部性和时间局部性较好,也就是说,在很短时间内执行都挂行循环乘法程序,而且数组元素分布在紧邻连续的存储单元中。当数组元素存放在不同页面中时,其时间局部性虽相同,但空间局部性较差,因为处理的数组元素分布在不连续的存储单元中
【答案】
快表的命中率为0.75,则缺失率为0.25,又缺页中断率为0.1,则内存命中率为0.15
如果在快表中,那么访问时间就是1×0.75
如果未在快表中且内存命中(肯定实现已经访问了快表),那么访问时间就是2×0.15
如果未在快表且未在内存,那么访问时间就是(2+5000)×0.1
所以时间是501.25us
以上是关于:存储管理的主要内容,如果未能解决你的问题,请参考以下文章