1. 操作系统概论
操作系统就是指控制和管理整个计算机系统的硬件和软件资源,并且合理地组织调度计算机的工作和资源的分配,提供给用户和其他软件比较方便的接口和环境,是计算机系统中最佳的系统软件(非硬件)
| 裸机 | OS | 应用程序 | 用户 | |
|---|---|---|---|---|
| 指硬件:CPU、主板 | 如:window、Linux | 如:QQ | 字面意思 |
1.1 特征
- 并发:指两个或者多个事件在同一时间间隔发生,宏观同时,微观交替
- 共享:系统中可供内存当中多个并发执行的进程共同使用
- 互斥共享:资源在特定的一段时间内只允许一个进程访问该资源
- 例如:微信和 QQ 不能同时访问使用摄像头
- 同时共享:一个时间段内允许多个进程同时对某些资源进行访问
- 例如:微信和 QQ 可以同时访问相册里面的图片
- 互斥共享:资源在特定的一段时间内只允许一个进程访问该资源
- 虚拟:一个物理意义上的实体变为若干个逻辑上的对应物,物理实体是实际存在的,而逻辑上的对应物就是用户感受到的;用于实现虚拟的技术,也称虚拟技术。 虚拟存储器技术就是通过多道程序设计技术,采用让多道程序并发执行的方法来分时使用一个处理器。
- 异步:在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推荐,这就是进程的异步性。
1.2 功能与接口
1.2.1 功能
操作系统作为管理者包含:处理机管理、储存器管理,文件管理,设备管理。
- 处理机管理:多道程序环境下,分配和运行都以进程的为基本单位,因而需要处理机管理可归纳为进程管理,包含:进程控制、进程同步、进程通信、死锁处理、处理机调度等。
- 存储器管理:提供环境,方便用户使用及提高内存的利用率,包含:内存分配与回收、地址映射、内存保护与共享和内存扩充等功能。
- 文件管理:也称文件系统,包含:储存空间管理、目录管理、文件读写管理和保护等。
- 设备管理:主要完成用户的 I/O 请求,访问用户使用各种设备,提高设备使用率,包含:缓冲管理、设备分配、设备处理、虚拟设备等功能。
1.2.2 接口
- 命令接口
-
- 联机命令接口:又称交互式命令接口,适用于分时或实时系统的接口
-
- 脱机命令接口:又称批处理命令接口,适用于批处理系统,它由一组作业控制命令组成。
-
- 程序接口
- 图像接口:GuI(并不是操作系统的一部分,而调用的接口才是)
1.3 操作系统发展过程
1.3.1 单道批处理系统
- 特点:单路性、独占性、自动性、封闭性、顺序性
- 缺点:系统资源得不到充分利用
1.3.2 多道批处理系统
- 特点:多路性、共享性、自动性、封闭性、无序性、调度性
- 好处:提高 cpu 的利用率,提高内存和 I/O 设备利用率,增加系统吞吐量
- 缺点:平均周转时间长,无交互能力
1.3.3 分时系统
概念:指一台主机上连接了多个配有显示器和键盘的终端,由此组成的系统。该系统允许多个用户同时通过自己的终端,以交互方式使用计算机,共享主机中的资源。
- 特点:同时性、交互性、独立性、及时性
- 缺点:不能在特定时间显示及时处理
1.3.4 实时系统
- 硬实时:某个动作必须绝对在规定时间内必须完成
- 软实时:能够偶尔违反时间规定,但不会引起任何永久性的伤害或损害
- 特点:及时性和可靠性
1.4 操作系统运行环境
1.4.1 用户态与核心态
- CPU 执行两种不同性质的程序:一是系统内核程序,二是应用程序
- 操作系统划分用户态和核心态,严格区分两类程序,用户自编的程序运行在用户态,而操作系统的内核程序运行在核心态
- 用户态:命令解释程序、
- 核心态:进程调度程序、时钟中断处理程序、缺页处理程序
[!lol] 有趣的小知识 系统调用是在用户态,被调用的程序在核心态执行 外部中断是在用户态发生,但是处理是在核心态 执行 缺页是在用户态发生,处理在核心态执行 缺页处理程序是在核心态执行
1.4.2 内核
概念:内核是计算机最底层的软件,是计算机功能的眼神,大多包含四个方面
1.4.2.1 时钟
- 时钟管理:计时器,操作系统需要通过时钟管理向用户提供准确的时间,通过时钟中断的管理,可实现进程的切换。
1.4.2.2 中断
- 中断机制:引入的初衷是提高多道程序环境中 CPU 的利用率
- (例如外部设备的数据传输请求、硬件故障、定时器时间到达等情况)时,CPU 暂停当前正在执行的程序,转而去执行处理该特殊事件的一段程序(称为中断服务程序)
- 外中断(中断)
- 来源于CPU 外部与当前执行的指令有关
- 系统控制的数据结构及处理:如 I/O 操作完成发出中断信号
- 系统控制的数据结构及处理:如 用户强制终止一个进程
- 内中断(异常)
- 来源于CPU 内部与当前执行的指令有关
- 资源中断—指令中断
- 如:系统调用时使用访管指令(又称陷入指令,Trap 指令)
- 强迫中断
- 主要有:硬件故障,(如:缺页),或软件中断(如:整数除 0)
- 发生中断意味着需要操作系统的介入
- 用户态切换核心态是通过中断实现。中断也是的唯一途径
- 核心态切换用户态是通过执行一些特权指令,将程序状态字(PSW)的标志位设置为用户态
1.4.2.3 原语
- 原语:底层的一些可被调用的公用小程序,他们各自完成一个规定的操作,是不可分的。
- 最底层
- 原子性:考虑到系统的安全性和便于管理,所以操作时一气呵成的
- 运行时间短
- 调用相对频繁
- 定义原语的方法就是关闭中断,让其他所有的动作不可分割的完成之后再打开中断
1.4.2.4 系统控制的数据结构及处理
2. 进程的描述与控制
2.1 进程的概念
2.1.1 定义
- 不同角度。进程可以有不同的定义,比较经典有:
- 进程是程序的一次执行
- 进程是一个程序及其数据在处理机上顺序执行时所发生的活动
- 进程时具有独立功能的程序,在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。
2.1.2 组成
- 进程是程序控制块(PCB)、程序段、数据段组成的
- 操作系统是通过PCB 来管理进程,因此 PCB 中应包含操作系统对其运行管理啊所需各种信息,如:进程描述信息、进程控制和管理信息、资源分配清单和处理机相关信息。 (如:进程状态和优先级信息就是属于进程描述信息)
- 程序段:程序代码存放的位置
- 数据段:程序运行时使用、产生的运算数据。如:全局变量、局部变量、宏定义的常量就存在数据段中。
- 进程也可以称为:进程实体
2.1.3 组织方式
- 链接方式
- 安装进程状态将 PCB 分为多个队列,操作系统持有指向各个队列的指针
- 就绪队列
- 运行队列
- 阻塞队列
- 安装进程状态将 PCB 分为多个队列,操作系统持有指向各个队列的指针
- 索引方式
- 根据进程的不同状态,建立几张索引表,操作系统持有指向各个索引表的指针
- 就绪队列
- 运行队列
- 阻塞队列
- 根据进程的不同状态,建立几张索引表,操作系统持有指向各个索引表的指针
2.1.4 特征
- 动态性:最基本特征,是程序的一次执行过程,是动态发生的
- 并发性:内存中多个进程实体,各进程可并发执行
- 独立性:能独立运行,独立获取资源,独立接受调度的基本单位
- 异步性:各个进程各自独立,不可预知的速度向前推进,操作系统提供进程同步机制来解决异步问题
- 结构性:每个进程会配置应该 PCB,结构上来看,进程由程序段、数据段和 PCB 组成
[!lol] 有趣 进程的是动态的 程序是静态的,且不具备进程的特征:动态、并发、独立、异步、结构性。
- 程序具有再现性(再现性:不管从一而终还是停停走走都将获得相同的结果)
- 程序具有封闭性(在封闭的环境运行,独占系统的资源,除了初始状态之外,一旦开始执行不受外界影响,只能自己主动改变才会改变。)
2.2 状态与转换
2.2.1 定义
定义:一个进程的生命周期内可以划分为一组状态,这个状态刻画了整个进程。进程状态体现一个进程的生命状态
2.2.2 五个状态
- 创建态:进程在创建时需要申请一个空白的 PCB,向其填写控制和管理进程的信息,完成资源分配,如果创建工作无法完成,比如:资源无法满足,就无法被调度运行,把此时进程所处的状态成为创建态
- 运行态:进程占用 CPU 的资源,并在 CPU 上运行
- 单核时只有一个处于运行态
- 双核时是可以有两个处于运行态
- 就绪态:进程已具备运行条件,但 CPU 资源繁忙还没分配过来
- 阻塞态:又称等待态,它处于等待某件事发生而暂时无法运行
- 当这件事件完成后又会回到就绪态等待 CPU 的服务
- 终止态:又称撤销态,进程结束,或出现错误,或系统被终止,进入终止状态,无法执行
- 撤销这个过程不是一瞬间完成的,操作系统需要把当时创建用到内存资源回收回来
状态之间的转换

