操作系统学习笔记(3.内存管理 4.文件管理)

第三章 内存管理

内存的基础知识

在这里插入图片描述
什么是内存,有何作用
在这里插入图片描述
几个常用的数量单位
在这里插入图片描述
指令工作原理
在这里插入图片描述
在这里插入图片描述
装入的三种方式–绝对装入

  • 灵活性最差,换台电脑可能就不行了

在这里插入图片描述
装入的三种方式–可重定位装入

  • 运行期间不能再移动程序,也不能再申请空间

在这里插入图片描述
装入的三种方式–动态运行时装入
在这里插入图片描述
在这里插入图片描述
从写程序到程序运行

  • 链接的定义

在这里插入图片描述
链接的三种方式
在这里插入图片描述
知识点小结

  • 这里讨论的关于逻辑地址和物理地址,指的是,指令中包含操作码和操作参数,操作参数里的地址问题,不是指令本身的地址
  • 三种装入方式和三种链接方式,别搞混了;
    • 装入方式是关于逻辑地址转成物理地址的
    • 链接方式是将编译后的若干个目标模块和所需库函数链接在一起

在这里插入图片描述

内存管理的概念

操作系统如何对内存进行管理
在这里插入图片描述
内存空间的分配与回收

  • 知识点比较多,后面再详细探讨

在这里插入图片描述
内存空间的扩展

  • 虚拟技术,把物理上很小的空间扩展为逻辑上很大的空间

在这里插入图片描述
地址转换

  • 逻辑地址转为物理地址,即三种装入方式

在这里插入图片描述
内存保护

  • 让各个进程只能访问自己的内存空间
  • 两个方案

在这里插入图片描述
知识点小结
在这里插入图片描述

覆盖与交换

在这里插入图片描述
覆盖技术
在这里插入图片描述
覆盖技术举例

  • 这里举例的前提是,程序是依次调入执行的
  • 缺点:对用户不透明,增加编程负担

在这里插入图片描述
交换技术

  • 第二章讲的处理机的中级调度就是实现交换技术
  • 注意:换出到外存的是进程运行的相关程序和数据,但是进程的PCB仍然保留在内存,便于把进程换入内存

在这里插入图片描述
思考问题

  • 磁盘存储空间:对换区,文件区
  • 对换区追求换入换出速度,I/O速度比文件区更快
  • 文件区追求存储空间利用率,采用离散分配方式管理空间
  • 换出的数据主要放在对换区

在这里插入图片描述
知识点小结

  • 主要出选择题

在这里插入图片描述

连续分配管理方式

在这里插入图片描述
单一连续分配

  • 内存中只能有一道用户程序,独占,不可以多道用户程序
  • 不一定采取内存保护,因为只有一道用户程序
  • 无外部碎片,有内部碎片

在这里插入图片描述
固定分区分配

  • 将用户空间划分为若干个固定大小的分区,每个分区装入一道作业
  • 分区大小相等,分区大小不等

在这里插入图片描述
分区说明表

  • 操作系统用来记录各个分区的情况,是一个数据结构(链表或数组)
  • 无外部碎片,有内部碎片

在这里插入图片描述
动态分区分配

  • 进程装入内存时,才会根据进程大小动态的建立分区,因此分区大小和数目是可变的
  • 思考问题

在这里插入图片描述
动态分区分配–用什么数据结构记录分配情况

  • 空闲分区表,空闲分区链

在这里插入图片描述
动态分区分配–如何选择分区

  • 采用动态分区分配算法,下一节再展开

在这里插入图片描述
动态分区分配–如何进行分区的分配与回收

  • 分配:分完了,还有剩余空间,则修改分区表;没有剩余了,则去掉这个空间分区记录

在这里插入图片描述
动态分区分配–如何进行分区的分配与回收

  • 回收:回收区有相邻的空闲分区,则进行合并,修改表记录;没有相邻空闲分区,增加一个表记录
  • 各个表项的排序规则需要看具体的动态分区分配算法来确定

在这里插入图片描述
外部碎片,内部碎片

  • 某一进程需要一块大的连续内存空间,但这些外部碎片不满足需求,但这些外部碎片的总和满足
  • 采用紧凑技术解决外部碎片
  • 紧凑技术正好适合搭配装入技术中的动态重定位技术,因为程序可能会更换在内存中的位置
  • 紧凑之后需要修改各个进程的起始地址,进程起始地址保存在PCB中,

在这里插入图片描述
知识点小结

  • 外部碎片,内部碎片经常出选择题
  • 紧凑技术也出过选择题,回收内存分区的四种情况也出过真题

在这里插入图片描述

动态分区分配算法

在这里插入图片描述
首次适应算法

  • 空闲分区地址按照递增的顺序排列,保存在空闲分区表或空闲分区链
  • 分配或者回收空闲分区后,在修改对应的表或链

在这里插入图片描述
最佳适应算法

  • 空闲分区按照容量递增的顺序链接,每次分配内存时按照顺序查找空闲分区链或表
  • 如果分配会或回收空闲分区之后,还要修改表项或者链中记录,如果不在满足容量大小递增的顺序了,还要调整空间分区表或链的排列顺序,重新回到容量递增顺序
  • 缺点:会产生很多的外部碎片

