考研系列—操作系统:第三章、内存管理
一、内存管理的概念
1.内存的基本知识
三种装入方式
三种链接方式
这里注意:装入方式-静态重定位、动态重定位区别在于什么时候转换地址
动态重定位需要重定位寄存器的支持
2.内存管理相关概念
主要内容(注意可能用到的一些寄存器)
存储保护:两种方式(第二种需要界地址寄存器和重定位寄存器)
地址转换:三种装入方式
内存扩充: 两种技术(覆盖和交换,注意区分对象)
内存分配和回收:两类分配(连续、非连续)
内存管理的主要功能:
内存空间的分配与回收、对内存空间的扩充、地址转换、内存共享、内存保护
(1)地址转换
装入程序并不是进行地址转换修改的步骤,本质上链接才是
只不过:在可重定位装入的方式中,实现了链接的步骤,将逻辑地址转换为物理地址;而如果是其他装入方式,绝对装入的程序是已经完成地址转换的,动态重定向是在运行时完成链接过程,实现地址转换。
(2)内存保护
方法1:在CPU中设置一对上下限寄存器,存放用户作业在内存中的上限和下限地址。每当CPU访问地址时,分别于这两个寄存器的值进行比较,判断有无越界。
(3)内存空间的扩充
①覆盖技术-针对一个程序
②交换技术-针对多个作业进程
这里注意一下:交换技术是在磁盘空间内分区,并且各有特点
PCB常驻内存,不是所有的进程信息都换出内存
(4)内存的分配与回收-连续分配管理
分配-修改空闲分区表的情况:
分配-直接删除空闲分区条目的情况:
回收-更新表项:
回收-新增表项:
回收-合并表项:
3.动态分区分配算法
(1)首次适应算法:按照地址空间排序
(2)最佳适应算法:按照空闲空间大小排序
(3)最坏适应算法:空闲分区按照容量递减次序排序
(4)临近适应算法
4.非连续分配管理方式
(1)基本分页存储
尤其注意:这里页表内的块号并不是内存块的起始地址,如果看第k块的起始地址,应该用K×内存块的大小(如4KB)
逻辑地址->得到页号、页内偏移量->根据页号、页表查到物理页起始位置->根据页内偏移量从物理页块内得到数据
页表在内存的起始位置和长度存在于进程的PCB中,页表存在于内存中
※基本地址变换机构:重点
在地址转换的时候一定要注意:物理页号*页大小+块内地址
基本地址变换机构中一定要注意: 对是否越界判断!!!
※具有快表的地址变换机构
快表TLB命中的话:一次访存找目标数据
快表TLB不命中的话:先去内存找页表,把页表项同步到TLB,然后去内存找目标数据,共两次访存
(2)两级页表
二级页表解决:页表太大,可能超过一个页块的大小
(3)基本分段存储
分段比分页更容易实现信息的共享和保护
这个对比要注意:
(4)段页式存储管理方式
一个进程会对应一个段表,一个进程可能会对应多个页表
二、额外书本知识
1.内存保护
确保每个进程都有一个单独的内存空间
实现内存保护主要有两种方式
2.内存共享
前面介绍过基于共享内存的进程通信,由操作系统提供同步互斥工具。在后面还将介绍一种内存共享的实现方式——内存映射文件
3.覆盖和交换技术
覆盖和交换技术是多道程序环境下用来扩充内存的两种方法,实现方式可以看前面
第二遍又做错的题目!!!
只要是有分区的内存分配方式都会有内部碎片
静态重定位:当一个作业装入内存时,必须给它分配要求的全部内存空间,若没有足够的内存则无法装入。此外,作业一旦进入内存,整个运行期间就不能在内存中移动,也不能再申请内存空间。所以静态重定位不能应用于页式存储方式(页式存储方式是非连续分配地址空间的)
重点注意:
这里区分一下:
装入程序并不是进行地址转换修改的步骤,本质上链接才是
只不过:在可重定位装入的方式中,实现了链接的步骤,将逻辑地址转换为物理地址;而如果是其他装入方式,绝对装入的程序是已经完成地址转换的,动态重定向是在运行时完成链接过程,实现地址转换。
第一个可以找到,第二个缺页中断
注意:第三个会越界中断!!!
习题总结
(一)选择题
2.段页式存储管理中,地址映射表是:
每个进程一张段表,每个段一张页表
3.内存保护需要由 操作系统和硬件机构合作 完成,以保护进程空间不被非法访问。
4.存储管理方案中, 单一连续存储管理 可采用覆盖技术。
8.动态重定位是在作业的 执行过程 中进行的
装入内存的三种方式:
绝对装入:只适用于单道程序环境。
可重定位装入:也叫做动态静态重定位,在装入时对目标程序中的指令和数据地址进行修改,地址变换通常在进程装入时一次完成。
动态运行时装入:也叫做动态重定位,装入程序把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址。这种方式需要一个重定位寄存器的支持。
12.不会产生内部碎片的存储管理是:
13.多进程在主存中彼此不干扰的环境下运行,操作系统是通过 内存保护 来实现的。
不能确定,页表和段表都存储在内存中,系统提供给用户的物理地址空间的总大小减去页表或段表的长度,由于页表和段表的长度不能确定,所以提供给用户的物理地址空间大小也是不能确定的。
可重入程序:是内存共享的相关内容,看前面7(2)
这个题目一定要注意:自己容易混淆 页式管理是会出现内部碎片!!!!!
静态重定位:当一个作业装入内存时,必须给它分配要求的全部内存空间,若没有足够的内存则无法装入。此外,作业一旦进入内存,整个运行期间就不能在内存中移动,也不能再申请内存空间。
(二)简答题
这个主要问题时要注意逻辑地址的页内偏移是11位!!!!
这个题主要是看有几种操作方式
主要错误原因是粗心了,0.2KB的部分没有加到页表中,而且64MB转换为二进制转成了64×230B
这个题目做对了,值得回顾
第二遍又做错了...