目录
一、操作系统的概念
操作系统的类型:
-
- 批处理
- 分时
- 实时
- 网络操作系统
- 分布式操作系统
操作系统具有的五大功能:
-
- 处理器管理
- 存储管理
- 设备管理
- 文件管理
- 作业管理
操作系统的结构可以分为
-
- 无序结构:模块化,模块间通过接口调用
- 层次结构:分多层,层次见单向依赖
- 面向对象结构:基于面向对象思想
- 对称多处理结构:多处理机共享内存
- 微内核结构:微内核就是抽象层,将操作系统的功能抽象出来基础功能,一般用于嵌入式操作系统
现代的操作系统大多拥有两种工作状态:核心态和用户态。我们一般的应用程序工作在用户态,而内核模块和最基本的操作系统核心工作在核心态。
二、进程管理
2.1 进程状态
进程是动态概念,程序是静态概念,进程是程序的动态运行,需要各种资源如 CPU,内存等
进程由程序、数据、进程控制块( PCB)组成
三态模型
- 运行,得到资源并进行计算
- 就绪,得到资源,等待执行
- 等待,等待资源或人工干预
五态模型
- 静止就绪,就绪队列中已有就绪任务,多余的就绪任务短期不能调用,放到二级存储中
- 静止阻塞,阻塞队列中已有阻塞任务,多余的短期不能调用,放到二级存储中
- 活跃就绪,内存中没有活跃就绪状态的任务时,到静止就绪中获取
- 活跃阻塞,内存中没有活跃阻塞状态的任务时,到静止阻塞中获取运行,得到时间片,满足资源要求,在 CPU中处理状态切换的目的是协调系统资源, 由于系统资源有限因此需要通过优先级或条件进行协调资源,使系统正常运行挂起状态的进程一般被转换到二级存储中(外存) ,减少内存损耗
- 静止阻塞 -活跃阻塞:系统腾出资源空间并且优先级高的先被激活挂起的进程不参与调度必须被激活后才能调入内存中等待执行挂起的进程只能由操作系统或父进程激活
2.2 前趋图
前趋图 是一个有向无循环图,记为DAG(Directed Acyclic Graph)。用于这种图可以描述多个程序或进程之间的执行顺序关系。前趋图类似于单代号网络图。
2.3 同步与互斥
互斥:同类资源的竞争关系,千军万马独木桥
同步:进程间的写作关系
典型应用:生产者与消费者问题
2.4 PV操作
P操作和V操作是原子性的不能再拆解的操作。
V操作是释放资源的操作,P操作是申请资源的操作并阻塞。
PV操作的意义:我们用信号量及PV操作来实现进程的同步和互斥。PV操作属于进程的低级通信。
PV操作由P操作原语和V操作原语组成(原语是不可中断的过程),对信号量进行操作,具体定义如下:
P(S) |
S=S-1 |
请求分配一个单位资源 |
当S |
当S>0时,表示该进程可继续执行 |
V(S) |
S=S+1 |
释放一个单位资源 |
若S |
当S>0时,表示该进程可继续执行 |
信号量的值仅能由PV操作来改变。S表示可用资源的数量。信号量(semaphore)的数据结构为一个值和一个指针,指针指向等待该信号量的下一个进程。信号量的值与相应资源的使用情况有关。当它的值大于0时,表示当前可用资源的数量;当它的值小于0时,其绝对值表示等待使用该资源的进程个数。
2.5 死锁问题
2.5.1 死锁发生的必要条件
一个进程在等待一件不可能的事情,则进程就死锁:
- 互斥条件
- 保持与等待条件
- 不可抢占条件
- 循环等待条件
2.5.2 解决死锁的策略
- 死锁预防:破坏死锁发生条件,如一次性申请全部资源
- 死锁避免:采用银行家算法
- 死锁检测:检测是否发生死锁,发生则使用死锁接触策略处理
- 死锁解除:剥夺发生死锁的进程,强制回收
环路等待:A等B释放资源,B等C释放资源,以此类推形成一个环。
2.5.3 银行家算法
有序资源分配法 |
缺点就是低效。因为他让很多事情顺序而不是并行的在执行。 |
银行家算法 |
是并行的进行资源分配。他的做法跟去银行批贷款是一样的。银行在给你贷款时,会去判断能不能用完后把资源给我。 |
银行家算法是一个避免死锁的著名算法。我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。
为保证资金的安全,银行家规定:
(1) 当一个顾客对资金的最大需求量不超过银行家现有的资金时就可接纳该顾客;
(2) 顾客可以分期贷款,但贷款的总数不能超过最大需求量;
(3) 当银行家现有的资金不能满足顾客尚需的贷款数额时,对顾客的贷款可推迟支付,但总能使顾客在有限的时间里得到贷款;
(4) 当顾客得到所需的全部资金后,一定能在有限的时间里归还所有的资金.
2.6 微内核
微内核 是提供操作系统核心功能的内核的精简版本,它设计成在很小的内存空间内增加移植性,提供模块化设计,以使用户安装不同的接口。微内核:尽可能把内核做的小一点。
微内核系统十分适用于嵌入式的专用系统,对于通用性较广的系统,将使CPU的通信开销量变大,从而影响运行速度。
微内核技术的主要优点:统一的接口,可伸缩性好,实时性好,可移植性好,安全可靠性高,支持分布式系统,真正面向对象的操作系统。
微内核技术 |
说明 |
统一的接口 |
在用户态和核心态之间无须进程识别。 |
可伸缩性好 |
能适应硬件更新,应用变化 |
实时性好 |
微内核可以方便的支持实时处理 |
安全可靠性高 |
微内核将安全设计作为系统内部特征来进行设计,对外仅适用少量应用编程接口 |
支持分布式系统 |
支持多处理器的体系结构和高度并行的应用程序 |
真正面向对象 |
真正面向对象的操作系统。 |
可移植性好 |
所有与机器相关的代码,全部隔离在微内核中,如果要移植的话只需要改少部分代码。 |
三、存储管理
3.1 页式存储管理
将程序与内存均划分为相同到校的块,以页为单位将程序调入内存。
- 优点:使用率高,碎片小,分配及管理简单
- 缺点:增加了系统开销;可能产生抖动现象
逻辑地址:连续的地址块。而在运行当中使用到的地址叫做物理地址。
逻辑地址和物理地址中,他们的页内地址是相同的。
状态位;标记这个逻辑有没有在内存中
访问位:最近访问过标1,没访问过的标0。它对页面的淘汰是有帮助的
修改位:最近内容修改过的为1,没有修改过的为0。修改过的页淘汰出去,淘汰的代价比较高,因为要把修改的内容写回去需要IO操作。
3.2 段式存储管理
安用户作业中的自然分段来划分逻辑空间,然后调入内存,段的长度可以不一样。
- 优点:多道程序共享内存,隔断程序修改互不影响
- 缺点:内存利用率低,内存碎片浪费大
3.3 段页式存储管理
段式与页式的综合体,先分段,在分页,1个程序有若干个段,每个段中可以有若干页,每页的大小相同,但每个段的大小不同。
优点:空间浪费小,存储共享容易,存储保护容易,能动态连接
缺点:由于管理软件的增加,复杂性和开销也随之增加,需要的硬件以及占用内存也有所增加,使得执行速度大大下降
3.4 快表
快表:把页表存放在Cache中。与之相对慢表是指把页表存放在内存中。
3.5 页面置换算法
时间局部性:刚被访问的内容,立即又被访问
空间局部性:刚被访问的内容,临近空间很快被访问
地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断。当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。
最优算法(OPT) |
从主存中移出永远不再需要的页面;理想型,不现实 |
随机算法 |
佛系管理 |
先进先出置换算法(FIFO) |
是最简单的页面置换算法。可能会产生抖动。这种算法的基本思想是:当需要淘汰一个页面时,总是选择驻留主存时间最长的页面进行淘汰,即先进入主存的页面先淘汰。 |
最近最久未使用(LRU) |
利用局部性原理,根据一个作业在执行过程中过去的页面访问历史来推测未来的行为。不会抖动。它认为过去一段时间里不曾被访问过的页面,在最近的将来可能也不会再被访问。 |
LFU置换算法 |
使用频率少的被淘汰 |
缺页中断:当访问的是适合,访问的内容不在内存。
四、文件管理
4.1 索引文件结构
直接索引效率最高,但存得少,而间接索引存得多,效率低。这就是效率和容量平衡的产物。
4.2 文件和树型目录结构
4.3 空闲存储空间管理
位示图是利用二进制的一位来表示磁盘中的一个盘块的使用情况。当其值为“0”时,表示对应的盘块空闲;为“1”时,表示已经分配。有的系统把"0"作为盘块已分配的标记,把“1”作为空闲标志。(它们的本质上是相同的,都是用一位的两种状态标志空闲和已分配两种情况。)磁盘上的所有盘块都有一个二进制位与之对应,这样,由所有盘块所对应的位构成一个集合,称为位示图。位示图是一种非常常用的结构,在索引,数据压缩等方面有广泛应用。
五、设备管理
5.1 数据传输控制方式
操作系统中负责管理输入输出设备的部分称为i/o系统,完成设备管理功能,包括外设编址,数据通路的建立,向主机提供外设的状态信息等。I/O系统的组成有:IO设备,设备控制器及IO操作有关的软硬件。处理机和I/O设备性能的不断提高,专用的、独立I/O通道处理机已不容易见到。
程序控制方式 |
分为无条件传送和程序查询方式两种。方法简单,硬件开销小,但IO能力不高,严重影响CPU的利用率。 |
程序中断方式 |
与程序控制方式相比,中断方式因为CPU无需等待而提高了传输请求的响应速度。 |
DMA方式 |
为了在主存和外设之间实现高速,批量数据交换而设置的。DMA方式比程序控制方式与中断方式都高效。直接内存存取 |
通道方式 |
通道(Channel)也称为外围设备处理器,相对于CPU而言的。是一个处理器。也能执行指令和由指令的程序,只不过通道执行的指令是与外部设备相关的指令。 |
IO处理机 |
ー |
5.2 SPOOLing技术
SPOOLing是 外部设备联机并行操作的缩写,它是关于慢速字符设备如何与计算机主机交换信息的一种技术,通常称为"假脱机技术"。SPOOLing技术将一台独享打印机改造为可供多个用户共享的打印机,是应用SPOOLing技术的典型实例。
系统对于用户的打印输出,但并不真正把打印机分配给该用户进程,而是先在输出井中申请一个空闲盘块区,并将要打印的数据送入其中;然后为用户申请并填写请求打印表,将该表挂到请求打印队列上。若打印机空闲,输出程序从请求打印队首取表,将要打印的数据从输出井传送到内存缓冲区,再进行打印,直到打印队列为空。
Spooling技术先放入到磁盘缓冲区,再放入到设备区,它是在磁盘上开辟响应的区域,所以缓冲区是外存。
六、微内核操作系统
七、嵌入式操作系统
特点:微型化,代码质量高,专业化,实时性强,可裁剪,可配置。
实时嵌入式操作系统的内核服务有:异常和中断,计时器,I/O管理。
常见的嵌入式RTOS:VxWorks,RT-Linux,QNX,pSOS。