3.2 操作系统

目录 ✌ #

  本章内容的考试方式主要集中在上午的选择题里面,在下午的案例分析题里面考到过操作系统特性、分类及作用,正常约占6~8分,占比8%~10.7%


1 操作系统概述 ✅✅✅ #


  操作系统是裸机上的第一层软件,它管理着系统的软硬件资源,控制着程序的运行,是应用软件和硬件之间的接口,也是人机交互的接口。它可以管理系统中的进程、存储、文件、设备以及作业,加粗的4个点将在后续小节详细说明。

pCAH6MT.md.png

  操作系统为用户提供了两类接口:操作一级的接口和程序控制一级的接口。其中,操作一级的接口包括操作控制命令菜单,程序控制一级的接口包括系统调用

例题 pCAHvFA.md.png

1.1 操作系统的组成及作用 ✅✅✅ #

  • 操作系统的组成

  通常由操作系统内核 (Kernel) 和其他许多附加的配套软件所组成,包括图形用户界面程序、为支持应用软件开发和运行的各种软件构件(如应用框架、编译器和程序库等)、常用的应用程序(如任务管理器、防火墙、网络浏览器等)。

  其中,内核指的是能提供进程管理(任务管理)、存储管理、文件管理和设备管理等功能的那些软件模块,它们是操作系统中最基本的部分,用于为众多应用程序访问计算机硬件提供服务。由于应用程序直接对硬件操作非常复杂,所以操作系统内核对硬件设备进行了抽象,为应用软件提供了一套简洁、统一的接口(称为系统调用接口或应用程序接口 API)。内核通常都驻留在内存中,它以 CPU 的最高优先级运行,能执行指令系统中的特权指令,具有直接访问各种外设和全部主存空间的特权,负责对系统资源进行管理和分配。

  • 操作系统的三大作用

  (1) 管理计算机中运行的程序和分配各种软硬件资源。计算机中一般总有多个程序在运行.这些程序在运行时都可能要求使用系统中的资源(如访问硬盘,输出信息到屏幕等),此时操作系统就承担着资源的调度和分配任务,以避免冲突,保证程序正常有序地运行。操作系统的资源管理功能主要包括处理器管理、存储管理、文件管理、I/O 设备管理等几个方面。

  (2) 为用户提供友善的人机界面。人机界面的任务是实现用户与计算机之间的通信(对话)。几乎所有操作系统都向用户提供图形用户界面 (GUI)。

  (3) 为应用程序的开发和运行提供一个高效率的平台。操作系统屏蔽了几乎所有物理设备的技术细节,它以规范、高效的方式 (例如系统调用、库函数等)向应用程序提供了有力的支持,从而为开发和运行其他系统软件及各种应用软件提供了一个平台。

1.2 操作系统的特性 ✅✅✅ #

  • 并发性

  在多道程序环境下,并发性是指在一段时间内,宏观上有多个程序同时运行,但实际上在单CPU的运行环境,每一个时刻只有一个程序在执行。因此,从微观上来说,各个程序是交替、轮流执行的,如果计算机系统中有多个 CPU,则可将多个程序分配到不同 CPU 上实现并行运行。

  • 共享性

  共享是指操作系统中的资源(包括硬件资源和信息资源)可以被多个并发执行的进程(线程)共同使用,而不是被一个进程所独占。

  • 不确定性

  但由于资源有限,在多数情况下进程的执行不是一贯到底的,而是“走走停停”。例如一个进程,在 CPU上运行一段时间后,由于等待资源或某事件发生,它被暂停执行,将 CPU 转让给另一个进程执行。系统中的进程何时执行,何时暂停,以什么样的速度向前推进,进程总共要花多少时间执行才能完成,这些都是不可预知的。

2 操作系统的分类 ✅✅✅ #


2.1 批处理操作系统 ✅✅ #

  • 单道批处理系统:

  单道批处理操作系统是一种早期的操作系统,用户可以一次向系统提交多个作业,“单道”的含义是指一次只有一个作业装入内存执行。作业由用户程序、数据和作业说明书(作业控制语言)3个部分组成。当一个作业运行结束后,随即自动调入同批的下一个作业,从而节省了作业之间的人工干预时间,提高了资源的利用率。

  • 多道批处理操作系统

  允许多个作业装入内存执行,在任意一个时刻,作业都处于开始点和终止点之间。每当运行中的一个作业由于输入/输出操作需要调用外部设备时,就把 CPU 交给另一个等待运行的作业,从而将主机与外部设备的工作由串行改变为并行,进一步避免了因主机等待外设完成任务而浪费宝贵的 CPU 时间。多道批处理系统主要有3 个特点:多道、宏观上并行运行和微观上串行运行。

