计算机操作系统
1 操作系统概论
❀ 定义:
操作系统是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充,用于控制和管理计算机硬件和软件资源,合理地对各类作业进行调度,提高计算机的利用率和系统吞吐量,为用户和应用程序提供一个简单的接口,便于用户使用。
❀目标:方便性、有效性、可扩充性、开放性
❀作用:
① OS作为用户与计算机硬件系统之间的接口
② OS作为计算机系统资源的管理者
③ OS实现了对计算机资源的抽象
❀推动操作系统发展的主要动力:
① 不断提高计算机资源利用率
② 方便用户
③ 器件的不断更新换代
④ 计算机体系接口的不断发展
⑤ 不断提出新的应用需求
❀ 操作系统的发展过程:
① 人工操作(严重降低极计算机资源的利用率,此所谓人机矛盾)
② 脱机输入输出(减少CPU空闲时间,提高I/O速度)
脱机:脱离主机下进行输入输出
联机:主机直接控制输入输出
③ 单道批处理系统(系统中配上监督程序,使作业一个接一个执行)
缺点:系统的资源得不到充分利用
④ 多道批处理系统(系统中配上作业调度程序,按一定算法从外存中的作业队列择若干个作业调入内存,使作业交替运行)
优点:资源利用率高、系统吞吐量大
缺点:平均周转时间长、无交互能力
⑤ 分时系统(满足人机交互、共享主机的需求)
面临的关键问题及解决方法:
1、及时接受:在系统中配上多路卡,实现分时多路复用
2、及时处理:所有作业直接调入内存,采用轮转运行方式
⑥ 实时系统(系统能及时响应外部事件的请求,在规定时间内完成对改时间的处理,并控制所有实时任务协调一致地运行)
实时任务的类型:
1、硬实时:系统必须满足任务对截止时间的需求
2、软实时:对截至时间不严格,偶尔错过影响不大
实时系统和分时系统特征的比较
1、多路性
2、独立性
3、及时性
4、交互性
5、可靠性
❀ 操作系统的基本特点:
① 并发(最重要的特征):多个程序一段时间内同时运行
并行:两个或多个事件在同一时刻发生
并发:两个或多个事件在同一时间间隔内发生
② 共享:系统中的资源可供多个并发执行的程序共同使用
实现资源共享的方式
1、同时访问方式:
2、互斥共享方式:
临界资源:在一段时间内只允许一个进程访问的资源称为临界资源或独占资源
并发和共享是多用户(任务)OS的两个最基本的特征,它们互为存在条件,一方面资源共享以进程并发为条件,另一方面若OS不能对资源共享实施有效管理,以协调好诸进程度共享资源的访问,也必然会影响到诸进程的并发执行程度
③ 虚拟(将物理实体变成若干个逻辑上的对应物)
④ 异步(进程是以人们不可预知的速度向前推进的)
2 进程的描述和控制
2.1 前趋图:
❀用于描述程序先后执行顺序的有向无循环图
2.2 程序执行
① 顺序执行:顺序性、封闭性、可再现性
② 并发执行:间断性、失去封闭性、不可再现性
2.3 进程的描述
❀ 进程的定义(不同的角度有不同的定义):
① 进程是程序的一次执行
② 进程是一个程序及其数据在处理机上顺序执行时所发生的活动
③ 进程是具有独立功能的程序在一个数据集上运行的过程,是系统进行资源分配和调度的一个独立单位
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位
❀ 进程的特征:
① 动态性(最基本):它由创建而产生,由调度而执行,由撤销而消亡”
② 并发性:程序能和其他进程的程序并发执行
③ 独立性:进程是一个能独立运行、独立分配资源和独立调度的基本单位。各进程的地址空间相互独立
④ 异步性:进程按各自独立的、不可预知的速度向前推进
2.4 进程的基本状态:
创建状态:进程在创建时需要申请一个空白PCB,向其中填写控制和管理进程的信息,完成资源分配。
就绪状态:进程已经准备好,已分配到除CPU外的所有必要资源
执行状态:进程处于就绪状态被调度后获得CPU,进入执行状态
阻塞状态:正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时无法运行,进程受到阻塞。
终止状态:进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行
2.5 进程的挂起和激活
1.进程的挂起
当出现了引起进程挂起的事件时(比如,用户进程请求将自己挂起,或父进程请求挂起某子进程)。
挂起原语suspend( )的执行过程是:
•首先检查被挂起进程的状态并进行相应操作(执行态、活动就绪 - 静止就绪; 活动阻塞 - 静止阻塞)。
•为便于用户或父进程考查该进程的运行情况,把该进程的PCB复制到某指定的内存区域。
•最后,若被挂起的进程正在执行,则转向调度程序重新调度,从而将处理机重新分配。
2.进程的激活过程
当发生激活进程的事件时(如父进程或用户进程请求激活指定进程)
激活原语active( )激活过程:
•激活原语将进程从外存调入内存
•检查该进程的现行状态并进行相应操作(静止就绪-活动就绪; 静止阻塞 - 活动阻塞)。假如采用的是抢占调度策略,则每当有新进程进入就绪队列时,检查是否要进行重新调度,即比较被激活进程与当前进程的优先级,决定处理机归属。
2.6 进程控制块
❀ 作用:
① 作为独立运行基本单位的标识
② 能实现间断性运行方式
③ 提供进程管理所需要的信息
④ 提供进程调度所需要的信息
⑤ 实现与其他进程的同步与通信
❀ 内容:
① 进程标识符
② 处理机状态
③ 进程调度信息
④ 进程控制信息
2.7 进程同步
❀ 进程同步是对多个相关进程在执行次序上进行协调,使并发的诸进程之间能按照一点的规则(时序)共享系统资源,并能很好的相互合作,从而使程序的执行具有可再现性。
❀ 进程同步的规则:
① 空闲让进:临界资源处于空闲状态时,应允许一个请求进程进入
② 忙着等待:临界资源被访问时,其他进程等待
③ 有限等待:对请求访问临界资源的进程,应保证在有限时间内能进入自己的临界区,以免陷入“死等”状态
④ 让权等待:对要求访问临界资源的进程,应保证在有限时间内能进入自己的临界区,以免陷入“死等”状态
3 处理机调度与死锁
3.1 处理机调度的层次
① 高级调度(长程调度/作业调度):根据某种算法决定将外存中的某几个作业调入内存,为他们创建进程分配资源,放入就绪队列
② 低级调度(短程调度/进程调度):根据某种算法决定将就绪队列中的某个进程获得处理及,为他们创建进程分配资源,放入就绪队列
③ 中级调度(中程调度/内存调度):把哪些暂时不能运行的进程调至外存等待或把外存上已具备运行条件的就绪程序重新调入内存
3.2 处理机调度算法的目标
❀ 处理调度算法的共同目标:
① 资源利用率
② 公平性
③ 平衡性
④ 策略强制执行
❀ 批处理系统的目标:
① 平均周转时间短
② 系统吞吐量高
③ 处理机利用率高
❀ 周转时间:作业完成时刻-作业到达时刻
❀ 带权周转时间:周转时间/服务时间
❀ 平均周转时间:作业总周转时间/作业数
❀ 平均带权周转时间:作业总带权周转时间/作业数
❀ 分时系统的目标:
① 响应时间快
② 均衡性
❀ 实时系统的目标:
① 截止时间的保证
② 可预测性
3.3 处理机调度算法
❀ 先来先服务调度算法(FCFS):等待时间越久,优先级越高
基本的调度算法,既可用于作业调度也可用于进程调度。很少作为主调度算法,常与其他调度算法结合
比较有利于长作业进程,而不利于短作业进程
❀ 短作业优先调度算法(SJF):作业越短(运行时间短),优先级越高
较FCFS有明显改进,但仍存在缺点:
① 必须预知作业运行时间
② 对长作业非常不利
③ 人机无法实现交互
④ 未考虑作业的紧迫成都
❀ 优先级调度算法(PSA):基于作业紧迫程度,由外部赋予作业优先级
❀ 高响应比优先调度算法(HRRN):响应比越高,优先级越高
响应比=响应时间/要求服务时间=(等待时间+要求服务时间)/ 要求服务时间
3.4 死锁
❀ 死锁的定义:由于进程竞争资源或进程推进顺序不当导致一组进程中的所有进程都在等待仅由该组进程的其他的进程才能引发的事件,那么该组进程是死锁的
❀ 产生死锁的必要条件:
① 互斥条件
② 请求和保持条件
③ 不可抢占条件
④ 循环等待条件
❀ 处理死锁的方法:
① 预防死锁:通过设置某些限制条件去破坏产生死锁的必要条件
② 避免死锁:在资源的动态分配过程中,用某种方法防止系统进入不安全状态
③ 检测死锁:通过检测机构及时得检测出死锁的发生,然后采取适当措施,把进程从死锁中解脱出来
安全状态:系统能按照某种进程推进顺序(称为安全序列)为每个进程分配其所需资源,直至满足每个进程对资源的最大需求,则系统不会进入死锁状态。不按照安全序列分配资源则系统有可能由安全状态进入不安全状态。
不安全状态:系统无法找到安全序列,则有可能进入死锁状态。
利用银行家算法避免死锁:
a. 可利用资源向量Available,描述系统各种剩余可用资源的数目
b. 最大需求矩阵Max,描述各个进程对各个资源的最大需要求
c. 分配矩阵Allocation,描述各个资源已分配给个进程的资源数
d. 需求矩阵Need, 描述各进程尚需的各类资源数
e. 请求向量Request,描述进程Pi对各资源的请求数
当进程Pi发出资源请求Request,要求:
1.R[j]<=Need[i,j]
2.R[j]<=Available[i,j]
3.试分配Available[i]= Available[i] - R
Allocation[i]= Allocation[i] + R
Need[i]= Need[i]-R
4.执行安全性算法检测分配后是否处于安全状态,安全则分配:
a.工作向量work,描述系统各种剩余可用资源的数目,初值为Available
b.向量finish,表示系统是否尚有足够的资源分配给进程,初值全为false
1.找到finish[i]=false&&need[i]
④ 解除死锁:常用的方法是是撤销一些进程,回收他们的资源,将他们分配给已处于阻塞状态的进程,使其能继续运行
4 存储器管理
4.1 连续分配存储管理方式
❀ 单一连续分配
内存被分成两个区域,一个是系统区域,仅供操作系统使用,可以驻留在内存的低地址部分,也可以驻留在高地址部分(通常设置在内存的低端);另一个是用户区,它是除系统区以外的全部内存区域,这部分区域是提供给用户使用的区域,任何时刻主存储器中最多只有一个作业。所以,单一连续区存储管理只适用于单用户、单任务操作系统。
❀ 固定分区分配
将用户空间划分为若干个大小固定的区域,在每个分区中只装入一道作业。适用于多道程序系统。
划分分区的方法:
①分区大小相等:缺乏灵活性,但在控制多个相同对象的场合下就比较方便和实用
②分区大小不等:灵活分配
❀ 内存分配:通常将分区按其大小进行排队,并为之建立一张分区使用表,包括起始地址、大小、状态(分配与否)等信息
❀ 动态分区分配(可变分区分配)
为实现动态分区,系统中需配置相应的数据结构用以描述空闲分区和已分配分区:
①空闲分区表
②空闲分区链
❀ 动态分区分配算法:
① 基于顺序搜索的动态分区分配算法
1. 首次适应算法(first fit , ff):从链首开始顺序查找,直至找到第一个能放得下的空闲分区分配,多余部分仍留在空闲链中
缺点:碎片多,查找可用空闲分区开销大
2. 循环首次适应算法(next fit , nf):从上次找到的空闲分区的下一个空闲分区开始查找,直至找到第一个能放得下的空闲分区分配,多余部分仍留在空闲链中
缺点:缺乏大的空闲分区
3. 最佳适应算法(best fit , bf):要求空闲分区按容量从大到小形成空闲分区链,每次取能满足的最小的空闲分区。
缺点:会留下许多难以利用的小碎片
4. 最坏适应算法(worst fit , wf):要求空闲分区按容量从小到大形成空闲分区链,每次取能满足的最大的空闲分区分区。
优点:查找效率高,小碎片少,利于中小作业
② 基于搜索索引的动态分区分配算法
❀ 分区分配操作:
① 分配内存:请求分区比空闲分区小的不多就分配整个分区,否则按请求大小切割出一块,剩余的仍留在空闲分区链中
② 回收内存:回收的内存区前后有邻接空闲分区,则合并,首地址取前面分区的地址,更改空闲分区的大小,无邻接空闲分区则单独建立一个新表项
❀ 动态可重定位分区分配
4.3 分页存储管理方式
❀ 分页存储管理的基本方法
① 页面:将进程的逻辑地址空间分为若干个页
② 物理块:内存的物理地址分为若干个块
把若干个页分别装入可以不相邻的物理块中
③ 地址结构: 前一部分为页号,后一部分为页面大小
④ 页表:系统为每个进程建立一张页面映射表,实现页号到物理块号的地址映射
❀ 地址变换机构
① 基本的地址变换机构
② 具有快表的地址变换机构
4.4 分段存储管理方式
4.5 段页存储管理方式
5 虚拟存储器
5.1 虚拟存储器概述
❀ 虚拟存储器的定义:
虚拟存储器是指带有请求调入和置换功能,能从逻辑上对内存加以扩充的存储器系统。其逻辑容量由内存和外存总和所决定,其运行速度接近于内存速度,而每位的成本又接近于外存
❀ 虚拟存储器的特征:
①多次性(最重要):指一个作业的程序和数据无需在作业运行时一次性全部装入内存,可分多次调入内存运行,只将正在运行的调入
②对换性:作业中的程序和数据在程序运行时无需常驻内存,允许在作业运行过程中进行环进换出
③虚拟性:(最重要,以多次和对换为基础):能从逻辑上扩充内存容量,使小内存可运行大作业,提高多道程序度,增加系统吞吐量,改善内存利用率
❀ 虚拟存储器的实现方式
① 分页请求系统
1.硬件支持:
请求分页的页表机制
缺页中断机构
地址变换机构
2.软件支持:
请求调页软件
页面置换软件
② 请求分段系统
5.2 请求分页存储管理方式
5.3 页面置换算法
❀ 缺页率 = 访问失败次数/访问的总次数
❀ 最佳置换算法:换出在最长(未来)时间内不再被访问的页面
❀ 先进先出页面置换算法:换出最先进入内存的页面
❀ LRU(Least Recently Used)置换算法:换出最近最久未使用的页面
6 输入输出系统
6.2 I/O设备和设备控制器
❀ I/O设备的类型
按共享属性分:独占设备、共享设备
按使用特性分:存储设备、I/O设备
按传输速率分:高速设备、中速共享设备、低速共享设备
I/O通道
❀ 通道的定义:I/O通道是一种特殊的处理机,具有执行I/O指令的能力,并通过执行通道程序来控制I/O操作,从而使一些原来由CPU处理的I/O任务转由通道来承担,把CPU从繁重的I/O人去中解脱出来。
通道的类型:
❀ 通道的“瓶颈”问题:通道价格昂贵,机器中的通道数量少,造成整个系统的吞吐量减少
解决的有效方法是增加设备到主机间的通路而不是通道,即一个设备连多个控制器,一个控制器连多个通道
7 文件管理
7.1 文件类型
❀ 按用途分类
① 系统文件
② 用户文件
③ 库文件
❀ 按文件中数据的形式分类
① 源文件
② 目标文件
③ 可执行文件
❀ 按存取控制属性分类
① 只执行文件
② 只读文件
③ 读写文件
❀ 按组织形式和处理方式分类
① 普通文件
② 特殊文件
③ 目录文件
7.2 文件的逻辑结构
文件的逻辑结构是指从用户的角度出发所观察到的文件逻辑组织
文件的物理结构是指外存上文件的存储组织形式
8 磁盘存储器的管理
❀ 文件的存储空间管理方法
① 空闲表法
② 空闲链表法
③ 位示图法
④ 成组链接法
8.2 磁盘高速缓存(Disk Cache)
❀ 在内存中为磁盘盘块设置一个缓冲区,在缓冲区中保存了某些盘块的副本
❀ 磁盘调度算法
① 最近最久未使用算法(LRU)
② 最近未使用算法(NBR)
③ 最少使用算法(LFU)