操作系统概述
前言
本篇笔记中仅记录操作系统中的核心基础知识点。
文章目录
知识点说明
进程管理
在这里我们仅讨论单CPU(单线程)的情况,多线程的情况较为复杂,且其本质与单线程没有区别。
进程状态
进程状态是操作系统在进行进程管理的时候,对进程的指定的几种状态,为方便给进程分配相应资源。最初的时候进程一共分为以下三种状态:
- 运行态:所需的所有资源都已分配,并且分配了CPU;
- 等待态:除CPU资源外,其他资源也没有分配齐全;
- 就绪态:除CPU资源以外,其他资源都已经分配。
具体如下图所示:
三种进程状态的普及之后,发现了严重的不足,于是提出了“五态模型”:
- 运行:对活跃就绪的进程分配CPU资源后,则开始进入运行状态;‘
- 静止就绪:人为的从运行状态将进程挂起,使其进程不再执行;
- 活跃就绪:人为的从静止就绪状态将进程激活,是其进程继续执行;
- 静止阻塞:人为的将活跃阻塞的进程挂起。
- 活跃阻塞:除CPU资源外,其他资源也没有分配成功,则会进入活跃阻塞;
前趋图
前趋图一般和PV操作结合考查(PV操作后期补充)。前趋图的基本流程如下:
- 没有箭头连接的图例为并列关系;
- 箭头尾部的图例代表先决条件,头部指向为结果;
- 结果的出现必须是该结果的先决条件全部完成;
- 前趋图主要表达的是进程的先后以及并列关系。
进程的同步与互斥
-
互斥:资源不共享的情况下,每次只能执行一个进程,一个进程执行结束后再执行下一个(可以理解为这两个线程之间有先后的因果关系);
-
同步:资源共享的情况下,可以同时执行多个进程(理解精神, 原则上是不能同一时间执行两个线程的),可以理解为多个线程之间为并列关系。
【注】:同步情况下,进程之间会保证按照一定的顺序和速度执行。
PV操作
- 临界资源:诸进程间需要互斥方式对其进行共享的资源,如打印机、磁带机等;
- 临界区:每个进程中访问临界资源的那段代码成为临界区;
- 信号量:一种特殊的变量。
PV操作时两个原子操作的描述
- 一般来说,由V操作唤醒P操作。
- P操作小于0时阻塞;V操作小于等于0时,阻塞。
PV操作与前趋图的关系
根据前趋图中的并列关系、因果关系来判断PV操作,需要注意的是V操作唤醒P操作。
死锁问题
进程管理是操作系统的核心,但是如果设计不当,就会出现死锁的问题。如果一个进程在等待一件不可能发生的是,则进程就思索了。而如果一个或多个进程产生死锁,就会造成系统死锁。
死锁的产生有四大条件,这四个条件缺少任何一个,则不会产生死锁问题:
- 互斥:资源如果是共享状态,则不会产生死锁(有资源大家一起使用);
- 保持和等待:各个进程在资源分配不足的情况下,会保持自己的资源且等待其他进程释放资源;
- 不剥夺:系统不会吧其他进程的资源剥夺下来分配个其他进程;
- 环路等待:当等待的因果关系收尾相接(PV图新城环路),就会形成死锁问题。
死锁问题的预防一般是打破四大条件,即如下说明:
- 共享资源;
- 如果自己的资源始终分配不足,则将自己的资源分配出去;
- 系统会剥夺无法运行进程的资源分配出去,使其他进程得以运行,预防系统出现死锁问题;
避免死锁一般采用两种方式:银行家算法、有序资源分配。首先说明有序资源分配:
- 有序资源分配中,主要是按照进程的先后关系,逐个分配,保障系统中进程的合理运行;
- 该方法的资源利用率较低,效率比较慢,所以一般都采用银行家算法;
银行家算法
该算法是以银行放贷的方式来对系统中的资源进行分配,具体描述如下所示:
- 当一个进程对资源的最大需求量不超过系统中的资源数时,可以接纳该进程;
- 进程可以分期请求资源,但请求的总数不能超过最大需求量;
- 当系统现有的资源不能满足进程尚需要的资源数时,对进程的请求可以推迟分配,但总能使进程在有限的时间里得到资源。
银行家算法的具体应用在真题中有详细讲解
存储管理——段页式存储
页式存储组织
- 用户程序被分为多个页;
- 页表中记录着用户程序分的页号以及对应的具体程序位置(块号);
- 内存中对应块号位置是用户程序的实际片段。
优点:空间利用率高,碎片小,分配及管理简单
缺点:增加了系统开销;可能产生抖动现象。
- 抖动现象:指的是在没有利用高速缓存存储器的时候,内存中一般存入的是使用频率较高的页,其他使用频率较低的页放在外存中。当程序在内存中读取不到相关页的时候就需要在外存中将相关页放入内存读取,且内存中没有多余空间的时候,就需要依照页面置换算法来对页面进行一次置换,如果置换出去的页在不久后需要读取,则会继续进行置换操作,重复上述操作便是“抖动现象”。
页式存储的计算规则
- 根据页面大小来判断美业的长度;
- 根据逻辑地址来判断物理地址是多少页的哪个位置;
- 在根据页号表中查找具体块号在哪个位置(块号的叫法比较多——页帧号等);
- 如果出现访问的页面不在内存种,则需要淘汰掉一个内存中的页面(淘汰掉访问为为0的页面)。
段式存储组织
段式存储是按照逻辑结构来做存储的,段的大小并不会有严格限制(段的大小不一致)
优点:多道程序共享内存,隔断程序修改互不影响;
缺点:内存利用率低,内存碎片浪费大。
其他的计算方式与页式存储一致。
段页式存储组织
结合了段式存储和页式存储的优点;缺点是系统的执行速度下降。
快表
快表示一块小容量的相联存储器(Associative Memory),由高速缓存器组成,速度快,并且可以藏硬件上保证按内容进行查找,一般用来存放当前访问最频繁的少数活动页面的页号。
页面置换算法
页面置换算法一般包括以下四种:
- 最优算法(Optimal,OPT);
- 随机算法(RAND);
- 先进先出算法(FIFO)——容易产生抖动;
- 最近最少使用算法(LRU)——不会发生抖动。
考试过程中一般考查先进先出、最近最少使用。
最优算法
最优算法是一个理想状态下的算法——马后炮算法。在程序运行结束后,我们在按照实际运行的状态来计算出最优的顺序。一般来说,是将最优算法的结果与其他计算出的算法作比较,得出一个相对最优的算法。
随机算法
当内存中没有空位且需要页面置换时,则会随机淘汰一个页面来支持程序继续运行。
先进先出算法
参考队列的执行方式。
最近最少使用算法
按照局部性原理来分析,刚被使用的页面是不会被淘汰掉的。
考试中需要注意到的知识点
- 如果在系统中没有使用快表或者联想存储器的话,执行一次指令需要访问内存两次;
- 题干中给出页面大小数值的同时,也要观察给出图例中,指令是否占有两个页面(即:0号页存放一半,1号页存放一半),在这种情况下,指令不会产生缺页中断;如果数据和指令的存放情况一致,则数据会产生缺页中断。
以上情况说明为约定俗成,牢记即可。
文件管理
索引文件结构
具体结构如下图所示:
- 一般来说,索引节点默认有13个节点(也有可能不是13个节点,考试中会有说明);
- 索引按照多级间接索引来进行文件管理;
- 人为规定:0~9(前十个)定位直接索引,即前十个可以理解为对象的引用,直接指向堆内存中真实的对象;
- 10号索引(第十一个)延伸一级间接索引,指向一个索引盘,再由索引盘中每个位置为一个索引指向物理盘块;(可以理解为有限多例中的一种逻辑:10号索引为一个引用,指向一个引用数组,再由引用数组中的引用来指向堆内存中的真实对象);
- 三级间接索引以此类推。
文件和树型目录结构
文件的相关属性:
-
文件在操作过程中一般包含以下属性:
- R:只读文件属性;
- A:存档属性;
- S:系统文件;
- H:隐藏文件。
-
文件名组成:
- 驱动器号;
- 路径;
- 绝对路径:是从盘符开始的路径;
- 相对路径:从当前路径开始寻找的路径。
- 主文件名;
- 文件拓展名。
空闲存储空间的管理
- 空闲区表法:使用表来记录空闲文件目录,方便实用;
- 空闲链表法:将空闲区域使用链表方式来连接,需要使用的时候通过链表中取出;
- 位示图法:绘制一个表格,表格中按照地址来记录空间是否空闲(类似于电影院选座,或者飞机选座);
- 成组链接法。
设备管理
数据传输控制方式
- 程序控制方式:最为低级额一种方式,也是CPU介入最多的一种方式;CPU发出查询指令,查询是否传输完成。如果未完成则继续传输;如果传输完成就会进行下一步工作;
- 程序中断方案:外设完成工作后,会发送一个中断信息,然后CPU就会继续安排下一步工作;
- DMA方式:被称为“直接存取控制方式”。有专门的的DMA控制器,CPU在开始工作的时候做好管理,然后DMA会对工作进行管理,当工作完成后再由CPU继续处理接下来的工作;
- 通道;
- 输入输出处理机。
其中,通道和输入输出处理机为专用系统的处理方式
微内核操作系统
微内核在以下三个方面更具优势:
- 可靠性;
- 稳定性;
- 安全性。
操作系统作为核心的系统软件,如果出现问题将会影响整个系统的正常运行;如果将最为核心的部分放入内核,其他的部分抽取出来作为外设来支撑内核的运行,这样的话出现问题会大大减小系统整体构造。举例说明:
如果文件系统集成在内核中的话,文件系统出现问题,会导致系统内核整体宕机;如果文件系统作为外设与内核项链,出问题后系统可以通过重启文件系统来排除大部分故障。