2.2 分时操作系统 ✅ #

  在分时操作系统中,一个计算机系统与多个终端设备连接。分时操作系统是将 CPU 的工作时间划分为许多很短的时间片,轮流为各个终端的用户服务。例如,一个带 20 个终端的分时系统,若每个用户每次分配一个 50ms 的时间片,则每隔 1s 即可为所有的用户服务一遍。因此,尽管各个终端上的作业是断续运行的,但由于操作系统每次对用户程序都能做出及时响应,因此用户感觉整个系统均归其一人占用。

2.3 实时操作系统 ✅✅✅ #

  实时操作系统又可以叫做实时嵌入式操作系统(拥有嵌入式操作系统的所有特点),其中实时是指计算机对于外来信息能够以足够快的速度进行处理,并在被控对象允许的时间范围内做出快速响应。实时系统对交互能力要求不高,但要求可靠性有保障。实时系统分为实时控制系统和实时信息处理系统。实时控制系统主要用于生产过程的自动控制,例如数据自动采集、武器控制、火炮自动控制、飞机自动驾驶和导弹的制导系统等。实时信息处理系统主要用于实时信息处理,例如飞机订票系统、情报检索系统等。RTOS是嵌入式操作系统的一种,RTOS可以根据应用环境的要求对内核进行裁剪和重配。RTOS的首要任务是调度一切可利用的资源来完成实时控制任务。RTOS实质上就是一个计算机资源管理程序,需要及时响应实时事件和中断。

  混成系统是嵌入式实时系统的一种重要的子类。混成系统一般由离散分离组件和连续组件并行或串行组成,组件之间的行为由计算模型进行控制。

  • 评价RTOS好坏的指标(主要是任务切换时间方面)

  跟中断处理相关的时间指标有:中断延迟时间、中断响应时间(嵌入式系统采用中断方式实现输入输出的原因在于中断相应足够块,CPU的断点信息一般保存在栈中)。

  系统响应时间:对用户的输入或请求作出反应的时间。

  信号量混洗时间:指从一个任务释放信号量到另一个等待该信号量的任务被激活的时间延迟。

  • 实时操作系统任务调度算法

  实时系统存在多种调度算法,在RTOS中,大多数的RTOS调度算法都是抢占式的。

  优先级调度算法: 分配一个相对固定的优先顺序,然后调度程序根据优先级的高低排序,按时间顺序进行高优先级任务优先调度。(非抢占式)

  抢占式优先级调度算法:是在优先级调度算法基础上,允许高优先级任务抢占低优先级任务而运行。

  时间轮转调度算法:调度程序会依次调度每个任务运行一个小的时间片,然后再调度另一个任务。每个任务运行完一个时间片,无论是否结束都会释放CPU让下一个任务运行。(纯粹的时间轮转调度无法满足实时系统的要求,取而代之的是基于优先级的抢占式时间)。

  最晚截止期调度算法:当某任务执行接近自己的截止期(deadline)时,调度算法将把该任务的优先级调整到系统最高优先级。

  最早截止期调度算法,指调度程序按每个任务的结束时间排序,能越早结束的任务就优先分配执行,即小作业优先。

pCE2kAf.md.png

例题 pCE2Scd.md.png

pCE2e3Q.md.png

2.4 嵌入式操作系统 ✅✅✅ #

  嵌入式操作系统特点:(1) 微型化、(2) 代码质量高、(3) 专业化、(4) 实时性强、(5) 可裁减、可配置,注意通用性不是其特点。针对不同的硬件平台,操作系统通常建立在一个硬件抽象层(HAL)或者板级支持包上(HAL或BSP,硬件抽象层或板级支持包与硬件密切相关,可对操作系统隐藏硬件的多样性;它们将操作系统与硬件平台隔开;使得软硬件的设计与调试可以并行。它们不存在任务调度,任务调度是操作系统干的事儿)。

  嵌入性、专用性和计算机系统是嵌入式系统的三个核心要素。

  嵌入式系统的初始化过程:片级初始化->版级初始化->系统初始化

  JTAG接口是用来进行CPU调试的常用接口。

  嵌入式数据库管理系统一般不支持多线程并发操作。

  嵌入式系统间进行异步串行通信时,通常采用移位寄存器来实现数据的串并和并串转换。

  看门狗 (WatchDog)是嵌入式系统中一种常用的保证系统可靠性的技术,看门狗定时器超时会产生看门狗中断。

  在SoC中软硬件的结合是十分紧密的,软件和硬件之间的功能划分以及它们的实现并没有固定的模式,而是随着应用的不同而变化。

