3.01 操作系统概述
接口的区分:
- 人机之间的接口:命令,窗口
- 应用软件与硬件之间的接口:api的接口
进程管理
3.02 进程管理——进程状态转换图
进程的状态:操作系统当中对进程进行管理的时候,为进程指定了几种状态,以便于给进程分配相应的资源,把它管理起来。
最初的进程状态(三种)
最初的状态分类:
- 运行:指这个进程需要的所有资源都已经配足了,并且给他了cpu资源
- 就绪:指这个进程除了cpu资源,其他需要的所有资源都已经配足了
- 等待:指这个进程除了cpu资源,还缺其他需要的所有资源
各个状态之间的转换关系:
- 运行—(等待某个事件)—>等待:当进程缺少某一个资源的时候就会进入到等待
- 但是当进行补充好相应资源后不能直接去运行,需要去排队等待cpu资源的调用
- 等待—(等待事件发生)—>就绪:当补充好相应资源后就进入到就绪状态
- 就绪—(调度)—>运行:当资源配足的进程排到cpu进程时
- 运行—(时间片到)—>就绪:一个进程从就绪到运行只能执行一个时间片,当时间片到了就返回就绪状态继续排队。
注:三种状态成熟后发现并不能满足所有的情况(比如人为暂停),所以提出来五态模型
升级的进程状态(五种)
状态分类中:运行(运行),活跃阻塞(等待),活跃就绪(就绪)两两对应,一个意思
与三态的不同点:
- 多了一个静止就绪和静止阻塞
- 挂起:就和有人给你打电话,你放下手中的工作
- 恢复或激活:电话打完了,再开始手中的工作
3.03 进程管理——前趋图【考点】
考题考点:前趋图一般和PV操作结合考察
前趋图:用来表达要完成的一系列活动,它的先后的约束关系。
- 想表达的内容:这样就可以看出那些任务可以并行,那些任务有先后关系
- 比如:包饺子可以绞肉,切菜,搅拌,包饺子顺序执行,但是绞肉和切菜可以同时进行,但是搅拌要受前两部的约束,同理包饺子要受到搅拌的约束。
3.04 进程管理——进程的同步与互斥
学习目的:同步与互斥是进行PV操作一些分析的前提
互斥:
- 概念:在同一时刻,只允许某一个进程去使用这个资源【同一个资源不能同时服务于多个进程】
- 如果一个资源能同时服务于多个进程称为:共享
同步:
- 概念:有速度匹配要求,当差距拉的比较大的时候,要求速度快的停下来等待速度慢的。
- 官方:
- 同步:是指一个进程在执行某个请求的时候,若这个请求没有执行完成,
那么这个进程将会一直等待下去,直到这个请求执行完毕,才会继
续执行下面的请求。 - 异步:是指一个进程在执行某个请求的时候,如果这个请求没有执行完毕,进程不会等待,而是继续执行下面的请求。
讨论PV进程操作问题:生产者和消费者中关于同步,互斥问题
单缓冲区情况:
- 互斥:生产者和消费者每次只能一位去市场操作
- 同步:生产者在市场放入一个商品就不能再放入商品,直到消费者消费掉之后生产者才可以继续在市场里放东西
3.05 进程管理——PV操作
考察:难度大
一些概念:
- 临界资源:独木桥
- 临界区:是一个代码段【进程中访问临界资源的呢段代码】
- 信号量:应用于PV操作的一种专属变量
- 如:P(S)中的呢个S,就是信号量
PV操作:
- 是两大原子操作的一个组合,分为P操作和V操作。
- P(S):加锁的过程
- 申请锁定资源操作:信号量
-1
,做判断
- V(S):解锁的过程
- 申请解锁资源操作:信号量
+1
,做判断
从例题体会PV操作的作用
- 当不引入PV操作的时候,先执行生产者就会造成溢出的风险,同理先执行消费者也会出错。
引入PV操作之后:
首先执行生产者情况和循环执行生产者情况【不行,会进入进程队列】
- 满足P,V操作判断语句的时候会进入进程队列,否则会继续执行
首先执行消费者情况
- 满足P,V操作判断语句的时候会进入进程队列,否则会继续执行
总结
- PV操作其实是
并发
进程之间某些约束关系之间问题的解决。
3.06 进程管理——PV操作练习题
- 先从收银员进程入手
- 解题时可以先假设没有这些操作,会面临什么样的问题,从而找出
约束关系
3.07 进程管理——PV操作与前趋图【重点考点】
将一个前趋图转为PV操作的形式,都转成相应的进程,让这些进程在并发执行的时候依然按前趋图约束的先后顺序去执行。
- 进程D开头要有,进程A,B,C的加锁过程P【都解锁之后才能进行下面的操作】
- 每一个进程A,B,C都有一个解锁过程V
例题讲解【2021上】
例题演示
解题步骤:
- 先在
前趋图中标出信号量S
,遵循从左到右,从上到下。 - 则可以通过前趋图箭头指向写出P与V的分布【如p1箭尾是V(s1),p2箭尾是V(s2),p3箭头是P(s1)和P(s2);箭尾是V(s3)和V(s4)】
- 箭头为P操作,箭尾为V操作
- 将所有的操作具体写到(p1-p5示意图)中,问题就解决了
3.08 进程管理——死锁问题
考察考点:
- 计算不会死锁的情况
- 死锁预防与避免问题
- 会涉及到
银行家算法
概念:
- 死锁:指系统当中有一系列的资源,有一系列需要用到这些资源的进程,这些进程需要系统给分配资源才能进行。如果系统在某一时刻发现所有可用的资源都已经分配出去了,而所有的进程都没有办法完成它本身的职责和任务,从而没办法释放占用的资源。
具体例题:
- 求最少多少个资源不会发生死锁的情况:
- 先给每个进程分配它所需的总数-1个资源
- 然后有几个进程就乘几个
- 最后+1之后就是:最少多少个资源不会发生死锁的情
3.09 进程管理——银行家算法
本节讲:死锁的预防和避免
死锁的预防【了解】
发生死锁的四种情况:
- 互斥
- 环路等待
- 不剥夺
- 保持和等待
死锁的预防:打破会发生死锁的四种情况
死锁避免的解决方案【掌握】
两种解决方案:
- 有序资源分配法【效率低】
- 银行家算法【常用,也是考点】
银行家算法
思想:以银行房贷的思路,来做资源分配。
具体实例
- 选B
- 考试就从A选项进行模拟,看能否走通,如果走不通就进行B选项的模拟。
存储管理
3.10 存储管理——分区存储组织
本章从软件的层次,来考虑存储机制
- 分配前的空白区域是因为:前面作业做完了内存资源返回造成的
- 此时再分配作业4的时候,会有多种动态分配的方式
几种内存资源分配方式:【了解思想】
- 首次适应法:顺次找下来,找到第一个符合的空间
- 最佳适应法:将空闲区块按照
从小到大顺序
,练成一个链
- 在分配的时候先用作业4的大小和
小
的空闲区块做比较,如果小于该空闲区块就将作业4分配到这里 - 缺陷:系统运行一段时间,空闲碎块会非常多
- 最差适应法:将空闲区块按照
从小到大顺序
,练成一个链
- 在分配的时候先用作业4的大小和
大
的空闲区块做比较,如果小于该空闲区块就将作业4分配到这里,切出来一个9k的内存出来
- 循环首次适应算法:将空闲的区域按顺序连成一个环,每次按顺序比较,分配完再对下一个空白区块进行比较,以此类推。
- 优点:分配均匀,不会老是分配同一个块
3.11 存储管理——页式存储、段式存储、段页式存储
考点掌握:
- 页式存储当中的逻辑地址和物理地址之间的转化
- 页式存储、段式存储、段页式存储它们基本的特点,以及运作的方式
页式存储【掌握】
- 页式存储有了页表的中间件,而不是直接在用户程序和内存之间转换,从而增加了系统开销。
- 物理块号又称页帧号
如何通过逻辑地址来求物理地址呢?
- 先知道逻辑地址当中那些是页号,那些是页内地址
- 页内地址直接就对应,物理地址中的页内地址
- 再通过页号去查找相应的块号
- 将查到的块号和页内地址组合起来就是物理地址了
习题讲解
例题讲解【2021上】
段式存储
- 按逻辑结构来划分的
- 段的大小不要求一致【页式存储不允许】
- 段号包括:段长和基址
优点:
- 便于共享
缺点:
- 内存利用率低
段页式存储
- 先分段,再分页
优缺点折中:
- 优点:空间小,存储共享容易
- 缺点:复杂性和开销增加,执行速度下降
快表与慢表
快表
- 页式,段式,段页式存储放到Cache【高速缓存器】当中称为快表
慢表
- 页式,段式,段页式存储放到内存当中称为慢表
3.12 存储管理——【页面置换算法】页面淘汰算法
- 应用到:分层存储体系当中
由来:内存体系面临的问题,比如页式存储有100个页,但是内存有限只有3个页,这时候就不可避免的要淘汰不用的页和将用的页存调入进去,这就需要用的一些淘汰算法【共有四种】
- 考点:先进先出,最近最少使用
- 抖动:我分配给你更多资源,想要更好的结果,但是给你更多资源反而结果并不好【如下图就出现了抖动现象】
- 第一行黄色,要访问的页面序列
- 第一列黄色,内存上的三个页面
- 当内存里没有相应页面序列就调入到内存当中
- 内存里没有就称为缺页
例题讲解淘汰机制
- FIFO淘汰机制:先进入内存的先淘汰【只考虑谁先进来】
- 本题3的页面序列位置,对于FIFO来说内存空间为【0,1,2】先进来的是0,则淘汰0
- LRU淘汰机制:最近最少使用的先淘汰【考虑访问的情况,最近被访问到了就不会被淘汰】
- 本题3的页面序列位置,对于LRU视角来说内存空间为【1,2,0】,0刚刚被访问,1最久没被访问,则淘汰1
3.13 存储管理——页面淘汰算法练习题
第一问内存访问次数解题思路:
-
没有使用快表
说明每读一次程序的块,先在内存上查一下表,查一下表之后才能够读取相应的内存块 - 所以每一个内存块要进行2次的访问
- 题目中说明有6个页面块,则需要访问12次内存
第二问缺页中断次数解题思路:
- 这里有个约定俗成:
- 默认指令无论占几个块,都会一次性调入。
- 本题占了两个块,所以缺页中断一次
- 但是操作数是占几个块,就会调入几次
- 本题也是占了两个块,缺页中断两次
- 本题一个指令,两个操作数都占用2个块,根据上面约定俗成的规则得出结果1+2+2=5
- 占用2个块的原因:指令从内存的1023单元开始存储(1单元=1字节),题中给出页面大小为1kb(1kb=1024字节),在8位计算机系统中存16位的指令(1字节=8位,则只存了一半,另一半存到了下一块当中),则该指令一半存到了0页号中,一半存到了1页号中
3.14 文件管理——索引文件结构
文件的一种扩展机制
索引文件结构:直接索引,一级,二级,三级间接索引
- 一般是以13个结点的结构,对应的是地址,连接的是物理盘块(用来存内容)
- 在10这个结点位置链接的物理盘块不在存文件内容,而是存的地址
- 间接索引级别越高,访问效率越低
实例演示
3.15 文件管理——文件和树型目录结构
考察:相对路径,绝对路径,全文件名的概念
- 根目录一般是盘符,而Linux和unix是用/来做根文件
- 可以在不同的文件下面,存在相同的文件名【同级目录不行】
- 绝对路径:是从盘符开始的路径
- 相对路径:是从当前目录开始的路径
- 全文件名:绝对路径+文件名(包括格式扩展名)
- 注:上面打开访问磁盘的次数都只要一次,通过命令打开,并不是一层一层的进入【相对路径先进入,才进行的打开命令】
例题讲解【2017年上,67】
例题讲解
- 第一空选:C
- 第二空选:B
3.16 文件管理——空闲存储空间的管理【位示图】
掌握:位示图法的计算问题
空闲存储空间的管理:
- 指的是磁盘上有大量的空间,需要把空闲的空间管理起来,以便在某个文件要申请空间的时候,能有依据的分配空间。
- 有很多的方法,我们重点掌握
位示图法
- 空闲区表法:用一个表来记录那些是空闲的
- 空闲链表法:把空闲区域都链起来,形成一个链表
- 位示图法:
- 成组链接法:分组也分链的方式
位示图法
- 画一个位示图【把整个存储空间分成了很多个物理块】,其中
1
表示已经被占用,0
表示空闲
试题讲解
- 由题知,一个字是32位
- 注:字的概念
- 4195号物理块,其实有4196个物理块(0开始)
- 字是从1开始算
- 位置是从0开始算
例题讲解【2021上】
3.17 设备管理——数据传输控制方式
掌握:前三种方式
数据传输控制方式:
- 指的是
内存
和外设
之间的数据的传输控制问题
几种程序控制方式的介绍:
程序控制方式:
- 程序控制方式也称为
程序查询方式
- 最低级,也是cpu介入最多的方式,与外设的完成查询形成时间差
程序中断方式:
- 机制一样,但是主动性变强了,加入了一些中断方式
- 外设完成了程序的数据的一些传输,就会发出一个中断,系统就会做下一步的处理
DMA方式:
- 也称为
直接存取控制方式
- 会有专门的DMA控制器,只要是外设和内存的数据交换,过程中就会由控制器来管控,CPU只要在开头的时候做一些记录,之后都有DMA来管控,做完之后再由CPU接管
例题讲解【2021上】
例题讲解【2012上】
考点:异常,中断
- 异常:是
指令
执行过程中在处理器内部发生的特殊事件 - 中断:是来自处理器外部的请求事件
例题演示:2017下
3.18 设备管理——虚设备与SPOOLING技术
考察:了解基本原则即可
SPOOLING技术:核心就是开辟了缓冲区,将输出和输入的数据先缓冲起来
- 比如打印a,b,打印a的时候就把b缓冲起来了,打印完a就会自动开始b,这样打印者等着拿打印的文件即可。
3.19 微内核操作系统
掌握:用户态和核心态都有那些