【系统分析师之路】第二章 操作系统
本章的重点有:操作系统的概念,前驱图与PV操作,微内核,文件系统,页面置换算法,索引文件,示位图。而进程管理和存储挂历是操作系统中两个最常见的考点。
- 操作系统的概念
操作系统的类型:批处理,分时,实时,网络操作系统和分布式操作系统。
操作系统具有的五大功能:处理器管理,存储管理,设备管理,文件管理和作业管理。不管任何类型的操作系统都有这样的分配。
现代的操作系统大多拥有两种工作状态:核心态和用户态。我们一般的应用程序工作在用户态,而内核模块和最基本的操作系统核心工作在核心态。
操作系统的结构可以分为无序结构,层次结构,面向对象结构,对称多处理结构和微内核结构。
- 进程的状态
就绪态:各类资源充足,只是缺CPU时间片
阻塞态:缺资源。
五态图多了静止阻塞,静止就绪两个状态。对应相应的人为挂起的情况。
如何区分同步与互斥?
互斥 | 千军万马过独木桥,同类资源的竞争关系 |
同步 | 速度有差异,在一定情况停下等待,进程之间的协作关系。 |
- 微内核
微内核(Micro kernel)是提供操作系统核心功能的内核的精简版本,它设计成在很小的内存空间内增加移植性,提供模块化设计,以使用户安装不同的接口。微内核:尽可能把内核做的小一点。
微内核结构由一个非常简单的硬件抽象层和一组比较关键的原语或系统调用组成。这些原语仅仅包括了建立一个系统所需的几个部分。微内核的目标是将系统服务的实现和系统的基本操作规则分离开来。一个服务组件的失效并不会导致整个系统的崩溃,内核需要做的,仅仅是重新启动这个组件,而不必影响其他的部分。
微内核系统十分适用于嵌入式的专用系统,对于通用性较广的系统,将使CPU的通信开销量变大,从而影响运行速度。
微内核技术的主要优点:统一的接口,可伸缩性好,实时性好,可移植性好,安全可靠性高,支持分布式系统,真正面向对象的操作系统。
微内核技术 | 说明 |
统一的接口 | 在用户态和核心态之间无须进程识别。 |
可伸缩性好 | 能适应硬件更新,应用变化 |
实时性好 | 微内核可以方便的支持实时处理 |
安全可靠性高 | 微内核将安全设计作为系统内部特征来进行设计,对外仅适用少量应用编程接口 |
支持分布式系统 | 支持多处理器的体系结构和高度并行的应用程序 |
真正面向对象 | 真正面向对象的操作系统。 |
可移植性好 | 所有与机器相关的代码,全部隔离在微内核中,如果要移植的话只需要改少部分代码。 |
- PV操作
P操作和V操作是原子性的不能再拆解的操作。V操作是释放资源的操作,P操作是申请资源的操作。P操作负责获得资源并阻塞。
之所以用到PV操作是因为在售票系统中,多个售票网点都是可以出票的。
PV操作的意义:我们用信号量及PV操作来实现进程的同步和互斥。PV操作属于进程的低级通信。
PV操作由P操作原语和V操作原语组成(原语是不可中断的过程),对信号量进行操作,具体定义如下:
P(S) | S=S-1 | 请求分配一个单位资源 | 当S<0时,表示已经没有可用资源。 | 当S>0时,表示该进程可继续执行 |
V(S) | S=S+1 | 释放一个单位资源 | 若S<=0,表示有某些进程正在等待该资源 | 当S>0时,表示该进程可继续执行 |
信号量的值仅能由PV操作来改变。S表示可用资源的数量。信号量(semaphore)的数据结构为一个值和一个指针,指针指向等待该信号量的下一个进程。信号量的值与相应资源的使用情况有关。当它的值大于0时,表示当前可用资源的数量;当它的值小于0时,其绝对值表示等待使用该资源的进程个数。
利用信号量和PV操作实现进程互斥的一般模型是:
进程P1 进程P2 …… 进程Pn
…… …… ……
P(S); P(S); P(S);
临界区; 临界区; 临界区;
V(S); V(S); V(S);
…… …… …… ……
其中信号量S用于互斥,初值为1。
利用信号量和PV操作实现进程同步:
PV操作是典型的同步机制之一。用一个信号量与一个消息联系起来,当信号量的值为0时,表示期望的消息尚未产生;当信号量的值非0时,表示期望的消息已经存在。用PV操作实现进程同步时,调用P操作测试消息是否到达,调用V操作发送消息。
生产者:生产一个产品,送产品到缓冲区。消费者:从缓冲区取产品,消费产品。
- 死锁问题
环路等待:A等B释放资源,B等C释放资源,以此类推形成一个环。
- 银行家算法
有序资源分配法 | 缺点就是低效。因为他让很多事情顺序而不是并行的在执行。 |
银行家算法 | 是并行的进行资源分配。他的做法跟去银行批贷款是一样的。银行在给你贷款时,会去判断能不能用完后把资源给我。 |
银行家算法(Banker's Algorithm)是一个避免死锁(Deadlock)的著名算法
在银行中,客户申请贷款的数量是有限的,每个客户在第一次申请贷款时要声明完成该项目所需的最大资金量,在满足所有贷款要求时,客户应及时归还。银行家在客户申请的贷款数量不超过自己拥有的最大值时,都应尽量满足客户的需要。在这样的描述中,银行家就好比操作系统,资金就是资源,客户就相当于要申请资源的进程。
我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。
为保证资金的安全,银行家规定:
(1) 当一个顾客对资金的最大需求量不超过银行家现有的资金时就可接纳该顾客;
(2) 顾客可以分期贷款,但贷款的总数不能超过最大需求量;
(3) 当银行家现有的资金不能满足顾客尚需的贷款数额时,对顾客的贷款可推迟支付,但总能使顾客在有限的时间里得到贷款;
(4) 当顾客得到所需的全部资金后,一定能在有限的时间里归还所有的资金.
- 前趋图(Precedence Graph)
前趋图(Precedence Graph)是一个有向无循环图,记为DAG(Directed Acyclic Graph)。用于这种图可以描述多个程序或进程之间的执行顺序关系。前趋图类似于单代号网络图。
- SPOOLing技术
SPOOLing是Simultaneous Peripheral Operation On-Line (即外部设备联机并行操作)的缩写,它是关于慢速字符设备如何与计算机主机交换信息的一种技术,通常称为"假脱机技术"。SPOOLing技术将一台独享打印机改造为可供多个用户共享的打印机,是应用SPOOLing技术的典型实例。
系统对于用户的打印输出,但并不真正把打印机分配给该用户进程,而是先在输出井中申请一个空闲盘块区,并将要打印的数据送入其中;然后为用户申请并填写请求打印表,将该表挂到请求打印队列上。若打印机空闲,输出程序从请求打印队首取表,将要打印的数据从输出井传送到内存缓冲区,再进行打印,直到打印队列为空。
Spooling技术先放入到磁盘缓冲区,再放入到设备区,它是在磁盘上开辟响应的区域,所以缓冲区是外存。
- 位示图
位示图是利用二进制的一位来表示磁盘中的一个盘块的使用情况。当其值为“0”时,表示对应的盘块空闲;为“1”时,表示已经分配。有的系统把"0"作为盘块已分配的标记,把“1”作为空闲标志。(它们的本质上是相同的,都是用一位的两种状态标志空闲和已分配两种情况。)磁盘上的所有盘块都有一个二进制位与之对应,这样,由所有盘块所对应的位构成一个集合,称为位示图。位示图是一种非常常用的结构,在索引,数据压缩等方面有广泛应用。
- 页面置换算法
快表:把页表存放在Cache中。与之相对慢表是指把页表存放在内存中。
地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断。当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。
最佳置换算法(OPT) | 从主存中移出永远不再需要的页面;如无这样的页面存在,则选择最长时间不需要访问的页面。于所选择的被淘汰页面将是以后永不使用的,或者是在最长时间内不再被访问的页面,这样可以保证获得最低的缺页率。 |
先进先出置换算法(FIFO) | 是最简单的页面置换算法。这种算法的基本思想是:当需要淘汰一个页面时,总是选择驻留主存时间最长的页面进行淘汰,即先进入主存的页面先淘汰。 |
最近最久未使用(LRU) | 利用局部性原理,根据一个作业在执行过程中过去的页面访问历史来推测未来的行为。它认为过去一段时间里不曾被访问过的页面,在最近的将来可能也不会再被访问。 |
时钟(CLOCK)置换算法 | 简单的CLOCK算法是给每一帧关联一个附加位,称为使用位。当某一页首次装入主存时,该帧的使用位设置为1;当该页随后再被访问到时,它的使用位也被置为1。 |
- 段页式存储管理
段页式存储管理方式即先将用户程序分成若干个段,再把每个段分成若干个页,并为每一个段赋予一个段名。(先分段再分页)
页式存储相当于集装箱一样,每个页面都是一样的大小。段式则不同,它大的大小的小。页式存储:强调化整为零的使用存储。
状态位;标记这个逻辑有没有在内存中
访问位:最近访问过标1,没访问过的标0。它对页面的淘汰是有帮助的
修改位:最近内容修改过的为1,没有修改过的为0。修改过的页淘汰出去,淘汰的代价比较高,因为要把修改的内容写回去需要IO操作。
逻辑地址:连续的地址块。而在运行当中使用到的地址叫做物理地址。逻辑地址和物理地址中,他们的页内地址是相同的。
- 索引文件结构
前面九个做直接索引,10号盘块做一级索引,11号开始做二级索引
直接索引效率最高,但存得少,而间接索引存得多,效率低。这就是效率和容量平衡的产物。
- 数据传输控制方式
操作系统中负责管理输入输出设备的部分称为i/o系统,完成设备管理功能,包括外设编址,数据通路的建立,向主机提供外设的状态信息等。I/O系统的组成有:IO设备,设备控制器及IO操作有关的软硬件。处理机和I/O设备性能的不断提高,专用的、独立I/O通道处理机已不容易见到。
程序控制方式 | 分为无条件传送和程序查询方式两种。方法简单,硬件开销小,但IO能力不高,严重影响CPU的利用率。 |
程序中断方式 | 与程序控制方式相比,中断方式因为CPU无需等待而提高了传输请求的响应速度。 |
DMA方式 | 为了在主存和外设之间实现高速,批量数据交换而设置的。DMA方式比程序控制方式与中断方式都高效。直接内存存取 |
通道方式 | 通道(Channel)也称为外围设备处理器,相对于CPU而言的。是一个处理器。也能执行指令和由指令的程序,只不过通道执行的指令是与外部设备相关的指令。 |
IO处理机 | ー |
※关于效率,是从上往下越来越高的。
※程序中断方式:适用于实时性较高的场景。比如键盘。它只适合于小数据量的传输。
※DMA方式:使用专门的控制器来进行传输的管控。一般硬盘采用这种方式。
- 嵌入式操作系统
特点:微型化,代码质量高,专业化,实时性强,可裁剪,可配置。
常见的嵌入式RTOS:VxWorks,RT-Linux,QNX,pSOS。
实时嵌入式操作系统的内核服务有:异常和中断,计时器,I/O管理。
比较类型 | VxWorks | RT-Linux |
工作方式 | 操作系统与应用程序处于同一存储空间 | 操作系统与应用程序处于不同的存储空间 |
多任务支持 | 支持多任务(线程)操作 | 支持多进程多线程操作 |
实时性 | 实时系统 | 实时系统 |
安全性 | 任务之间没有隔离保护 | 支持进程间的隔离保护 |
标准API | 支持 | 支持 |