操作系统OS

基于陈渝的计算机操作系统课程

内存

基本概念

操作系统内存管理的目的:

  1. 抽象:逻辑地址空间
  2. 保护:独立地址空间
  3. 共享:访问相同内存
  4. 虚拟化:更多的地址空间

物理地址空间:硬件支持的地址空间
逻辑地址空间:一个运行的程序所拥有的内存范围,对纯软件开发人员可见的地址空间

内存分配

外部碎片:在分配单元间的未使用内存
内部碎片:在分配单元中的未使用内存

连续内存分配方法

最先匹配分配

从头找,使用第一块可用空闲块

优点:简单,不浪费后面内存块
缺点:容易产生外部碎片

最优匹配分配

从头寻找和申请内存最匹配的内存块

优点:简单,避免分割大空闲块,最小化外部碎片的产生
缺点:产生了更加细小的外部碎片,重分配慢

最差适配算法

和最优适配算法相对

优点:避免太多微小碎片,若分配中等尺寸效果最好
缺点:重分配慢,容易破坏大空闲块导致大分区无法被分配

碎片管理:对已产生的碎片进行清理

压缩式:直接在内存中对程序进行重定位
交换式:将等待程序暂存到硬盘中

非连续内存分配方法

优点:更好内存利用,允许共享,支持动态加载和链接
缺点:涉及逻辑地址到物理地址的转化,是需要额外开销的(软件实现)

分段(用的比较少)

堆、栈、数据段、代码段、文件映射区

逻辑/物理地址之间的转化
  • 逻辑地址包含了段号段内偏移两个信息
  • 段表存放了逻辑地址段号和物理地址段号的映射关系
    图中base箭头和limit箭头标反了

分页

分段的段大小是可变的,分页的页帧是固定大小(4K)

帧:物理页寻址

在这里插入图片描述

页:逻辑地址寻址

在这里插入图片描述

逻辑地址到物理地址:

在这里插入图片描述

页表

页表记录着逻辑地址和物理地址之间的映射关系,这也是逻辑地址连续,物理地址可以不连续的关键。

页表由操作系统在初始化的时候建立,并将基地址保存在相应寄存器中。
在这里插入图片描述

多级页表:减少空间代价

在这里插入图片描述

反向页表/基于哈希(少数高端CPU使用)

多级页表又让访问变慢

不让页表与逻辑地址空间的大小相对应,而是让页表与物理地址空间的大小相对应。页寄存器的方案设计使得寄存器容量只与物理地址空间大小相关,和逻辑地址空间大小不相关。

以物理地址的帧号为索引,页表项内容是页号。(一直没有搞清楚知道帧号为什么不直接访问物理内存,这只是一种理想的思路,于是延伸出基于哈希查找方式)
在这里插入图片描述
感觉这是相对于之前页表的另一种建立映射关系的方式。

转换后备缓冲区(TLB):减少时间消耗

CPU中内存管理单元(MMU)中有一个叫做Translation Look-aside Buffer(TLB)的缓冲。

概念: 缓存近期访问的页帧转换表项
组成: 二元数组(p,f),p 为 Key, f 为 value。
特点: 访问速度块(如果在TLB中存在地址,不需要访问页表了),并发查找,容量代价高
在这里插入图片描述

虚拟内存技术

目的:更大的可使用的内存空间

覆盖技术(程序内):一个程序内不会同时执行,且不会相互调用的模块共享同一块内存空间
交换技术(程序间):以程序为单位将暂不运行的程序整个导出到硬盘中,运行时再导入
虚存技术: 以页为粒度,动态导入导出硬盘

局部性原理

程序的局部性原理(principle of locality) :指程序在执行过程中的一个较短时期,所执行的指
令地址和指令的操作数据地址,分别局限于一定区域。

时间局部性: 一条指令的一次执行和下次执行,一个数据的一次访问和下一次访问都集中在一个较短时期内;
空间局部性: 当前指令和邻近的几条指令,当前访问的数据和邻近的几个数据都集中在一个较小区域内。
在这里插入图片描述
外循环是行访问过程的开销小

虚存技术具体实现

在这里插入图片描述

页表项

在这里插入图片描述

  • 驻留位(存在位): 表示该页在内存还是在外存。如果该位等于"0"将导致缺页中断。

  • 保护位:表示允许对该页做何种类型的访问,如只读,可读写,可执行等,如果权限不允许,会产生异常。

  • 修改位:表明此页在内存中是否被修改(写,更新)过。用"0"和“1”表示。

  • 访问位:如果该页面被访问过(包括读操作或写操作),则设置此位为"1",用于页面置换算法。因为将页面置换出去时,要决定换出哪一页,尽量把当前不经常访问的页面置换出去。

缺页中断

如果有空闲页,就将数据从硬盘读到对应页中,并修改页表项对应参数
若无空闲页,就需要用到页面置换算法

页面置换算法

局部置换算法:

  • 最优页面置换算法:未来很长用不到的置换掉
  • 先进先出算法
  • 最近最久为使用:最近使用页会移到头部,维护链表开销大
  • 时钟页面置换算法:环形页表,用一bit表示页表最近是否有用
  • 二次机会法:时钟算法改进,尽量不置换需要写操作的页
    在这里插入图片描述

进程调度

评价指标:CPU使用率、吞吐量、周转时间、等待时间、相应时间

调度算法

  1. 先来先服务:简单,平均等待时间可能会很大
  2. 短进程优先:平均等待时间最短,容易导致饥饿
  3. 最高响应比优先: 综合考虑执行时间和等待时间
  4. 轮询:时间片内轮流执行每个进程,公平,进程间切换开销大
  5. 多级反馈队列:高优先级队列(最高优先级优先),低优先级(轮询),动态调整优先级(等待时间越长优先级越高,执行时间越多优先级越低)
  6. 公平共享
  7. 实时调度算法

IPC

(1)消息: 软件中断通知事件处理,效率高,但不能进行数据交互
(2)(匿名)管道: 血缘关系进程间通讯,有大小限制
命名管道: 不相干进行间的通讯
(3)消息队列: 多个不相干进行间的通讯,克服了管道通信的数据是无格式子节流的问题,有大小限制
(4)共享内存: 直接通讯,快速、高效,缺点是容易数据冲突(同步数据访问)
(5)socket: 对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。如果IP地址是210.37.145.1,而端口号是23,那么得到套接字就是(210.37.145.1:23)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值