操作系统引论
操作系统定义
操作系统是一组控制和管理计算机软硬件资源、合理地对各类作业进行调度以及方便用户使用的程序集合。
操作系统是位于硬件层之上,所有其它系统软件层之下的一个系统软件,使得管理系统中的各种软件和硬件资源得以充分利用,方便用户使用计算机系统。
操作系统的目标
- 方便性
- 有效性
- 开放性
- 可扩充性
操作系统的作用
- 用户与计算机硬件系统之间的接口处理机
- 计算机资源的管理者
- 扩充裸机资源的软件
- 计算机工作流程的组织者
无操作系统时的计算机系统
- 人工操作方式
特点:无任何软件、独占性、串行性
缺点:用户独占全机,CPU等待人工操作
待解决的问题:人机矛盾,CPU和I/O设备速度不匹配
解决:脱机I/O、批处理 - 脱机输入输出方式
解决了CPU和设备之间不匹配的矛盾
单道批处理系统
在内存中仅存一道作业运行,运行结束 或出错,才自动调另一道作业运行
- 自动性
- 顺序性
- 单道性
优点:减少人工操作,解决了作业的自动接续
缺点:平均周转时间长,没有交互能力
多道批处理系统
在内存中存放多道作业运行,运行结束或出错,自动调度内存中的另一道作业运行
- 多道性
- 调度性
- 无序性
优点:提高了CPU的利用率,提高内存和I/O设备利用率,增加系统吞吐率
缺点:平均周转时间长,没有交互能力
分时系统
- 多路性
- 独立性
- 及时性
- 交互性
产生原因:用户需要人机交互、共享主机,便于用户上机
实现方法:简单分时系统,前后台分时系统,多道分时系统
实时系统
计算机及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时设备和实时任务协调一致的运行
- 多路性
- 独立性
- 及时性
- 交互性
- 可靠性
操作系统的基本特征
- 并发(最重要的特征)
- 共享(和并发同为操作系统最基本的特征,二者互为存在的条件)
- 虚拟(以并发和共享为前提)
- 异步(并发和共享的必然结果)
操作系统的功能
- 处理机管理
- 存储器管理
- 文件管理
- 设备管理
- 提供友好的用户接口
处理机管理
主要是对处理机的分配和运行进行管理
- 进程控制
- 进程同步
- 进程通信:共享存储器、消息、管道等。
- 进程调度
存储器管理
主要是对多道程序的运行提供良好的环境
- 内存分配
- 内存保护
- 地址映射
- 内存扩充
设备管理
主要是完成用户的I/O请求
- 缓冲管理
- 设备分配
- 设备处理
文件管理
主要是使用户能方便、安全地使用各种信息资源
- 文件存储空间的管理
- 目录管理
- 文件的读写管理和保护
提供友好的用户接口
主要是方便用户使用计算机
- 命令接口
- 程序接口
- 图形用户接口
操作系统的结构设计
- 整体式系统(无结构操作系统)
缺陷:① 设计出的操作系统既庞大又杂乱,缺乏清晰的程序结构。 ② 编制出的程序错误很多,给调试工作带来很多困难;增加了维护人员的负担 - 模块化结构
优点:① 提高了OS设计的正确性、可理解性和可维护性。② 增强了0S的可适应性。 ③ 加速了OS的开发过程。
缺点:① 对模块的划分及对接口的规定要精确描很困难 。 ② 从功能观点来划分模块时,未能将共享资源和独占资源加以区别; - 分层式结构
每一层实现一组基本概念及其相关的基本属性,各层实现不依赖其以上各层所提供的概念及其属性,只依赖其直接下层所提供的概念及属性,每一层对其上各层隐藏其下各层的存在 - 微内核结构
优点:① 增强了系统的可扩展性 ② 增强了系统的可靠性,可移植性好 ③ 提供了对分布式系统的支持
缺点:运行效率有所降低(消息传递开销+模式切换开销)
进程管理
程序的顺序执行
- 顺序性
- 封闭性
- 可再现性
程序的并发执行
- 间断性
- 失去封闭性
- 不可再现性
应用级并发是指若干应用程序的并发执行。
系统级并发是指操作系统自身软件的并发执行。
进程
引入进程的目的是为了使程序正确地并发执行
特征:
1. 结构特征
2. 动态性(基本特征)(程序是静态的)
3. 并发性
4. 独立性
5. 异步性
定义:
进程是进程实体的运行过程,它是系统进行资源分配和调度的一个独立单位。
为使程序(含数据)能独立运行,应为之配置一个专门的数据结构即进程控制块(PCB)
由程序段、相关的数据段和PCB三部分便构成了进程实体
创建进程 ,实质上是创建进程实体中的PCB;撤消进程 ,实质上是撤消进程的PCB
进程状态
- 就绪
- 执行
- 阻塞
- 挂起
进程状态转换
就绪 - 运行:进程调度
运行 - 就绪:高优先级任务抢占,时间片用完
运行 - 阻塞:I/O请求,等待资源/事件
阻塞 - 就绪:I/O完成,得到资源/触发事件
阻塞 - 挂起:终端用户请求,父进程请求,负荷调节需要,操作系统需要
挂起 - 就绪:激活原语
特殊状态:
静止就绪,静止阻塞(上述的挂起)。
活动就绪/执行挂起得到静止就绪,静止就绪通过激活原语得到活动就绪。
静止阻塞通过激活原语得到活动阻塞,静止阻塞通过释放得到静止就绪。
状态转换
进程控制块
为使程序(含数据)能独立运行,应为之配置一个专门的数据结构即进程控制块(PCB)
PCB是进程存在的唯一标志
通常包含下列信息:
1. 进程标识符:内部标识符,外部标识符
2. 处理机状态:通用寄存器、PC、PSW、SP
3. 进程调度和控制信息
PCB的常用组织形式:线性方式、链接方式和索引方式。
进程同步
基本概念
- 临界资源:一次仅允许一个进程访问的资源
- 临界区:访问临界资源的那段代码
用来实现互斥的同步机制的准则
- 空闲让进
- 忙则等待
- 有限等待
- 让权等待
实现机制
- 信号量机制
- 管程
信号量机制
类型:
1. 整型信号量
2. 记录型信号量
3. AND型信号量(要么全部分配到进程,要么一个也不分配)
4. 信号量集(在每次分配时,采用信号量集来控制,可以分配多个单位的资源)
应用:
1. 用于实现前趋关系
2. 用于实现互斥
管程
管程是由一组局部的变量对局部变量进行操作的一组过程以及对局部变量进行初始化的语句序列构成的一个软件模块,它可用来实现进程同步。
进程通信
- 低级通信:进程之间的互斥和同步,由于其所交换的信息量少而被归结为低级通信
- 高级通信:是指用户可直接利用操作系统所 提供的一组通信命令高效地传送大量数据的 一种通信方式
进程通信的类型
常用的高级进程通信机制:
1. 共享存储器系统
(基于共享数据结构/共享存储区)
2. 消息传递系统
直接通信方式:对称寻址方式,非对称寻址方式
间接通信方式:信箱,消息缓冲队列通信机制
3. 管道通信
4. 客户机–服务器系统
套接字,远程过程调用和远程方法调用
线程
进程的两个特点:资源所有权,调度/执行。调度和分派的部分通常称为线程或轻便进程,而资源所有权的部分通常称为进程。
属性:
1. 轻型实体
2. 独立调度和分派的基本单位
3. 可并发执行
4. 共享进程资源
多线程OS中的进程属性:(1) 作为系统资源分配的单位。 (2) 可包括多个线程。 (3) 进程不是一个可执行的实体。
分类:
1. 用户级线程,用户级线程在用户空间实现,无需得到内核的支持,调度算法由线程库提供。
2. 内核支持线程,内核支持线程的TCB被它的保存在核心空间中,它的运行需获得内核的支持。
3. (用户级线程和核心级线程的结合,LWP)
内核支持线程
即无论 是用户进程中的线程,还是系统进程中的线程,他们 的创建、撤消和切换等,是依靠内核实现的。
在内核空间中为每一个内核支持线程设置了一个线 程控制块TCB,内核是根据该控制块而感知某线程的 存在的,并对其加以控制
优点
(1) 在多处理器系统中,内核能够同时调度同一进程中多 个线程并行执行;
(2) 如果进程中的一个线程被阻塞了,内核可以调度该进 程中的其它线程占有处理器运行,也可以运行其它进程 中的线程;
(4) 内核本身也可以采用多线程技术,可以提高系统的执 行速度和效率。
缺点
对于线程切换而言,其模式切换的开销较大,在同一个进程中,从一个线程切换到另一个线程时 ,需要从用户态转到内核态进行,这是因为用户进程的线程在用户态运行,而线程调度和管理是 在内核实现的,系统开销较大。
实现
在仅设置了内核支持线程的OS中,一种可能的线程控制方法是,系统在创建一个新进程时,便为它分配 一个任务数据区PTDA(Per Task Data area),其中包括若干个线程控制块TCB空间
用户级线程
用户级线程仅存在于用户空间中。对于这种线程的创建、撤消、线程之间的同步与通信等功能,都无须内核来实现。
- 由应用程序完成所有线程的管理
通过线程库(用户空间):一组管理线程的函数线程库来 提供一个线程运行管理系统(运行系统) - 内核不知道线程的存在
- 线程切换不需要核心态特权
- 调度算法可以是进程专用的
优点
线程切换不调用内核
调度是应用程序特定的:可以选择最好的算法
可运行在任何操作系统上(只需要线程库),可以在一 个不支持线程的OS上实现
缺点
大多数系统调用会引起进程阻塞,并且是进程中所有线 程将被阻塞
内核只将处理器分配给进程,同一进程中的两个线程不 能同时运行于两个处理器上
实现
所有用户级线程都具有相同的数据结构,它们都运行在一个中间系统上
(1)运行时系统
是用于管理和控制线程的函数的集合,又称为线程库。
(2)内核控制线程
线程的同步
这种线程又称为轻型进程LWP(Light Weight Process )
1. 互斥锁
2. 条件变量
3. 信号量机制
使用线程的优点
- 在一个已有进 程 中 创 建 一 个 新 线 程 比 创 建 一 个全新进程所需的时间少。
- 终止一个线程比终止一个进程花费的时间少 。
- 线程间切换比进程间切换花费的时间少。
- 线程提高了不同的执行程序间通信的效率 。同一个进程中的 线程共享存储空间和文件,它们无需调用内核就可以互相通信。
进程同步经典问题
处理机调度和死锁
调度的目标:
1、提高处理机的利用率
2、提高系统吞吐量
3、尽量减少进程的响应时间
4、防止进程长期得不到运行
调度方式和算法的选择,取决于操作系统的类型及其目标。
选择准则(面向系统):
1. 系统吞吐量
2. 处理机利用率
3. 各类资源的平衡利用
选择准则(面向用户):
1. 周转时间
2. 响应时间
3. 截止时间的保证
4. 优先权原则
三级调度
高级调度
又称为作业调度或长程调度,作业(JOB)是用户在一次算题过程中或一次事务处理中,要求计算机系统所做的工作的集合 。
批处理系统需要有作业调度,分时和实时系统无需此调度
多道程序度:即允许多少个作业同时在内存中运行。
周转时间:从作业被提交给系统开始,到作业完成为 止的这段时间间隔。
吞吐量:是指在单位时间内系统所完成的作业数
中级调度
它按一定的算法将外存中已具备运行条件的进程换入内存,而将内存中某些处于阻塞状态的某些进程换出至外存(阻塞->挂起)。
中级调度的目的是为了解决内存紧张问题。
低级调度
又称为进程调度或短程调度。是最基本的调度,在三种类型的操作系统中都必须配置它。(批处理、分时和实时)
分为:
1. 非抢占方式
2. 抢占方式,原则:1)优先权原则 2)短作业优先原则 3)时间片原则
三个基本原则:
(1)排队器
(2)分派器(调度程序)
(3)上下文切换机制
低级调度的功能:
(1)按某种算法选取进程(调度)。
(2)保存处理机的现场信息(上下文切换第一步骤)
(3) 把处理器分配给进程(上下文切换第二步骤)
调度算法
先来先服务-FCFS
按照作业/进程进入系统的先后次序,遵循先进入系统者先调度。
优点:
1. 有利于长作业/进程
2. 有利于CPU繁忙型作业/进程
缺点:
1. 不利于短作业/进程,尤其是来的较晚的短作业/进程
2. 不利于I/O繁忙型作业/进程
用于批处理系统,不适于分时系统
短作业/进程优先算法-SJF/SPF
按照运行时间长短进行调度,运行时间越短越优先调度。不可抢占。
优点:
1. 能有效降低作业/进程的平均等待时间
2. 提高系统的吞吐量
缺点:
1. 不利于长作业/进程
2. 未考虑作业/进程紧迫程度,不能保证紧迫作业/进程被及时处理
3. 运行时间无法准确估计,不能真正保证短作业/进程优先
4. 无法实现人机交互
高优先权优先算法-HPF
分类:
1. 静态优先权,简单易行,开销小,但是不够精确,还可能导致低优先权作业/进程长期得不到调度
2. 动态优先权,更好的调度性能,可防止长作业/进程长期垄断处理机
高响应比优先调度算法-HRRN
响应比/优先权=等待时间+要求服务时间要