- 执行(运行态)——》就绪
(进入就绪态就已经获得除了处理机以外所需资源)
- 进程占用 CPU 过长,CPU 分配资源有限
- 被抢占式优先级抢占 CPU 资源
- 就绪——》运行
- 进程时间片用完,调度到就绪队列,从队列 分配进程给 CPU
- 运行——》阻塞
- 执行的进程等待某个事件而无法执行,比如资源还没轮到
- 阻塞——》就绪
- 进程等待的事件发生了
- 阻塞—到—运行态 不可逆
- 就绪—到—阻塞态 不可逆
- 例如:一个进程的读磁盘结束后(处于堵塞)OS 就会对该进程修改状态为就绪,而不是直接执行。
通过系统调用来申请系统资源,或申请等待某个资源的产生(比如资源没释放,等某个运行结果),这就是 I/O 请求
2.3 进程的通信
2.3.1 概念
概念:就是指进程之间的信息交换 pv 操作是最低级的通信,高级通信方式是指以较高的效率传输大量数据的通信方式
2.3.2 高级通信主要三类
- 共享存储:基于共享数据结构的通信方式,例如:生产者与消费者。其次位基于共享存储区的通信方式,是高级通信方式
- 例如:进程 A 和进程 B,他们不能直接访问对方的进程空间
- 所以我们需要用到共享空间来让两个进程之间相互访问,但是这个方式是互斥的,进程 A 访问 B 进程空间时,B 则不能访问 A
- 例如:共享数据结构里面只能存放长度为 10 的数组,他们每一次的通信就只能传输一个长度 10 的数组,且数据格式有限制的话,会极大降低传输速度
- 数据共享是一种略微低级的通信
- 共享存储区这种传输则不会限制长度,格式,位置等,极大提高传输速度和传输自由,是一种高级通信
- 消息传递:以格式化的消息为单位,利用原语传递消息,分为直接通信和间接通信,原语分两种:
- 一种为发送原语
- 一种为接受原语
- 格式化消息例如:发送消息分为了消息头和消息体
- 直接通信则是直接将消息挂在缓冲队列尾部,然后进程通过接受原语从头依次取走
- 间接通信则相反,是先发送一个中间实体(又称信箱),当需要传送消息时,则直接在信箱里面取走,通过消息头来识别避免出现传输错误
- 管道通信:是传递信息的一种特殊方式,指用于一个连接一个读进程和一个写进程以实现他们之间的共享文件,又称”pipe“文件
- 说白了就是:两进程之间建立了一个管道,但是单管道是单双工的,可以来回发,但是只能单向传输
- 全双工则又建立了一个管道,一个读一个写,但是他们传递时也是互斥的。例:进程 A 写完成后,进程 B 才可以执行读
2.3 线程
2.3.1 引入
- 为了简化进程之间的通信,以最小开销提高进程的并发程度
- 是进程中执行的最小单位,是进程的一个实体,是被系统独立调度和分派的基本单位
- 线程不拥有自己的系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其他线程共享进程所拥有的全部资源
- 一个线程可以创建和撤销另外一个线程,同一个进程中的多个线程之间可以并发执行
2.3.2 概念
概念:作为调度和分派的基本单位
- 进程表示进程的一个控制点,可以执行一系列的指令
- 进程分解为线程,还可以有效利用多处理器和多核计算机
2.3.3 线程和进程的比较
2.3.3.1 进程与线程的区别
- 调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位
- 并发性:进程之间可以并发,同一个进程的多个线程之间也可以
- 拥有资源:进程拥有资源的一个独立单位,线程不拥有系统资源,但是可以访问隶属进程的资源
- 系统开销:在创建或撤销进程时,由于系统都要给他分配和回收资源,导致系统的开销明显大于创建线程的开销
2.3.3.2 进程与线程联系
- 一个线程只属于一个进程,一个进程有多个线程,起码有一个
- 资源分配给进程,同一个进程的线程可以共享该进程的全部资源
- 处理机分配给线程,即真正在处理机上运行的是线程
- 线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。线程是进程内一个执行单元,也是进程内可调度实体
3. 处理机调度
3.1 处理及调度基本概念
- 基本准则:不同调度算法具有不同的特性,选择调度算法时需要考虑算法的特性,为了集中比较处理机调度算法的性能,提出很多评价标准。
- CPU 利用率
- cpu 时计算机最重要和最昂贵的资源之一,所以要物尽其用保持 cpu 处于”忙“的状态,提高资源利用率
- 系统吞吐量
- 表示时间单位内 CPU 完成作业的数量
- 周转时间
- 周转时间就是指作业提交到作业完成所经历的时间,是作业等待,在就绪队列中排队,在处理机上运行以及进行输入/输出操作所需时间的总和
- 作业周转时间:周转时间= 作业完成时间-作业提交时间
- 平均周转时间:平均周转时间=n 个作业的的周转时间/n 个
- 平均带权周转:多个作业带权周转时间的平均值,等于 n 个带权周转时间相加/n 个
- 等待时间
- 指进程处于等待处理机状态的时间之和,等待时间越长,用户满意率越低
- 响应时间
- 指用户提交请求到系统首次产生响应所花费的时间,在交互系统中,周转世纪那不可能是最好的评价准则,一般采用响应时间作为衡量调度算法的主要准则之一
- CPU 利用率
- 三个层次
- 作业调度(高级调度)
- 主要任务是按一定原则从外存中处于后备状态的作业挑选一个或多个作业,给他们分配内存、输入输出设备等必要资源,并建立相应进程,使它们获得竞争处理机的权利
- 这是调入的过程
- 中级调度
- 内存调度,作用是提高内存的利用率和系统吞吐量
- 这是调回的过程,比高级调度频率高
- 进程调度(低级调度)
- 按照某种方法和策略从就绪队列选取一个进程,将处理机分配给它
- 作业调度(高级调度)
- 进程调度方式
指某个进程正在处理机上执行,若有某个重要的进程或紧迫的进程需要处理,即有更高优先级的进程进入就绪,此时则需要考虑如何分配处理机
- 非抢占(非剥夺)调度
- 一个进程正在处理机上运行,就算有更加紧迫或又优先级很高的进程进入就绪,也不会立刻让出处理机,而是等待当前进程完成
- 抢占式(剥夺)调度
- 一个进程正在处理机上运行,有高优先级或紧迫的进程进入就绪,立刻让出处理机,抢占当前资源,即使正在执行的进程
- 非抢占(非剥夺)调度
3.2 先来先服务算法
- First come first server 即为:FCFS
- 按照作业/进程到达的先后顺序进行调度。
- 缺点:对长作业有利,短作业反之
- 优点:实现简单
- 适用于作业调度和进程调度
3.3 短作业优先
- Short job first 即为:SJF
- 按照作业的长短来计算优先级,作业越短优先级越高
- 适用于作业调度和进程调度
- 优点:最短平均等待时间以及平均周转时间
- 缺点:必须要先知道作业运行时间,对长作业不利,会出现饥饿现象,没有考虑作业的紧迫程度
喜欢的话,留下你的评论吧~