pCkNhxe.md.png

  在宿主机上必须采用交叉编译器来生成目标机的可执行代码。

pCEgcmq.md.png

  • 低功耗采用的手段

  嵌基于硬件的低功耗设计:板级电路低功耗设计,选择低功耗处理器,总线的低功耗设计;接口驱动电路的设计,分区分时供电技术。

  嵌基于软件的低功耗设计:编译优化技术 (指令开销),软件与硬件的协同设计 (硬件功能交由软件完成),算法优化 (低时间复杂度)。

例题 pCEg0fg.md.png

pCEg27V.md.png
pCEghhF.md.png
p9Ten76.md.png

2.5 网络操作系统 ✅ #

  网络操作系统是使联网计算机能方便而有效地共享网络资源,为网络用户提供各种服务的软件和有关协议的集合。

2.6 分布式操作系统 ✅ #

  分布式计算机系统是由多个分散的计算机经连接而成的计算机系统,系统中的计算机无主次之分,任意两台计算机可以通过通信交换信息。通常,为分布式计算机系统配置的操作系统称为分布式操作系统。分布式操作系统能直接对系统中的各类资源进行动态分配和调度、任务划分、信息传输协调工作,并为用户提供一个统一的界面与标准的接口,用户通过这一界面实现所需要的操作和使用系统资源,使系统中若干台计算机相互协作完成共同的任务,有效地控制和协调诸任务的并行执行。分布式操作系统是网络操作系统的更高级形式,它保持网络系统所拥有的全部功能,同时又有透明性、可靠性和高性能等特性。

2.7 微型计算机操作系统 ✅ #

  微型计算机操作系统简称微机操作系统,常用的有 Windows、Mac OS、Linux。

2.8 微内核操作系统 ✅✅ #

  现代操作系统大多拥有两种工作状态,分别是核心态和用户态。一般应用程序工作在用户态,而内核模块和最基本的操作系统核心工作在核心态。

  将传统的操作系统代码放置到更高层,从操作系统中去掉尽可能多的东西,而只留下最小的核心(增强了系统的可靠性和可移植性,消息传递机制很好的提供了微内核系统对分布式系统的支持,它系统结构清晰,有利于协作开发,拥有良好的伸缩性和扩展性,其缺点是通讯成本较高,微内核系统运行效率低于传统系统),称之为微内核。(C/S结构)

pCE2MBq.md.png

例题 pCE25Uf.md.png

3 进程管理 ✅✅✅✅ #


  进程由进程控制块PCB(唯一标识)+程序(描述进程要做什么)+数据(存放进程执行所需的数据)。程序是放在外存中的文件(静态的),进程是程序的一次执行过程(动态的)。下图是进程和线程的关系,明显看出来选C

pCE6gvn.md.png

3.1 进程的三态图 ✅✅ #

  三态图之间的状态转换就是PV操作来控制的。系统中资源一般分为:

1、CPU资源:  有 无 无 (分别对应于运行、就绪和阻塞状态)

2、非CPU资源: 有 有 无

p9Wehqg.png

例题 p9hmJTe.md.png

pCE6WD0.md.png

3.2 进程间的同步互斥 ✅✅✅✅ #

临界资源:各进程间需要以互斥方式对其进行访问的资源。

临界区:指进程中对临界资源实施操作的那段程序。本质是一段程序代码。

互斥模型:某资源 (即临界资源)在同一时间内只能由一个进程单独使用(使用包括读和写),使用时需要加锁,使用完后解锁才能被其他任务使用,属于间接制约关系;如打印机、缓冲区。简单来说:存在资源的竞争。 pPCvyAP.md.png

同步模型:多个任务可以并发执行(进程与进程之间存在协作关系),只不过有速度上的差异,在一定情况下停下等待,属于直接制约关系,不存在资源上竞争的关系;如生产者和消费者问题。简单来说:存在资源的协作。 pCSMF1g.md.png

  由于资源共享与进程合作,并发执行的任务 (进程)之间可能产生相互制约关系,这些制约关系可分为两类:竞争与协作。并发进程之间的竞争关系为互斥,并发进程之间的协作关系体现为同步。同步是因合作进程之间协调彼此的工作而控制自已的执行速度,即因相互合作,相互等待而产生的制约关系。而互斥是进程之间竞争临界资源而禁止两个以上的进程同时进入临界区所发生的制约关系。

