【操作系统】第四章问题与解答
1、为什么要配置层次式存储器?
使读取速度、存储容量、价格三个条件相互平衡
2、可采用哪几种方式将程序装入内存?它们分别适用于何种场合?
1、绝对装入
程序的相对地址与实际物理地址相同
适合于“单道程序”,要求程序员熟悉内存使用情况
2、可重定位装入
- 程序装入到内存后,立即把所有的逻辑地址转换成实际地址
- 实际物理地址由程序的相对地址加偏移量构成,而偏移量是根据内存使用情况动态变化的
适合于“多道程序”,程序员不用考虑实际内存情况
3、动态运行时装入
把程序装入到内存后,不立即修改对应的逻辑地址,而是在程序真正执行时才转换成实际地址
3、什么是静态链接?静态链接时需要解决两个什么问题?
静态链接,指在程序运行前,将各种目标模块和需要的库函数链接成一个完整的装配模块
要解决的两个问题:
1、修改相对地址:
不同模块的相对首地址都是0,链接到一个完整的模块后,需要指定唯一首地址
如:有三个模块A、B、C,长度分别为L、M和N;链接成一个完整模块后,B、C的首地址就不是0
- A首地址为0,A末尾地址为L-1;
- B首地址为L,B末尾地址为L+M-1
- C首地址为L+M,C末尾地址为L+M+N-1
2、更换外部调用符号:
如:A模块内部调用了B模块,语句为“call B;”,但链接到一个完整模块后,需要修改成B所在的相对地址
- A调用B,从call B变为jsr L (L为B首地址)
- B调用C,从call C变为jsr L+M (L+M为C首地址)
4、什么是“装入时动态链接”?装入时有什么优点?
把一个模块装入内存时,如果该模块调用了其它模块,再把被调用模块装入内存并链接
优点:
1、方便修改和更新模块
各种模块分开存放,方便修改模块内容。不像静态链接,需要对一个完整的模块重新打开再修改
2、方便对目标模块共享
- 静态链接,每个应用模块调用其它目标模块时,装入的是其它目标模块的拷贝,不能实现共享。
- 动态装入,一个目标模块可以被链接到几个不同应用模块中
5、什么是“运行时动态链接”?装入时有什么优点?
程序运行时,部分目标模块可能不会被用上,但也被装入了应用模块,这样很低效。
当程序运行时,如果某个被调用模块未被装入,才将其装入内存并链接
6、动态分区分配方式中,如何将各空闲分区链接成空闲分区链?
每个分区的起始位置设置一些控制分区分配的信息,以及在分区首设置一个前向指针,在分区末尾设置一个后向指针,用来将不同空闲分区链接成一个双向链表。
7、为什么要引入动态重定位?如何实现?
让系统对内存更方便的进行紧凑,减少无法被利用的小分区。
需要在系统中添加一个重定位寄存器,用来存放程序在内存中的起始地址。
程序在执行时,真正的访问的内存地址是相对地址加上重定位寄存器地址,随后再更新重定位寄存器
8、什么是基于顺序搜索的动态分区分配算法?可以分为几种?
将空闲分区构成一个链,按照顺序搜索空闲分区,找到一个大小能满足要求的分区。
适合不大的系统,当系统大时,内存分区很多,查找会变慢
1、首次适应
从链首开始查找,直到找到一个能满足要求的空闲分区,现在此分区划分一片空间给进程
2、循环首次适应
从上次找到的空闲分区的下一个分区开始查找,直到找到一个满足要求的分区
3、最佳适应
找一个能满足要求,而且是最小的空闲分区
4、最坏适应
找当前最大的分区,分割一部分给进程
缺点:导致系统缺少大分区
9、什么是基于索引搜索的动态分区分配算法?可以分为几种?
1、分类搜索
将空闲分区按容量大小进行分类,每类有相同容量的构建一个分区链表。
按照进程长度,从索引表中找到能容纳的最小分区链表,再从链接中找到一个分区
2、伙伴系统
10、动态分区分配进行内存回收时,有几种情况?
1、回收区和插入点前一个空闲分区F1相邻
把回收区与前一个分区合并,不用添加新表项,只要修改F1大小
2、回收区和插入点后一个空闲分区F2相邻
把后一个分区和回收区合并,添加新表项,新空闲分区首地址为回收区首地址,大小为回收区和F2大小
3、回收区和前、后都相邻
把回收区、F2添加到F1,取消F2表项,F1大小为三个分区和
4、回收区不与前后其它分区相邻
添加一个新空闲区,地址为回收区首地址,大小为回收区大小
11、分区管理中常用哪些策略?比较它们的优缺点
为了不让程序之间发生干扰,将用户空间划分为若干区域
1、固定分区
为进程运行前分配到一片固定内存
2、动态分区分配
根据进程实际需要,动态分配内存
12、为什么要引入对换?对换可以分为哪些策略?
某些因缺少资源而阻塞的进程占用了大量内存空间,而有些进程因为缺少内存空间一直停留在外存。此时需要提高系统吞吐量,设置了对换。
1、整体对换
cpu的中级调度实际就是对换功能
2、页面(分段)对换
如果按进程的一个“页面”或“分段”为单位,则称为“页面对换”或“分段对换”。
13、对“文件区”管理的目标和对“对换空间”管理的目标有什么不同?
文件区管理的主要目标是“提高文件存储空间利用率”,其次是提高文件访问速度
换空间管理的主要目标是“提高进程换入和换出速度”,其次是提高文件存储空间的利用率
14、为了实现对换,系统应该具有哪些功能?
1、对换空间的管理
2、进程的换入和换出
15、什么是页面?什么是物理块?页面的大小应如何确定?
将进程的逻辑地址空间分成若干个页面,页面强调是进程的逻辑地址合集
将内存的物理地址空间分成若干个块,块强调是内存的物理地址合集
进程的多个不同页可以装入内存的多个不同的块中
页面大小
若页面容量过小,可以减少页内碎片,但同时,每个进程需要的页面数目就增多了,就需要更多的页表来记录,也会占用大量内存
若页面容量过大,每个进程需要的页面数目减少,增加了换进换出速率,但也增加了页内碎片
合适的页面大小为2的幂,1KB~8KB
16、什么是页表?页表的作用是什么?
为了能在内存找到每个页面对应的块,系统为每个进程建立一张页面映像表,简称页表
页表记录的是每个页面对应的块号
17、为了实现分布存储管理,需要哪些硬件支持?
页表,地址变换机构
18、分页系统是如何实现地址变换的?
地址变换机构将逻辑地址分成页号和页内地址两个部分
如果页号合法(没有大于页表长度),则将页号为索引去检索页表
页表开始地址+页号*页表项长度=该表项在表中的位置
从而得到物理块号,再加上页内地址,得到实际物理地址