概述
三、内存管理
- 程序的链接
静态链接:运行前将目标模块和库函数链接后不再拆开
动态链接:
- 装入时动态链接:将用户源程序编译后所得的目标模块,在装入内存时,采取边装入边链接的链接方式。
- 运行时动态链接:在执行时需要该目标模块时,才对它进行链接,其优点是便于修改和更新,便于实现对目标模块的共享。
- 装入方式:
1.绝对装入:逻辑地址和物理内存地址相同,只适用于单道程序环境
2.可重定位装入:
静态重定位(一次分配足够空间,运行期间不能移动和申请内存)
动态重定位(程序运行时,才进行地址转换,需要一个重定位寄存器的支持)
- 简述覆盖技术和交换技术
覆盖技术:根据程序运行的局部性,可将用户内存空间分为固定区和覆盖区,将同一个程序中经常使用的部分放入固定区,将即将访问的部分放入覆盖区,但是运行的代码量大于主存容量时,仍然不可运行
交换技术:换出cpu不运行的进程,换入cpu将要运行的进程,但是必须使进程执行时间比交换时间长(交换对象是进程)
- 简述动态分区分配及其分配策略
在进程装入内存时,根据进程的大小动态地建立分区,灵活度高,但是需要使用动态重定位寄存器解决运行产生的外部碎片问题
分配策略:
- 首次适应算法:空闲分区以地址递增的方式链接,分配内存时,顺序查找到第一个满足要求的空闲分区,性能最好
- 最佳适应算法:空闲分区按容量递增的方式链接,分配内存时,顺序查找到第一个满足要求的空闲分区,性能最差
- 最坏适应算法:空闲分区以容量递减的次序链接,找到第一个能满足要求的空闲分区,容易产生内部碎片
- 邻近适应算法:分配内存时,从上次查找位置开始查找
首次适应算法不仅是最简单的,而且是最有效率的
- 简述非连续分配内存管理方式
非连续分配允许一个程序分散的装入不相邻的内存分区。
- 阐述分页思想
把主存空间和进程划分成大小相等且固定的块
其中进程中的块称为页,内存中的块称为页框或帧,外存中相同大小的空间称为块固定分区只会产生内部碎片,动态分区只会产生外部碎片
- 逻辑地址位数/虚拟地址位数 = 页号位数 +页内偏移位数
- 虚拟内存大小/逻辑地址空间 = 2逻辑地址位数
- 页表项数 = 2页号位数 = 页大小 / 页表项大小
- 页大小 = 2页内偏移位数
- 页表大小 = 页表项数 * 页表项大小
- 页面数 = 2页号位数= 逻辑地址空间大小 / 页面大小
- 支持内存大小 = 2页表项位数*页大小
- 简述基本分页过程中逻辑地址到物理地址的变换过程
- 计算页号(逻辑地址 / 页面大小)和页内偏移(逻辑地址 % 页面大小)
- 若页号大于页表长度则产生越界中断,否则继续执行
- 页表中页号对应的页表项地址 = 页表始址 + 页号 * 页表项长度,取出的页表项内容就是物理物理块号
- 物理地址 = 物理块号 * 页面大小 + 偏移地址
- 简述基本分段过程中逻辑地址到物理地址的变换过程
最多分段数 = 2的段号位次方 最大段长 = 2的段内偏移次方
- 逻辑地址中前几位为段号,后几位为段内偏移量
- 若段号大于段表长度,则产生越界中断,否则继续执行
- 段号对应的段表项地址 = 段表始址 + 段号 * 段表项长度
- 取出该段表项的段始址,物理地址 = 段始址 + 段内偏移
- 简述段页式管理方式特点
- 系统为每个进程建立一个段表,每个分段有一个页表,即进程是一段,段内分页
- 系统中有段表寄存器和页表寄存器,进程寻址和判断越界
- 进行一个访问需要三次访问主存
//在页式、段式和段页式存储管理中,当访问一条指令或数据时,各需要进行几次访存?其过程如何?
1.页式存储管理一次存取需要访问2次主存
第一次根据逻辑地址的页号,访问内存的页表找到页面的物理地址
第二次根据这个物理地址存取数据
2.段式存储管理同理访存2次
3.段页式存储管理一次存取需要访存3次
首先访问内存的段表,然后访问内存的页表,最后访问数据所在的物理地址
4.多级页表中,若页表分为N级则需要访存N+1次
5.在快表命中时,只需要访存1次
问题:
//假设一个页式存储系统具有快表,多数活动页表项都可以存在其中,
//若页表存在内存中,内存的访问时间是1us,检索快表的时间是0.2us,
//若快表命中率是85%,则有效存取时间是多少?若快表的命中率为50%,则有效存取时间是多少?
分析:
若快表命中则存取一次时间为(0.2+1)us,若快表未命中,则存取一次时间为(0.2+1+1)us
系统经常先访问快表,未命中时,再访问内存
所以有效存取时间 = (0.2+1)*85% + (0.2+1+1)*(1-85%)
已知系统为32位实地址,采用48位虚拟地址,页面大小为4KB,页表项大小为8B,每段最大为4GB
若采取纯页式存储,则要采用多少级页表?页内偏移式多少位?
系统采用段页式存储,则每个用户可以有多少段,段内采用几级页表?
- 简述局部性原理
局部性原理表现在两个方面:
- 时间局部性:用过不久可能还再用
- 空间局部性:访问的附近可能被访问
- 简述虚拟存储器的特征
- 多次性:作业可以分多次装入内存运行
- 对换性:作业运行过程中,可以进行换入和换出
- 虚拟性:逻辑上用外存进行内存空间的扩充
- 简述常见的页面置换算法(按性能排序)
最佳置换算法OPT:每次淘汰最长时间不再访问的页面,算法无法实现
最近最久未使用置换算法LRU:每次淘汰最近最长时间未使用的页面进行淘汰,性能好,但需要堆栈硬件支持
时钟置换算法CLOCK:首次装入和访问时,将使用位置为1,循环扫描时将1置0,全零时,将遇到的第一个替换
先进先出置换算法FIFO:每次淘汰最早进入内存的页面 ,可能出现可用物理块增加,但页故障率增加的Belady异常
- 简述页面调入的策略和抖动
- 静态预调入策略:利用空间局部性一次调入多个相邻页面
- 动态请求调页策略:将运行时需要的页面调入
- 抖动是指刚换出的页面马上又需要换入,原因是某个进程频繁访问的页面数高于可用的物理页数
- 简述缺页中断的处理流程
- 产生缺页中断
- 寻找空闲物理块 / 用页面置换算法决定淘汰页
- 页面调出
- 页面调入
交换技术交换的是进程,调入调出技术对象是页面或分段
最后
以上就是野性抽屉为你收集整理的408操作系统必考点2的全部内容,希望文章能够帮你解决408操作系统必考点2所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复