互斥模型的信号量:对临界资源采用互斥访问,使用互斥信号量后其他进程无法访问,它是全局变量,一般用S表示,它的初值为1。

同步模型的信号量:对共享资源的访问控制,初值一般是共享资源的数量,它是全局变量;一般用S表示,如公司电脑数量。

3.3 前趋图与PV操作 ✅✅✅✅ #

P操作:申请并占用资源,S=S-1,若S>=0,则执行P操作的进程继续执行;若S<0,则置该进程为阻塞状态 (因为无可用资源),并将其插入阻塞队列。可认为是加锁操作。

V操作:释放资源,S=S+1,若S>0,则执行V操作的进程继续执行:若S<=0,则从阻塞状态唤醒一个进程,并将其插入就绪队列(此时因为缺少资源被P操作阻塞的进程可以继续执行),然后执行V操作的进程继续。可认为解锁操作。

  • PV操作与互斥模型示例

pCE678J.md.png

  • PV操作与同步模型示例

pCE6bvR.md.png

  下图中的进程队列是阻塞进程队列,当S为-3时,可认为是有3个进程在等待资源。

p9hmyTg.md.png

  • PV操作在前趋图中的应用

  前趋图是一个有向无环图,箭头的结束位置为P操作,箭头的开始位置为V操作

pCE6Xb6.md.png

github摘抄
  进程通常分为就绪、运行和阻塞三个工作状态。三个状态之间的转换就是靠PV操作来控制的。信号量的值只能由PV操作来改变。信号量是最早出现的用来解决进程同步与互斥问题的机制。P表示获得,V表示释放;P和V是荷兰语两个单词的首字母。
  信号量(Semaphore)由一个值和一个指针组成,指针指向等待该信号量的进程队列(阻塞队列)。信号量的值表示相应资源的使用情况。
  信号量S>=0时,S表示可用资源的数量。 当S<0时,表示已经没有可用资源,S的绝对值表示当前等待该资源的进程数。请求者必须等待其他进程释放该类资源,才能继续运行。 执行一次P操作意味着请求分配一个资源,因此S的值减1; 执行一个V操作意味着释放一个资源,因此S的值加1;此时若S<=0,表示有某些进程正在等待该资源,因此要唤醒一个等待状态的进程,使之运行下去。
  S大于0那就表示有临界资源可供使用,为什么不唤醒进程? S大于0的确表示有临界资源可供使用,也就是说这个时候没有进程被阻塞在这个资源上,所以不需要唤醒。
  如果是互斥信号量的话,应该设置信号量S=1,但是当有5个进程都访问的话,最后在该信号量的链表里会有4个在等待,也是说S=-4。
  S的绝对值表示等待的进程数,同时又表示临界资源,这到底是怎么回事? 当信号量S小于0时,其绝对值表示系统中因请求该类资源而被阻塞的进程数目;S大于0时表示可用的临界资源数。注意在不同情况下所表达的含义不一样。当等于0时,表示刚好用完。

例题 p9hmgYj.md.png

pCEcFKI.md.png

3.4 死锁 ✅✅ #

  死锁就考死锁资源的计算。

p9hmImT.md.png

例题 pCCnkL9.md.png

4 存储管理 ✅✅✅✅ #


  外存往内存调用数据

4.1 分页存储管理 ✅✅✅✅ #

  分页存储管理管理的是内存和外存之间的数据(同cache和内存之间的管理一样,只不过cache和内存之间靠的是硬件,而内存与外存靠的是软件(页表),这里是页式存储管理)。 页式存储管理:将用户程序(外存)与内存均划分为相同大小的块,以页为单位将程序调入内存;这样会产生一个页表的数据结构,用户程序称为逻辑页,对应于页表的页号,内存划分对应于物理块号;

逻辑地址:页号+页内地址

物理地址:块号(页帧号)+页内地址

pCCKtxS.md.png pCCKD5q.md.png

  逻辑页分为页号和页内地址,页内地址就是物理偏移地址,而页号与物理块号并非按序对应的,需要查询页表,才能得知页号对应的物理块号,再用物理块号加上偏移地址才得出了真正运行时的物理地址。如果CPU查找数据时,内存中没有,就会产生缺页中断,重新去外存寻找数据。当要调用逻辑页号为3的页面到内存时,优先淘汰访问位0的页面,当多个页面的访问位为0时,才会优先淘汰修改位为0的页面。