在这里插入图片描述
最坏适应算法

  • 优先使用最大的连续空闲区
  • 空闲分区按照容量递减的顺序链接
  • 解决了最佳算法的隋品太多
  • 缺点:消耗了很多大的空闲分区,再有大进程来,就没有内存分区可用了,

在这里插入图片描述
临近适应算法

  • 每次从上一次查找结束的位置,开始检索
  • 可以将空闲分区地址排成一个循环链表,按照地址递增的顺序
  • 无需对链表进行重新排列,因为是按地址递增排列的,算法开销比较小;比最佳和最坏的算法开销小
  • 首次适应算法也有问题,每次都要从头查找,而临近算法不用从头查
  • 临近适应算法也导致了高地址部分的大分区更可能被使用,并划分为小分区,导致最后无大分区可用,
  • 四种算法,首次适应算法效果最好

在这里插入图片描述
知识点小结

  • 很容易出题
  • 理解算法思想,各个算法的优缺点;开销大是因为可能要排序
  • 邻近适应算法略难理解,再细品一下

在这里插入图片描述

基本分页存储管理的概念

本节是高频考点,也是难点

针对的是非连续分配管理方式
在这里插入图片描述
分页存储

  • 内存空间分成一个个大小相等的页框/页帧/内存块/物理块/物理页面
  • 一个进程的逻辑地址也分成页/页面,页的大小与内存块是一样的
  • 操作系统将进程的一个个页存放在内存的一个个内存块中,因此进程的页面与内存的内存块有一一对应关系
  • 进程的页可以不用连续存放到内存中
  • 注意区分概念:
    • 进程的逻辑地址划分:页,页面
    • 内存的物理地址划分:页框,页帧,内存块,物理块,物理页面

在这里插入图片描述
重要的数据结构–页表

  • 用于将逻辑地址的页与物理地址的内存块进行一一对应
  • 页表通常存放在PCB中

在这里插入图片描述
每个页表项占多少字节(先看块号)

  • 例题中,块号至少有20位,我们的计算机一般以字节为单位,因此就是至少3字节,24位
  • 重要考点,经常让我们通过内存块数量求出块号至少占多少字节

在这里插入图片描述
页号占多少字节

  • 类比数组,页表项是连续存放的,块号是固定的位数
  • 因此页号是隐含的,只需知道页表项的起始地址即可推算任意页号的存放地址

在这里插入图片描述
因此每个页表项的字节数就是块号的字节数
在这里插入图片描述
如何实现地址转换(复习连续存放时)

  • 逻辑地址+偏移量

在这里插入图片描述
如何实现地址转换(分页存放)

  • 进程的各个页面时离散存放的,但页面内部是连续存放的

在这里插入图片描述
举例
在这里插入图片描述
页面大小最好是2的整数次幂

  • 逻辑地址刚好可以划分为两部分,页号+页内偏移量
  • 页面大小=内存块大小
  • 物理地址也可以划分两部分,块号+块内偏移量(页内偏移量)
  • 如果页面大小是2的整数次幂,可以这样快速算出,也能提高计算机效率;如果不满足2的整数次幂,只能用土办法

在这里插入图片描述
在这里插入图片描述
为什么页面大小取2的整数次幂
在这里插入图片描述
逻辑地址结构
在这里插入图片描述
知识点小结
在这里插入图片描述

基地址变换机构

在这里插入图片描述
基本地址变换机构

  • 程序未执行时,页表起始地址和页表长度放在PCB中
  • 进程被调度时,操作系统内核将他们存放到页表寄存器中PTR

在这里插入图片描述
基地址变换过程

  • 进程切换时,内核程序PCB中取出必要信息,恢复进程数据,
  • 比如把页表起始地址和页表长度放到PTR中,把下一条指令的逻辑地址放到程序计数器PC中
  • 因此我们要把下一条指令的逻辑地址转为实际的物理地址
  • 考试经常出题,给出逻辑地址,页表,计算求物理地址

在这里插入图片描述
在这里插入图片描述
例题

  • 理解也是管理中地址是一维的
  • 初学者经常忘记对页号的越界检查

在这里插入图片描述
对页表项大小的进一步探讨

  • 页表项也存放在内存中,也要面对内存块大小的影响
  • 本例中,开始用三个字节编址内存块号,因此一个页表项占三字节,因此页表项在一个内存块中存放最后会有剩余碎片的
  • 这不利于页表项的查询,因此用四个字节编址内存块号,即一个页表项占四字节,刚好在内存块中可以存满(考试一般不考,了解即可)
  • 做题时,我们依然按三字节这个思路求解,四字节的思路是实际应用的思路
  • 进程的页表也是装在连续的内存块中的

在这里插入图片描述

知识点小结

  • 本节十分重要,经常作为大题,小题考察
  • 地址变换过程最重要,掌握过程,熟练手算过程
  • 本节中介绍的基本地址变换方式一共访问了两次内存

在这里插入图片描述

具有快表的地址变换机构

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值