装入
Q: 使用绝对装入与可重定位装入的程序, 地址的使用上有什么区别?
A: 绝对装入: 使用绝对地址.
可重定位装入: 使用相对地址
Q: 静态重定位与动态重定位区别
A: 都是使用了相对地址, 装入物理内存的时候, 需要对相对地址进行转换
静态重定位在装入的时候就进行了转换
动态重定位则在执行的时候进行转换
Q: 静态重定位与动态重定位哪个更加适合程序的浮动?
A: 动态
为什么我也不清楚 Q W Q
Q: 编译与链接阶段产生的逻辑地址有什么区别?
A: 编译产生单个目标文件(*.o文件)的逻辑地址
链接产生可执行程序的逻辑地址
Q: 可执行程序和目标文件的关系
A: 多个目标文件+库文件(*.lib, *.a, *.so, *.dll),处理之后得到可执行文件
内存分配算法
基于顺序搜索的内存分配算法
Q: 为什么首次适应算法低地址会有很多外部碎片?
A: 首次适应算法从低地址开始, 找到第一个能满足大小的空闲内存块, 分配给作业
导致低地址有大量的小空闲内存碎片
Q: 循环首次适应算法与首次适应算法顺序搜索区别
A: 首次适应算法: 从低地址开始寻找满足大小的空闲内存块
循环首次适应算法: 从上次查找结束的地址开始搜寻满足大小的空闲内存块
Q: 循环首次适应算法与首次适应算法, 哪个效率更好?
A: 一般情况下, 还是首次适应算法效果更好
Q: 最佳适应与最坏适应算法顺序搜索区别
A: 最佳适应算法: 空闲内存块从小到大搜索, 第一个满足大小的空闲内存块, 分配给作业
最坏适应算法: 空闲内存块从大到小搜索, 第一个满足大小的空闲内存块 (一般就是最大的空闲内存块) 划分之后, 分配给作业
Q: 首次适应, 循环首次适应, 最佳适应, 最坏适应
四大顺序搜索算法, 哪个产生的外部碎片最多?
A: 最佳适应算法
每次都分配最接近作业需要大小的空闲内存块, 导致每次作业分配几乎都能产生外部碎片
名叫最佳其实性能很差, 外部碎片也是最多
Q: 首次适应, 循环首次适应, 最佳适应, 最坏适应
四大顺序搜索算法, 哪个性能最好?
A: 首次适应算法
循环首次适应算法, 内存很少保留大块的空闲内存块
最佳适应和最坏适应算法, 需要维护按照空闲内存块大小排序的队列, 每次分配或者释放内存, 都需要修改队列
使得最简单的首次适应算法, 性能最好
分页的内存分配算法
Q: 如何从页表得到页框的物理地址?
A: 页表划分为页表项
查找第
该值就是对应的页框的物理地址
Q: 为什么即使多层页表增加了存储空间占用与页表查询时间, 也用要引入多级页表?
A: 一个页表大小与一个页的大小相等
存在
在现实的计算机中,
如果使用多级页表, 只需要一级页表大小的连续空间, 二级页表可以离散存储.
甚至可以在不需要的时候, 放入外存, 需要的时候, 再从外存调入内存.
总的来说是增加了存储空间占用与页表查询时间, 但是不需要占用连续的内存空间, 而且可以通过调度策略, 增加可用内存大小
虚拟内存
实现虚拟内存管理的实现
请求分页系统在基本分页系统的基础之上, 增加了{请求调页}和{页面置换}功能
Q: 虚拟内存的大小由什么决定?
A: 1. 虚存的实际容量小于等于内存容量和外存容量之和
2. 虚存的最大容量小于等于计算机的地址位数能容纳的最大容量
虚拟内存
实际容量与最大容量是不同的吗
页面置换算法
常见的页面置换算法
Q: 最佳 (OPT) 页面置换算法与最近最久未使用 (LRU) 页面置换算法的区别
A: 最佳 (OPT) 页面置换算法: 向后看, 淘汰掉未来不可能使用, 或者下次使用间隔最长的页面
最近最久未使用 (LRU) 页面置换算法: 向前看, 淘汰掉上次调用与此时时间间隔最长的页面
Q: 为什么工程上不适用 OPT 页面置换算法, 仅仅用来作为其他算法性能的评估参照?
A: OPT 页面置换算法要求”向后看”的能力, 每次淘汰掉未来不可能使用, 或者下次使用间隔最长的页面
人类目前还没有这样的能力
Q: 什么是 Belady 异常?
A: 为进程分配的物理块增多, 缺页次数不减反增的异常现象
Q: 哪种页面置换算法会发生 Belady 异常?
A: FIFO, 可能会发生
Q: 简单 Clock 算法运行过程 (装入, 替换)
A: 装入:
为每个页面设置一位访问位, 当某页首次被装入或被访问时, 其访问位被置为 1
内存中的页面链接成一个循环队列
替换:
在选择淘汰一页时, 只需检查页面的访问位:
若为 0, 直接换出
若为 1, 将它置为 0, 暂不换出
指针指向下一个页面
Q: 改进 Clock 算法运行过程 (装入,修改, 替换三大过程)
A: 装入:
为每个页面设置一位访问位, 当某页首次被装入或被访问时, 其访问位R
被置为 1
内存中的页面链接成一个循环队列
修改:
为每个页面设置一个修改位M
, 当某页被修改时, 其修改位被置为 1
替换:
在选择淘汰一页时, 需检查页面的访问位与修改位:
第一轮扫描:
找到 R=0
且 M=0
的页面,直接淘汰;否则进入第二轮扫描.
第二轮扫描:
找到 R=0
且 M=1
的页面,直接淘汰;若无,清零所有页面的访问位,回到第一轮.
内存保护
内存分配管理方式的主要保护措施是{界地址}保护