计算机操作系统
计算机操作系统. 第一章 操作系统引论 第二章 作业界面管理 第三章 文件管理 第四章 存储管理 第五章 设备管理 第六章 进程及处理机管理 第七章 操作系统结构和程序实现. 第六章 进程及处理机管理. 第一节 概述 第二节 进程的定义和特征 第三节 进程调度 第四节 进程通信 第五节 死锁. 概述. 进程与操作系统关系:五大功能之一 操作系统的 核心功能 及 特点 为什么要引入“进程”的概念. 进程与 O.S 关系:五大功能之一. 高级(宏)处理机管理:即作业调度,确定系统中哪些作业将获得 CPU
计算机操作系统
E N D
Presentation Transcript
计算机操作系统 • 第一章 操作系统引论 • 第二章 作业界面管理 • 第三章 文件管理 • 第四章 存储管理 • 第五章 设备管理 • 第六章 进程及处理机管理 • 第七章 操作系统结构和程序实现
第六章 进程及处理机管理 • 第一节概述 • 第二节 进程的定义和特征 • 第三节 进程调度 • 第四节 进程通信 • 第五节 死锁
概述 • 进程与操作系统关系:五大功能之一 • 操作系统的核心功能及特点 • 为什么要引入“进程”的概念
进程与O.S关系:五大功能之一 • 高级(宏)处理机管理:即作业调度,确定系统中哪些作业将获得CPU • 低级(微)处理机管理:即进程调度,确定系统中哪个作业的哪个进程将获得CPU
操作系统核心功能 • 调度进程:决定哪个进程运行、挂起、交换等; • 分配内存:哪个进程得到内存; • 管理和控制文件系统:检查“许可证”、修改目录、路径等; • 处理系统调用:由用户的进程发“请求”,系统根据资源的充分利用,统筹按排; • 处理输入输出的请求和工作。
常驻内存 不是一个顺序程序,是一个“有头无尾”的程序模块装配而成,是一组服务功能的集合. 主要通过表格组合,并发协调进行(系统态,用户态) 操作系统核心的特点
为什么要引入“进程”的概念 • 关键是“共享资源”引起的 • 近代操作系统编程设计的一种新概念 • 手编---符号---高级语言---进程,线程 • 顺序执行与并发执行的区别?
顺序执行与并发执行的区别 顺序执行: 并发执行: 程序具有封闭性 程序失去封闭性 独享资源 共享资源(互为存在条件) 可再现性 程序与“计算”不再一一对应 有相互制约
第六章 进程及处理机管理 • 第一节 概述 • 第二节进程的定义和特征 • 第三节 进程调度 • 第四节 进程通信 • 第五节 死锁
进程的定义及特征(1) • 进程:进程是OS 动态分配和执行的基本单元(构件)。操作系统的五大功能是由许多进程组合完成的。 • 程序和进程的区别 • 进程的五个基本特征
进程的定义及特征(2) • 在任务执行过程中切割成独立的单元,涉及到进程(Process)的组成内容、任务激活(Active)以及线程(Thread)。 • 线程是近年来由“进程”发展而来,一般定义为程序执行中单个顺序的流控制,比进程优越之处是执行中占有相同的内存空间。在现代操作系统中,进程是分配单元,而线程是执行单元。
进程的五个基本特征 • 动态性:进程是程序在并发系统内的一次执行,一个进程有一个从产生到消失的生命期; • 并发性:正是为了描述程序在并发系统内执行的动态特性才引入了进程,没有并发就没有进程; • 独立性:每个进程的程序都是相对独立的顺序程序,可以按照自己的方向和速度独立地向前推进; • 制约性:进程之间的相互制约,主要表现在互斥地使用资源和相关进程之间必要的同步和通讯; • 结构性:进程 = PCB + 程序 + 数据集合。
程序 进程 ●静态的指令序列 ●动态的程序执行过程 ●一程序可对应 ●一个进程对应至少有 多个进程 一个程序在工作 ●永久性软件资源 ●暂存资源,动态生之过程 程序和进程的区别
第六章 进程及处理机管理 • 第一节 概述 • 第二节 进程的定义和特征 • 第三节进程调度 • 第四节 进程通信 • 第五节 死锁
进程调度 • 进程描述分三部分 • 进程的三个基本状态及转换 • 进程调度算法举例
进程描述分三部分 • 进程对应的程序:进程的算法描述 • 数据集合:数据部分,工作区 • 进程控制表(PCB):是操作系统对CPU进行控制的依据
进程的三个基本状态及转换 等待 得到资源 资源不足 准备 完成 提交进入 执行 时间片到 调度选中进入
等待 静止 阻塞 活动 阻塞 得到资源 资源不足 准备 完成 提交进入 时间片到 执行 活动 就绪 静止 就绪 调度选中进入
进程的状态及转换 页面阻塞 I/O阻塞 盘带阻塞 队列:高优先级队列:中优先级队列:低优先级 得到资源 资源不足 时间片到 完成 提交进入 执行 调度选中进入
进程调度算法举例 • 先来先服务(FCFS) • 优先数法(Priority) • 按进程类型(系统/用户;联机/脱机;交互/批量) • 按资源要求(时间、占内存大小、多道分配) • 动态优先(占CPU及内存时间) • 时间片轮转,轮转循环调度(Time Slice)
第六章 进程及处理机管理 • 第一节 概述 • 第二节 进程的定义和特征 • 第三节 进程调度 • 第四节进程通信 • 第五节 死锁
进程通信 • 同步与互斥 • 临界区的概念 • 原语的概念
同步 • 进程—进程 • 时间次序上受到某种限制 • 相互清楚对方的存在及其作用,交換信息 • 往往指有几个进程共同完成一个任务 • 举例:生产者与消費者之间,发送者与接收者之间,写者与读者之间,供者与用者之间
互斥 • 进程—资源—进程 • 竞争到某一物理资源时不允许其它进程工作 • 相互之间不一定清楚其它进程情况 • 往往指多个任务多个进程间通讯制约故更广泛 • 举例:交通十字路口,单轨火車的拨道岔,窄桥相对通行问题等
临界区 • 一个进程对公共变量(或单位共享资源量)部分的操作,每次只准一个进程进入临界区,进入后不允许其它进程进入。例如,计算机中的打印机是互斥资源,它只能“停停打打”而不能中途去打印另一任务。
临界区管理:①一次只准一个进程进入临界区 ②本进程结束负责通知下一进程 ③进程调度,不能阻塞临界区管理:①一次只准一个进程进入临界区 ②本进程结束负责通知下一进程 ③进程调度,不能阻塞 A进程 B进程 分配表被封锁否? 分配表被封锁否? 对B进程封锁分配表 对A进程封锁分配表 分配资源(例如打印机) 分配工作、结束后释放资源 撤消对B进程封锁 撤消对A进程封锁 等 等
原语 • 原语本身不是一条机器指令而是由若干条指令组成,因此可理解为机器指令的扩充。在对进程的管理中完成某种特定功能,为进程有效管理提供的若干基本操作。一般在执行中一次完成不能被打断,因此设计的原语不能太长。
(一)加锁/开锁(LOCK/UNLOCK)原语 共享资源,设置一锁位: w = 0 设共享资源可用;w = 1 设共享资源不可用 LOCK(w) L:if w=0 then w:=1 else go to L: UNLOCK(w) w:=0
锁原语:优点是实现互斥简单;缺点是效率很低锁原语:优点是实现互斥简单;缺点是效率很低 N W = 0 ? 访问临界区 Y W:=1 退出临界区
(二)信号灯(量)(Semaphore)及P-V操作 1. P、V操作是同步原语,即在执行期间有时间制约关系,不可分割 2. 用S信号灯指示一进程工作 3. <信号量> = <S,Q> S是初始值非负的整数变量,不是二元变量(0/1),代表资源数; Q是初始为空的队列
P操作原语(荷兰语的发信号)P(S): ①P操作一次,S-1 (一次P操作,请求分配一资源, S := S-1) ②S ≥0 表示有资源,当前进程可执行 ③S<0 无资源,则当前进程进入Q队列的队尾等待,等另一进程执行V(S)操作后释放资源。此时,|S| 绝对值表示等待资源进程的个数要求
V操作原语(荷兰语的等待)V(S): ①V操作一次,S+1 (释放一单位量资源 S:=S+1) ②S > 0 (有资源,告诉其它进程可以继读) ③S ≤ 0 (等待队列中另一进程释放资源后才能执行)
生产者与消费者模型(OS典型例子) S1仓库剩余容量,初始值S10=1 S2仓库中信息量,初始值S20=0 Producer:begin Consumer:begin ……… ……… produce: consume: {生产产品} P(S2); P(S1); {从仓库取出产品} {将产品放入仓库内} V(S1); V(S2) {消费产品} {告诉消费者有产品} go to consume go to produce end; end;
模拟执行 序号 生产 消费 S1 S2 说明 0 1 0 1 P(S1) 0 产品入库 2 V(S2) 1 告诉消费者 3 P(S2) 0 取走产品 4 V(S1) 1 告诉生产者仑库空 0 1 0 可以反复执行 1
用P、V操作实现互斥模型 设S初始值为1 A进程 : B进程: ……… ……… P(S) P(S) 互斥工作段 互斥工作段 V(S) V(S) ………………
模拟执行 序号 A B S 说明 0 1 1 P(S) 0 B进入占资源 2 P(S) -1 A进入无资源 3 V(S) 0 B释放资源A解封 4 V(S) 1 A释放资源 0 可反复执行
PV操作原语特点 优点: ①克服了LOCK/UNLOCK 原语中CPU 忙碌查询、等待现象 ②不仅能解决进程同步,还能解决互斥问题 缺点: ①增加程序复杂性,尤其交换一批信息时效率低 ②程序不正常退出时,查找做了P没有做V不方便
(三)消息缓冲通信原语 高级通信原语,用于一组信息发送与读取: Send用于发送消息 ①发送消息前,在本(甲)进程空间中开一发送区 ②使用send原语: SEND(A) ③ SEND程序向系统申请一个消息缓冲区,将发送区中消息正文、长度和发送进程名填入 ④将缓冲区挂到接收进程的消息链链尾 ⑤退出SEND程序甲进程继读执行向系统申请一个消息缓冲区
Read用于读取 ①读取消息前,在乙进程空间中开一接收区 ②使用read原语: READ(B) ③ READ程序向系统申请一个消息缓冲区,将笫一个消息缓冲区中的内容,消息正文、长度和发送者名字,填入接收区 ④将缓冲区从消息链中摘除,释放缓冲区 ⑤退出READ程序,乙进程继读执行
第六章 进程及处理机管理 • 第一节 概述 • 第二节 进程的定义和特征 • 第三节 进程调度 • 第四节 进程通信 • 第五节 死锁
死锁 • 死锁的概念 • 死锁的有向图表示 • 产生死锁的必要条件 • 死锁的处理途径
死锁的概念 • 死锁是两个或两个以上的进程中的每一个,都在等待其中另一个进程释放资源而被封锁,它们都无法向前推进,称这种现象为死锁现象。例如,交通阻塞现象,原因是共享资源(道路)。共享资源的严重缺乏,多个进程对共享资源的竞争,尤其是管理者的调度策略不高明或失误,使它们都处于无止境的等待状态。
死锁的有向图表示 R1 进程P1申请资源R1 P2 P1 进程P1占用资源R2 R2 形成环路则死锁
产生死锁的四个必要条件(1) 1.互斥使用:在一段时间内,一个资源只能由一个进程独占使用,若别的进程也要求该资源,则须等待,直至其占用者释放; 2.保持和等待:允许进程在不释放其已分得资源的情况下请求并等待分配新的资源;
产生死锁的四个必要条件(2) 3.非剥夺性:进程所获得的资源在未使用完之前,不能被其它进程强行夺走,而只能由其自身释放; 4.循环等待:存在一个等待进程集合,P0正在等待一个P1占用的资源,P1正在等待一个P2占用的资源,…,Pn正在等待一个由PO占用的资源。
产生死锁的四个必要条件(3) 可以通过破坏这四个必要条件中的任何一个来预防死锁的发生。为死锁的预防提供多种途径。
解决死锁问题的基本方法 一是破坏产生死锁的四个必要条件中的一个或多个,使系统绝不会进入死锁状态,这就是死锁的预防; 二是产生死锁的四个必要条件有可能成立,但在资源动态分配的过程中使用某种办法防止系统进人安全和死锁状态,这就是死锁的避免; 三是允许系统产生死锁,然后使用检测算法及时地发现并解除它。
计算机操作系统 • 第一章 操作系统引论 • 第二章 作业界面管理 • 第三章 文件管理 • 第四章 存储管理 • 第五章 设备管理 • 第六章 进程及处理机管理 • 第七章 操作系统结构和程序实现
第七章 操作系统结构和程序实现 • 操作系统研制过程: • 总体设计:制订设计原则和要求、功能设计和结构设计等方案论证 • 具体设计:程序框图、库程序和程序设计 • 调试:分块和分阶段实现 • 维护:建立或选用专门的维护程序