北航操作系统总复习
!!!本文完全原创,参照沃天宇老师课件,转载请注明出处
第一章 概论
1、操作系统定义:操作系统是一组管理计算机硬件资源的软件集合,它向计算机程序提供共性的服务。
2、批处理:把用户提交的作业成批送入计算机,由作业调度程序自动选择作业运行。作用:a)缩短作业之间的交接时间, b) 减少处理机的空闲等待,提高系统效率
3、单道程序:同一时间内存中只有一个程序。多道程序:内存空间中同时驻留多道程序。
4、分时:分时是指多个用户分享使用同一台计算机。多个程序分时共享硬件和软件资源。
5、网络操作系统:在传统单机OS上加单独软件层,主要提供联网功能和资源的远程访问,实现多机互联。分布式操作系统:多台机器统一管理形成单一系统,相比网络操作系统,对用户和应用高度透明(看不到也不需要看到)。实时系统:及时响应,高可靠性和安全性,专用系统。
6、冯诺依曼体系结构:存储程序式
7、操作系统的主要功能:处理机分配,存储器管理,设备管理,文件系统。
8、现代操作系统的基本特征:并发执行,资源共享(复用),虚拟化管理,不确定性事件的处理。
9、操作系统工作模式:内核态(管态),用户态(目态),切换过程:通过异常(陷阱或中断),进入内核态。
10、异常与中断:中断主要由I/O设备、处理器时钟或定时器等硬件产生,可以被启用或禁用。陷阱是用户进程中某一特定指令执行的结果,在相同条件下,异常可以重现。例如内存访问错误、调试指令以及被零除。
11、系统调用:提供操作系统服务的编程接口;与函数调用的区别:a) 用户态到内核态,切换堆栈 b)移植性差 c) 开销较大。过程:先跳转到异常分发代码,通过异常类型调用handle_sys函数根据系统调用号完成系统调用的实现。
12、操作系统内核:是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。通过异常来陷入内核态。
13、微内核:内核只完成不得不完成的功能,其他诸如文件系统、内存管理、设备驱动等的内容都被作为系统进程放到了用户态空间。好处:架构独立,减小系统耦合,增加可移植性。坏处:频繁系统调用效率难以保证。
第二章 操作系统引导
操作系统启动是一个逐渐释放灵活性的过程。
x86启动流程
1.打开计算机 2.CPU跳转到BIOS的物理地址 3.BIOS上电自检 4. 寻找需要启动的设备 5. 从MBR上加载执行启动程序 6. 加载OS
Linux
BIOS->MBR(Stage1)->GRUB(stage2)->Kernel->user_space
MBR
512字节,由Bootloader启动程序,分区表,还有0xAA55组成。
从 CPU 上电到操作系统内核被加载的整个启动的步骤
首先执行的是 BIOS 中的代码,主要完成硬件初始化相关的工作,然后 BIOS 会从 MBR中读取开机信息。
BIOS加载 MBR 中的Grub代码后就把CPU交给了Grub,Grub 的工作就是一步一步的加载自身代码,从而识别文件系统,然后就能够将文件系统中的内核镜像文件加载到内存中,并将CPU控制权转交给操作系统内核。这样看来,其实 BIOS 和Grub的前一部分构成了前述stage1的工作,而 stage2的工作则是完全在Grub中完成的。
第三章 存储管理
存储管理目标与功能
1、存储管理目标:a)地址独立:程序发出的地址与物理地址无关. b) 地址保护:一个程序不能访问另一个程序的地址空间。存储管理要解决的问题:分配和回收。
2、存储管理的功能:内存的分配与回收,地址转换(动静态重定位),存储共享与保护,内存容量扩充。
分区存储管理
-
基于顺序搜索的分配算法
-
首次适应算法:从这个空白区域链的始端开始查找,选择第一个足以满足请求的空白块。
低地址部分留下了很多很小空闲空间,增加了查找开销。
-
下次适应算法:每次为存储请求查找合适的分区时,总是从上次分配的下一块开始,只要找到一个足够大的空白区,就将它划分后分配出去。
使小空闲分区均匀分布,但会导致缺乏大空闲分区。
-
最佳适应算法:总是寻找其大小最接近于作业所要求的存储区域(将空闲分区按容量递增排列)。
留下许多小分区(碎片)。
-
最坏适应算法:总是寻找最大的空白区(将空闲分区按容量递减排列)。
当大作业来时,可能没有那么大的空间了。
页式存储管理
- 页:在分页存储管理系统中,把每个作业的地址空间分成一些大小相等的片,称之为页面或页。
- 存储块:在分页存储管理系统中,把主存的存储空间也分成与页面相同大小的片,这些片称为存储块,或称为页框。
- 页面的大小 :
- 若页面较小:a) 减少页内碎片和总的内存碎片,有利于提高内存利用率。b) 每个进程页面数增多,使页表长度增加,占用内存较大。
- 若页面较大:a) 每个进程页面数减少,页表长度减少,占用内存较小. b) 增加页内碎片增大,不利于提高内存利用率。
- TLB:块表,类似于cache的机制,LRU(最近虽少使用替换原则),如果没命中找到后要替换进来。
- 反置页表:依据内存中的物理页面号来组织,表项为进程pid+逻辑页号p。如果检索到与之匹配的表项,则表项的序号 i 便是该页的物理块号,将该块号与页内地址一起构成物理地址。
段式存储管理
页是存储信息的物理单位,段却是信息的逻辑单位。用户一般按逻辑关系对作业分段,并能根据名字来访问程序段和数据段。
段页式存储管理
-
用分段方法来分配和管理虚拟存储器,而用分页方法来分配和管理实存储器。
-
段页式存储管理是分段和分页原理的结合,即先将用户程序分成若干个段(段式),并为每一个段赋一个段名,再把每个段分成若干个页(页式).
-
其地址结构由段号、段内页号、及页内位移三部分所组成。
- 每个进程一张段表,每个段一张页表。段表含页表始址和页表长度。页表含物理页号。
超越物理内存限制
- 覆盖:重用内存,时间上扩展;交换:辅助存储,空间上拓展。
- 覆盖:把一个大的程序划分成一系列的覆盖,每个覆盖是一个相对独立的程序单位。把程序执行时并不要求同时装入主存的覆盖组成一组,称其为覆盖段,这个覆盖段被分配到同一个存储区域。这个存储区域称之为覆盖区,它与覆盖段一一对应。
- 交换:把暂时不用的某个程序及其数据的部分或全部从主存移到辅存中去,以便腾出必要的存储空间;接着把指定程序或数据从辅存读到相应的主存中,并将控制转给它,让其在系统上运行。
缺页中断处理流程
- 陷入内核态,保存现场。 2. 查找发生缺页的虚拟页面 3. 检查虚拟地址的有效性和保护位。 4. 找一个空闲的页框(物理内存中的页面),如果没有的话使用页面置换算法换出一个页框。 5. 如果换出去的页框是dirty的,需要写回磁盘。6. 准备好页框后将所需页面从磁盘调入。7. 向操作系统发出中断更新页表。8. 恢复现场继续执行。
页面置换策略
- OPT:最优置换,无法被实现,但可以用于衡量其他页面置换算法的效果。
- FIFO:当必需置换掉某页时,选择最旧的页换出。
- LRU:每访问到一个已有的页,把它移到队尾。
- Second Chance :每个页面都有一个标志位。用于标识此数据放入缓存队列后是否被再次访问过。删的时候如果没被访问过直接删,如果访问过的话清除标志然后跳过删下一个,这个下次再删。
- clock:环形队列,没被访问过直接替换,被访问过的话清除标志删下一个。
- 工作集策略:引入工作集的目的是依据进程在过去的一段时间内访问的页面来调整常驻集大小。
第四章 进程机制与并发程序设计
进程与线程的基本概念
-
并发与并行
- 并发:设有两个活动在同一时间,处在各自的起点和终点之间的某一处。
- 并行:如果考虑两个程序,它们在同一时间度量下同时运行在不同的处理机上,则称这两个程序是并行执行的。
- 并发可能是真并行,可能是伪并行。
-
进程与程序
- 进程 = 数据 + 程序 + PCB
- 进程是动态的,程序是静态的
- 进程是暂时的,程序的永久的
- 通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序。
-
进程原语: 由若干条指令所组成的指令序列,来实现某个特定的操作功能。
- 指令序列执行是连续的,不可分割
- 是操作系统核心组成部分
- 必须在管态(内核态)下执行,且常驻内存
-
进程的三种状态:
- 就绪状态:进程已获得除处理机外的所需资源,等待分配处理机资源;只要分配CPU就可执行。
- 执行状态:占用处理机资源;处于此状态的进程的数目小于等于CPU的数目。
- 阻塞状态:正在执行的进程,由于发生某种事件而暂时无法执行,便放弃处理机处于暂停状态。
-
进程与线程:现代操作系统将资源拥有者称为进程,可执行单元称为线程。将资源与计算分离,提高并发效率。
-
引入线程的目的:减小进程切换的开销;提高进程内的并发程度;共享资源。
-
进程与线程:
- 一个进程可以拥有多个线程,而一个线程同时只能被一个进程所拥有。
- 进程是资源分配的基本单位,线程是处理机调度的基本单位,所有的线程共享其所属进程的所有资源与代码。
- 线程共享进程的数据的同时,有自己私有的的堆栈。
进程通信:同步与互斥
-
临界资源与临界区
- 临界资源:一次仅允许一个进程访问的资源称为临界资源。
- 临界区:每个进程中访问临界资源的那段代码称为临界区。
-
同步与互斥
- 同步:直接制约,逻辑上的依赖
- 互斥:间接制约,资源的等待
-
同步互斥原则:
- 空闲让进:临界资源处于空闲状态,允许进程进入临界区。如,临界区内仅有一个进程执行。
- 忙则等待:临界区有正在执行的进程,所有其他进程则不可以进入临界区。
- 有限等待:对要求访问临界区的进程,应在保证在有限时间内进入自己的临界区,避免死等。
- 让权等待:当进程(长时间)不能进入自己的临界区时,应立即释放处理机,尽量避免忙等。
-
基于忙等待的互斥问题
- 软件方法:Dekker, Peterson,面包店算法
- 硬件方法:test_and_set自旋锁,置一取回原值,若取回的值为0则进入,1则等待。退出时置0.
- 共性问题:1.忙等待浪费CPU时间。2.会造成优先级反转,低优先级进程先进入临界区,高优先级进程一直忙等。
-
信号量
- 信号量只能通过初始化和两个标准的原语来访问,作为OS核心代码执行,不受进程调度的打断。
- P操作:S=S-1,若S>=0继续进行,否则阻塞进程。V操作:S=S+1,若S>0继续进行,否则释放阻塞队列中的一个进程。
- P操作分配资源,V操作释放资源。S为正时代表资源的个数,S为负时表示等待进程的个数。
- 信号量实现互斥:S=1;同步:S=0(先V才能P);
- PV操作优点:简单,而且表达能力强(用P.V操作可解决任何同步互斥问题)缺点:不够安全,P.V操作使用不当会出现死锁;加重编程的负担。
-
管程
- 定义:把分散的临界区集中起来,为每个可共享资源设计一个专门机构来统一管理各进程对该资源的访问,这个专门机构称为管程。
- 管程是一种高级同步原语。
- 管程是一种语言概念,由编译器负责实现互斥,任一时刻,管程中只能有一个活跃进程。
- 管道:单独构成一种独立的文件系统,并且只存在在内存中。
进程调度算法
-
调度的三个类型
- 高级调度:作业调度,时间上通常是分钟、小时或天。
- 中级调度:内外存交换,将进程的部分或全部换出到外存上,将当前所需部分换入到内存。
- 低级调度:进程或线程调度。(抢占/非抢占)
-
进程调度算法的评价指标
- 周转时间:作业从提交到完成(得到结果)所经历的时间。平均周转时间 vs. 带权平均周转时间(T/Ts):总周转时间/总服务时间
- 响应时间:用户输入一个请求到系统给出首次响应的时间。
- 吞吐量:单位时间内所完成的作业数,跟作业本身特性和调度算法都有关系
- CPU利用率
-
进程分类
- 批处理进程:无需与用户交互,通常在后台运行;不需很快的响应
- 交互式进程:与用户交互频繁,因此要花很多时间等待用户输入;响应时间要快
- 实时进程:有实时要求,不能被低优先级进程阻塞;响应时间要短且要稳定
-
批处理系统调度算法
- 交互式系统的调度算法
-
时间片轮转算法
- 算法主要用于微观调度,设计目标是提高资源利用率。其基本思路是通过时间片轮转,提高进程并发性和响应时间特性,从而提高资源利用率。
-
优先级算法
- 本算法是平衡各进程对响应时间的要求。适用于作业调度和进程调度,可分成抢先式和非抢先式。
死锁
-
定义
- 死锁:一组进程中,每个进程都无限等待被该组进程中其它进程所占有的资源,在无外力介入的条件下,将因永远分配不到资源而无法运行的现象。
- 活锁:是指任务或者执行者没有被阻塞,由于某些条件没有满足,导致一直重复尝试,失败,尝试,失败。
- 饥饿:某些进程可能由于资源分配策略的不公平导致长时间等待。当等待时间给进程推进和响应带来明显影响时,称发生了进程饥饿,当饥饿到一定程度的进程所赋予的任务即使完成也不再具有实际意义时称该进程被饿死。
-
死锁发生的四个必要条件:互斥;请求和占有;不可剥夺;环路等待。
-
预防死锁:破坏4个条件
-
避免死锁:如果存在安全序列,则处于安全状态,不存在安全序列的系统是不安全的。
-
安全序列的定义:一个序列${P1,P2,…,Pn} 是 安 全 的 , 是 指 若 对 于 每 一 个 进 程 是安全的,是指若对于每一个进程 是安全的,是指若对于每一个进程P_i , 它 需 要 的 附 加 资 源 可 以 被 系 统 中 当 前 可 用 资 源 加 上 所 有 进 程 ,它需要的附加资源可以被系统中当前可用资源加上所有进程 ,它需要的附加资源可以被系统中当前可用资源加上所有进程P_j ( j < i ) 当 前 占 有 资 源 之 和 所 满 足 , 则 (j < i)当前占有资源之和所满足,则 (j<i)当前占有资源之和所满足,则{P1,P2,…,Pn} $为一个安全序列。
-
银行家算法:先看request是否小于need,小于的话再看request是否小于available,如果都行的话假设分配一下用安全性算法检测,若安全则分配否则不分配。
-
安全性算法:找need
-
RAG资源分配图算法
- 有向图G的顶点为资源或进程,从资源R到进程P的边表示R已分配给P,从进程P到资源R的边表示P正因请求R而处于等待状态。
- 死锁定理:系统中某个时刻t为死锁状态的充要条件是t时刻系统的资源分配图是不可完全化简的。
- 在经过一系列的简化后,若能消去图中的所有边,使所有的进程都成为孤立结点,则称该图是可完全化简的;反之的是不可完全化简的。
-
死锁解除:撤销进程或剥夺资源
第五章 I/O系统
IO设备
字符设备;块设备;网络设备
I/O控制方式
- 程序控制I/O:也称轮询方式I/O,它由CPU代表进程向I/O模块发出指令, 然后进入忙等状态, 直到操作完成之后进程才能够继续执行。
- 中断驱动:当I/O操作结束后由设备控制器主动地来通知设备驱动程序说这次结束, 而不是设备驱动程序不断地去轮询看看设备的状态。
- 优点:提高了CPU利用率,可以处理不确定事件。
- 缺点:每次输入/输出一个数据都要中断CPU,多次中断浪费CPU时间,只适于数据传输率较低的设备。
- DMA:直接存储器访问方式, 是由一个专门的控制器来完成数据从内存 到设备或者是从设备到内存的传输工作。(CPU要为其设置内存起址,传送字节数)
- 优点:CPU只需干预I/O操作的开始和结束,而其中的一批数据读写无需CPU控制,适于高速设备(数据块传输)。
- 每个设备占用一个DMA控制器,当设备增加时,需要增加新的DMA控制器。
- 通道:通道是一个特殊功能的处理器,它有自己的指令和程序专门负责数据输入输出的传输控制。通道与CPU分时使用内存,实现了CPU内部运算与I/O设备的并行工作。
- 优点:执行一个通道程序可以完成几组I/O操作,与DMA相比,减少了CPU干预。
- 缺点:费用较高
缓冲区
- 缓冲技术可提高外设利用率
- 匹配CPU与外设的不同处理速度
- 减少对CPU的中断次数
- 提高CPU和I/O设备之间的并行性
第六章 文件系统
磁盘存储管理
磁盘访问时间 = 寻道时间 + 旋转延迟时间 + 传输时间
磁盘调度算法
先来先服务;最短寻道优先;Scan;C_Scan;C_look;
RAID
- 一种把多块独立的硬盘(物理硬盘)按照不同方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据冗余的技术。
- 成本低,功耗小,传输速率高;提供容错功能
- RAID 0:仅提供了并行交叉存取。它虽然有效提高了磁盘I/O速度,但并无冗余校验功能。
- RAID 1:将每一数据块重复存入镜像磁盘,以改善磁盘机的可靠性。镜像盘也称拷贝盘,使有效容量下降了一半,成本较高。
- RAID 10&01:10是先镜像再分块,01是先分块再镜像,显然10的容错性更好。
- RAID 2:加上海明码奇偶校验来进行错误检测和纠正,数据传输率高。
文件
- 文件概念:文件是指一组带标识(标识即为文件名)的、在逻辑上有完整意义的信息项的序列。
- 可以视为一个单独的连续的逻辑地址空间,其大小即为文件的大小,与进程的地址空间无关。
- 目录:目录是由文件说明索引组成的用于文件检索的特殊文件,文件目录的内容主要是文件访问和控制的信息。
- 文件系统:操作系统中与文件管理有关的那部分软件和被管理的文件以及实施管理所需要的数据结构的总体。
索引文件