p9hmT7F.md.png

  • 页面置换算法

最优算法:0PT,理论上的算法,无法实现,是在进程执行完后进行的最佳效率计算,用来让其他算法比较差距。原理是选择未来最长时间内不被访问的页面置换,这样可以保证未来执行的都是马上要访问的。

先进先出算法:FIFO,先调入内存的页先被置换淘汰,会产生抖动现象,即分配的页帧数越多缺页率可能越多(即效率越低)。

最近最少使用:LRU,在最近的过去,进程执行过程中,过去最少使用的页面被置换淘汰,根据局部性原理,这种方式效率高,且不会产生抖动现象,实现相对复杂。

淘汰原则:优先淘汰最近未访问的,而后淘汰最近未被修改的页面。

快表:快表是将页表存于Cache中,慢表是将页表存于内存上。

例题 p9hnenf.md.png

pCCUBdK.md.png
p9hn33n.md.png

4.2 分段存储管理 ✅✅ #

  按逻辑上的大小来截断(和页式存储不同,页式存储固定大小页面),将进程空间分为一个个段,每段也有段号和段内地址,与页式存储不同的是,每段物理大小不同,分段是根据逻辑整体分段的,因此,段表也与页表的内容不同,页表中直接是逻辑页号对应物理块号,而下图所示,段表有段长和基址两个属性,才能确定一个逻辑段在物理段中的位置。

p9hndN4.md.png p9hnw4J.md.png

5 I/O设备管理 ✅✅ #


5.1 I/O软件层次 ✅✅ #

  I/O设备管理软件的所有层次及每一层功能如下图:

p9hu4dU.md.png

实例:当用户程序试图读一个硬盘文件时,需要通过操作系统实现这一操作。首先设备无关软件检查高速缓存中有无要读取的数据块,若没有,则调用设备驱动程序,向I/O硬件发出一个请求。然后,用户进程阻塞并等待磁盘操作的完成。当磁盘操作完成时,硬件产生一个中断,转入中断处理程序。中断处理程序检查中断的原因,认识到这时磁盘读取操作已经完成,于是唤醒用户进程取回从磁盘读取的信息,从而结束此次I/O请求。用户进程在得到了所需的硬盘文件内容之后继续运行。

5.2 SPOOLING技术 ✅ #

  虚拟性是OS的四大特性之一。如果说可以通过多道程序技术将一台物理CPU虚拟为多台逻辑CPU,从而允许多个用户共享一台主机,那么,通过SPOOLING技术便可将一台物理I/O设备虚拟为多台逻辑I/O设备,同样允许多个用户共享一台物理I/O设备。

6 文件管理 ✅✅✅ #


6.1 索引文件结构 ✅✅✅ #

  如图所示,一般linux的系统中默认有13个索引节点,索引可以理解为地址、指针、盘块号。0-9为直接索引,即每个索引节点存放的是内容,假设每个物理盘大小为4KB,则0-9号索引一共可存4KB*10=40KB数据。

p9hK8mV.md.png

  10号索引节点为一级间接索引节点,大小为4KB,存放的并非直接数据,而是链接到直接物理盘块的地址,假设每个地址(指针、盘块号)占4B,则共有4KB/4B = 1024个地址,对应1024个物理盘,可存1024*4KB=4096KB数据。

  11号索引节点为二级索引节点,直接盘存放一级地址,一级地址再存放物理盘快地址,而后链接到存放数据的物理盘块,容量又扩大了一个数量级,为1024 * 1024 * 4KB数据。

  存储单元个数同主存编址计算计算一样,即存储单元个数=大地址-小地址+1。

p9hKJTU.md.png

6.2 文件目录 ✅ #

相对路径:是从当前路径开始的路径。

绝对路径:是从根目录开始的路径。

全文件名=绝对路径+文件名。要注意,绝对路径和相对路径是不加最后的文件名的,只是单纯的路径序列。

p9hK061.md.png

6.3 位示图 ✅✅ #

  位示图是用于记录文件存储器的使用情况。每一位对应文件存储器上的一个物理块,取值 0 和 1 分别表示空闲和占用。

pCPdb01.md.png p9hMw4g.md.png

课后习题 #


todo 操作系统习题