Transcript 第一章操作系统引论
计算机操作系统
计算机操作系统
操作系统概述
处理机管理
存储管理
文件管理
设备管理
作业管理
进程管理
操作系统设计
操作系统试验
安装windows 2000(课后完成)
Windows2000任务管理器的进程管理
Windows2000进程的一生(课后完成)
Windows2000线程同步(课后完成)
Windows2000线程间通信(课后完成)
基本要求
–掌握基本原理
–熟悉常用主要功能特点
–了解操作系统设计思想与结构
学习方法
知识:需要记忆、积累
联想、对比
抓重点
技能:需要训练、经验
方法、技巧
•思路:
逻辑思维
形象思维
抓特点
操作系统知识体系结构
知识结构:
操作系统是计算机技术与管理技术的结合
知识面: 至少记住以下两句话:
.操作系统是方便用户,管理和控制整个计算机软硬件资
源的程序系统(系统软件)
.操作系统有“五大类型”和“五大功能”
(批处理,分时,实时,网络,分布;
作业,文件,存储,设备和进程管理)
知识点:
“五大类型”和“五大功能” 的基本知识和应用技能
计算机操作系统是计算机技术
和管理技术的结合。
管理技术:1. 分门别类
2. 详细记录
3. 调度策略
数据结构
(堆)栈
Stack
队(列) Queue
表(格) Table
树(型) Tree
图(论) Graphic、Chart、Map、Picture、
Drawing
场(论) Field
第一章 操作系统引论
操作系统的概念
操作系统的生成和五大类型
操作系统的五大功能
表征操作系统的属性
操作系统的概念(1)
操作系统的英文名是Operating System,缩写
成OS
操作系统是一种软件,属于系统软件
从用户角度看,操作系统可以看成是计算机的硬
件扩充
人机交互方式来看,操作系统是用户与机器的接
口
用管理者角度看,操作系统也是管理资源的程序
扩充
操作系统的概念(2)
从计算机的系统结构看,操作系统是一种层次、
模块结构的程序集合,属于有序分层法,是无
序模块的有序层次调用。
操作系统是计算机技术和管理技术的结合
操作系统相当于计算机系统的“管理机构”。
操作系统是为计算机用户服务,它的主人就是
用户。
OS是方便用户管理和控制计算机软硬件资源
的系统软件或程序集合
操作系统的生成和类型
生成:产生最适合自己工作环境的
os内核(kernel)。为了方便用户,
又使系统开销尽量小
生成,配置过程:
UNIX中 newconfig 命令
DOS中 config.sys 文件
维护:系统管理员
操作系统形成的历史(1)
1946年—50年代末
–当时计算机处于电子管时代,根本没有操作
系统。人们把这个时期称为“手工操作阶
段”。顾名思义人们当时使用的计算机大量
需要人工控制,还没有“管家”来为他们服
务。
50年代后期
–计算机的运行速度有了很大的提高,从每秒
几千次、几万次发展到每秒几十万次、上百
万次。
操作系统形成的历史(2)
–联机批处理系统
–脱机批处理系统
–执行系统
50年代末—60年代中期
–此时计算机进入了第二代——晶体管时代。
为了解决人机矛盾,提高自动化程度,
操作系统形成的历史(3)
–人们研制了监督程序,由该程序自动依次
处理一系列任务
60年代中期——70年代中期
–计算机进入第三代——集成电路时代。在
这一时期操作系统初步形成并完善。
–出现了三种最基本的操作系统类型:多道
批处理操作系统、分时操作系统和实时操作
系统。
操作系统形成的历史(4)
80年代至今
–第四代计算机,大规模集成电路工艺
技术飞速发展。操作系统也有了进一
步发展:出现了个人计算机上的操作
系统、网络操作系统和分布式操作系
统。
操作系统的类型
五大类型:
批处理操作系统
(单道批处理系统 、多道程序设计技术、
多道批处理操作系统)
分时操作系统
实时操作系统
网络操作系统
分布式操作系统
多通道批处理操作系统
单道运行:每次只调一个用户程序进入内存让
它运行
多道程序设计:即在系统内(内存)同时存放
并运行几道相互独立的程序。
多道程序设计的基础:是将运行过程进一步细
化成几个小的步骤,从而实现宏观上的并行。
但从微观上看,内存中的多道程序轮流地或分
时地占用处理机,交替执行。
多道程序系统 ≠ 多重处理系统 ≠ 多用户 ≠
多终端
多道是指内存中驻留多个程序或一个程序的多
个程序段,因此,多用户系统一定是采用多道
技术。而多道系统不一定是多用户系统。多重
处理系统一般指多CPU系统。当然,一个CPU的
系统采用分时技术可以为多用户服务。多用户
的关键技术是在用户之间要有保密保安措施。
终端指用户使用的硬件设备,即使一个终端也
可为多用户用,例如,银行的自动取款机
(ATM)。
纯码 = 可重入代码
分时
分时技术:把CPU的时间
分成很短的时间片(例
如,几十至几百毫秒)
工作
随着时间片的时间减少,
对换时间所占的比例随
之增大。随着用户数目
的不断增加,这种矛盾
会越来越突出
特点是计算机规定特点
是人(用户)
实时
实时是指计算机对于外
来信息能够以足够快的
速度进行处理,并在被
控对象允许的时间范围
内作出快速反应
交互作用能力较差
特点是人(用户)规定
计算机
操作系统的五大功能(1)
作业管理
包括任务管理、 界面管理、人机交互、形
界面、语音控制和虚拟现实等
文件管理
又称为信息管理
存储管理
实质是对存储“空间”的管理,主要指对
内存的管理
操作系统的五大功能(2)
设备管理
实质是对硬件设备的管理,其中包括对输
入输出设备的分配、启动、完成和回收
进程管理
又称外理机管理,实质上是对处理机执行
“时间”的管理,即如何将CPU真正合理地
分配给每个任务
表征操作系统的属性(1)
响应系
数
设备利
用率
实时
200
180
160
140
120
100
80
60
40
20
0
分时交互
响应比,响应系数:
Rp = 作业响应时间
/运行时间(估计值)
影响因素:CPU速度,
内外存对换,I/O调
度,用户数,时间片,
事件优先权等
批处理
表征操作系统的属性(2)
并发性也叫“共行性”(concurrent),
表现在:
–多个作业并发执行或一个用户作业的多个
程序段间并发执行
–多个输入输出设备间并发工作
信息的共享、保密与保护,常见方法有:
–给用户设置登录口令
–给文件加权限
–给文件加密
表征操作系统的属性(3)
可扩充性、可移植性、可读性、可“生
成”性
– “可扩充性”表示该操作系统可灵活地按照
用户的需要增加功能
– “可读性”和“可移植性”均表现操作系统
的适应性
安全可靠性
“行业评测性能比较”法
表征操作系统的属性(4)
可测试性
测试程序(Benchmark)有:
中央处理单元(CPU):每秒百万条指
令MIPS
事件(Event):每秒处理事务数TPS
MIPS是指CPU速度,对于数学运算的应
用项目有重要意义。但对于一般的数据处
理,涉及输入输出的动作较多,TPS测试
更为切合实际。
第三章 处理机管理
第一节
多道程序设计
第二节 进程的定义和特征
第三节 中断与中断系统
第四节 处理机调度
单道程序
– 设备、内存、处理
机资源利用率低
多道程序
– 通过增加资源使用
者的数量,提高系
统资源利用率
资源竞争
多道程序设计的问题
处理机资源
– 分配与调度
内存资源
– 内存空间划分,重定位,存储保护
设备资源
– 分配与去配
为什么要引入“进程”的概念
关键是“共享资源”引起的
如何描述多道系统中程序的执行
顺序执行与并发执行的区别
顺序执行:
程序具有封闭性
独享资源
可再现性
应
有相互制约
并发执行:
程序失去封闭性
共享资源(互为存在条件)
程序与“计算”不再一一对
进程的定义及特征
进程:进程是程序在数据集合上的一次运
行过程,是OS 动态系统进行资源分配和
调度的基本单元(构件)。
程序和进程的区别
进程的基本特征
程序和进程的区别
程序
●静态的指令序列
进程
●动态的程序执行过程
●一程序可对应
●一个进程对应至少有
多个进程
●永久性软件资源
一个程序在工作
●暂存资源,动态生之过程
进程的基本特征
动态性:进程是程序在并发系统内的一次执行,
一个进程有一个从产生到消失的生命期;
并发性:正是为了描述程序在并发系统内执行
的动态特性才引入了进程,没有并发就没有进
程;
独立性:每个进程的程序都是相对独立的顺序
程序,可以按照自己的方向和速度独立地向前
推进;
制约性:进程之间的相互制约,主要表现在互
斥地使用资源和相关进程之间必要的同步和通
讯;
结构性:进程 = PCB + 程序 + 数据集合。
进程的组成
进程对应的程序:进程的算法描
述
数据集合:数据部分,工作区
进程控制表(PCB):是操作系
统对CPU进行控制的依据
– Pid,进程状态,调度参数,进程位置和大小,
家族联系,队列指针等
进程的三个基本状态及转换
等待
得到资源
提交进入
资源不足
完成
时间片到
就绪
执行
调度选中进入
静止
阻塞
等待
得到资源
提交进入
静止
就绪
活动
阻塞
资源不足
完成
时间片到
准备
活动
就绪
执行
调度选中进入
进程的状态及转换
页面阻塞
I/O阻塞
盘带阻塞
得到资源
提交进入
队列:高优先级
队列:中优先级
队列:低优先级
资源不足
时间片到
完成
执行
调度选中进入
处理机调度算法
先来先服务(FCFS)
优先数法(Priority)
– 方法:静态优先数,动态优先数
– 不可抢占CPUCPU,可抢占cpu
时间片轮转,轮转循环调度(Round Robin)分
时系统
分类排队法Multi Level Queues
反馈排队法Feed Back
处理机状态及其转换
管态
目态
目态到管态 中断
管态到目态 修改程序状态字
中断
在程序的运行 过程中,出现了某种紧急
事件,使得CPU必须中止正在运行的程
序,转去处理此事件,然后再恢复原来
运行的程序,这一过程称为中断。
相关概念
中断系统
中断装置
– 识别中断源,保护现场,引出中断程序
中断处理程序
中断源
中断寄存器,中断字
中断向量
中断类型(按中断源分)
I/O中断
系统请求中断/访管中断
报警中断
程序中断
时钟中断
机器故障中断
内部中断
外部中断
中断向量
为处理上的方便,对不同的中断源编制不同
的中断处理程序,这些处理程序的入口地址
(PC)放在特定的单元。此外,不同中断处理
程序有不同的处理机状态字PSW,它放在与中
断处理程序入口指针相邻的单元中。有了这
两个单元的内容,便可转入相应的中断处理
相应的cpu状态字)称为中断向量,把存放中
断向量的单元称为中断向量单元。
中断优先级与中断嵌套
根据引起中断事件事件的重要性和紧迫
程度,硬件将中断源分为若干级别,称
作中断优先级。
如果系统在处理一个中断的过程中又响
应了新的中断,则称发生了中断嵌套。
中断嵌套的实际层次一般不会超过中断
优先级别的个数。
中断处理过程图3-13
进入中断:响应中断时,CPU撤回对总
线的控制权,暂停对现行程序的运行
保护现场信息(PSW,PC等 )
– 系统堆栈
判断中断源
中断处理
恢复现场
中断程序处理方案
输入输出中断的处理
时钟中断:一类特殊的I/o中断,不一定与具体
的I/o相连,每一次中断意味着一个固时间已到。
控制台中断:相当于一个操作命令
硬件故障中断:保护现场,报告故障信息
程序中断:由程序异常引起,如除数为0,浮
点运算溢出,存储器使用无效,地址越界,目
态下使用特权指令,错误格式化等
中断程序处理方案
访管中断(自愿性中断):由访管指令
产生的向操作系统提出服务请求的中断,
该中断由系统调用命令引出,如trap,
SVC或INT等访管指令产生的中断。该中
断将命令传给操作系统,操作系统对请
求做出分析并提供所需服务。
第四章 存储管理
第一节
第二节
第三节
第四节
第五节
存储管理的功能
内存资源管理
存储管理方式
外存管理技术
虚拟存储系统
第五章 文件管理
文件与文件系统
文件的访问形式
文件的组织
文件目录
文件的共享
文件系统的保护、保密与
安全
文件系统的实现
引言
在早期计算机系统中,人们直接用物理
地址存放信息。存放信息时,要求用户
指出并记住信息存放在哪个设备的哪些
磁道、哪些扇区上。
在多用户的环境中这几乎是不可能的,
更是不能忍受的。
实际上对用户来说,关心的不是信息的
具体存放位置,而是存取方法的方便、
可靠。不是信息的物理结构而是信息的
逻辑结构。
因此,引入文件和文件系统的概念,它
是操作系统的重要组成部分。
1、文件的定义
文件是计算机系统中信息存放的一种组织形
式,目前尚无严格的定义,下面给出两种有代
表性的解释:
文件是赋名的信息 (数据)项的集合。
编号:0
1
……
i
…… n-1
文件是赋名有关联的信息单位 (记录)的集
信息项 信息项 ……... 信息项 ……... 信息项
合。
读写指针
这两种解释定义了两种文件形式:
前者说明文件是由字节组成,这是一种
无结构的文件,或称流式文件。目前
UNIX操作系统,MS-DOS系统均采用这种
文件形式。
后者说明文件是由记录组成。而记录则
是由一组相关信息项组成。例如每个学
生的登记表可视为一个记录,它包括学
生姓名,出生年月,性别,籍贯等信息
项。所有学生登记表组成一个学生文件。
文件分类
按文件所有者分类
–按保存期限分类
–按访问方式分类
–按设备类型分类(UNIX或Linux操作系统)
–按用途分类
–按文件的内容分类
–按逻辑结构分类
–按物理结构分类
按所有者分类
系统文件: 指用操作系统的执行程序和
数据组成的文件,这种文件不对用户开放,
仅供系统使用。
库文件:是指系统为用户提供的各种标
准函数,标准过程和实用程序等。用户只
能使用这些文件,而无权对其进行修改。
用户文件: 由用户的信息组成的文件,
如源程序文件,数据文件等。这种文件的
使用和修改权均属于用户。
按保存期限分类
临时文件:用于系统在工作过程中产生的中间
文件,一般有暂存的目录,正常工作情况下,
工作完毕会自动删除,一旦有异常情况往往会
残留不少临时文件
永久文件: 指一般受系统管理的各种系统和用
户文件,经过安装或编辑、编译生成的文件,
存放在软盘、硬盘或光盘等外存上
按访问方式分类
只读文件:只允许文件主及被核准的用
户去读文件,而不允许写文件。
只写文件:只允许文件主及被核准的用
户去写文件,而不允许其他操作。
可读可写文件:允许文件主及被核准的
用户去读和写文件。
可执行文件:允许文件主及被核准的用
户去调用执行该文件而不允许读和写文
件
(3)按文件的性质分类
普通文件: 指一般的用户文件和系统文
件。
目录文件: 指由文件目录项组成的文件。
特别文件: 有的系统把设备作为文件统
一管理和使用,并为区别起见,把设备
称为特别文件。
UNIX操作系统把文件分成普通文件、目
按设备类型分类
磁盘文件
磁带文件
磁鼓文件
按用途分类
普通文件(常规文件)
–是指系统中最一般组织格式的文件,一般
是字符流组成的无结构文件
目录文件
– 是由文件的目录信息构成的特殊文件,操作
系统将目录也做成文件,便于统一管理
特殊文件(设备驱动程序)
– 将输入输出外部设备被看作特殊文件便于统
一管理
按文件内容分类
程序文件
– 源文件
– 目标文件
– 可执行文件
– 头文件
– 库文件
数据文件
按存取的物理结构分类(1)
顺序(连续)文件
–文件中的纪录,顺序地存储到连续的物理
盘块中,顺序文件中所记录的次序,与它们
存储在物理介质上存放的次序是一致的
链接文件
–文件中的纪录可存储在并不相邻接的各个
物理块中,通过物理块中的链接指针组成一
个链表管理,形成一个完整的文件,又称指
针串连文件或直接存取文件
按存取的物理结构分类(2)
索引文件
–文件中的纪录可存储在并不相邻接的
各个物理块中,纪录和物理块之间通
过索引表项按关键字存取文件,通过
物理块中的索引表管理,形成一个完
整的文件
按文件的逻辑存储结构分类
流式/无结构文件
这是直接由字符序列所构成的文件,故又
祢为流式文件
记录式/有结构文件
由若干个记录所构成的文件,故又称为记
录式文件
文件
文件是软件机构,软件资源的管理方式
具有符号名的一组相关元素的有序序列,
是一段程序或数据的集合
一组赋名的相关联字符流的集合,或者
是相关联记录。而记录是有意义的信息
集合
文件系统
文件系统包含文件管理程序(文件与目录的集
合)和所管理的全部文件
是用户与外存的接口
系统软件为用户提供统一方法(以数据记录的
逻辑单位),访问存储在物理介质上的信息
文件系统=文件管理程序(文件和目录的集合)
+它所管理的全部文件
文件系统负责文件的创立、撤消、读写、
修改、复制和存取控制等,并管理存放
文件的各种资源。
文件系统特点
使用方便,灵活,用户按名存取
安全可靠, 保护系统和用户
提供保密与共享
文件的访问方式
顺序访问
文件存取最简单的方法是顺序存取,即严
格按文件信息单位排列的顺序依次存取。
当打开文件时,文件的存取指针指向第一
个信息单位,如第一个字节或第一个记
录,每存取一个信息单位存取指针加1指
向下一个信息单位,如此类推。
随机访问
也称直接存取,每次存取操作时必须先确定
存取的位置。
对流式文件或定长记录的文件比较容易确定
存取位置。
对不定长的记录式文件比较麻烦。当然可从
第一个记录开始顺序查询,直到找到要存取的记
录为止,显然这样做是低效的。
解决的方法是建立索引。文件的索引可以作
为文件的一部分,也可以单独建立索引文件。
文件的访问方式
顺序访问方式
– 由文件头部开始顺序访问
– 由文件中间开始顺序访问
随机访问方式
– 按信息项编号随机访问
– 按键随机访问
文件的组织
文件的逻辑组织
– 流式文件
– 记录式文件
文件的物理组织
–
–
–
–
–
顺序结构
链接结构
索引结构
Hash结构
倒排结构
文件的逻辑结构
1、文件的逻辑结构
流式文件:基本信息单位是字节或字,
其长度是所含字节的数量。
这种文件的优点是节省存储空间。
在这种文件中无需额外的说明和控制信
息。
记录式文件:记录式文件是一种结构文
件。由若干个记录组成,文件中的记录
可按顺序编号为记录1,记录2,……,记
录n。
如果文件中所有记录的长度相等,则称
为定长记录文件,文件的长度为记录个
数与记录长度的积。
若文件中的记录长度不相等,则称为变
长记录文件。文件长度为所有记录长度
相对流式文件而言,记录式文件的使用
不很方便,尤其是变长记录文件。另外
在文件中还要有说明记录长度的信息,
这就浪费了一部分存储空间。
因此许多现代计算机操作系统如UNIX操
作系统等都取消了记录式文件。
流式文件
记录式文件
非结构式的
结构式的
具有符号名的字节序
列
具有符号名的记录序
列
Os对外部结构无解
Os对外部结构有解
释
释
流式文件是记录式文件的特例
文件的物理结构
文件的物理结构是指文件在物理存储介质
上的结构。
1、连续结构
2、链接结构
3、索引结构
4、HASH结构
5、倒排结构
1、顺序结构
一个文件的全部信息存放在外存的一片连续
编号的物理块中,这种结构称为连续结构,或称
连续文件。
存放在磁带上的文件一般采用连续结构,即
序号为I+1的物理块一定在i物理块之后。而存放
在磁盘上的文件则可采用连续结构,也可采用别
的结构。
建立连续文件时要求用户给出文件的最大长
度,以便系统为文件分配足够的存储空间,并在
相应表格中登记文件的起始位置和长度。
优点
简单
支持顺序存取和随机存取
顺序存取速度快
所需的磁盘寻道次数和寻道时间最少
缺点
文件不易动态增长
预留空间:浪费
重新分配和移动
不利于文件插入和删除
存储压缩技术
2、链接结构
这是一种非连续的结构,存放文件信息的每一
物理块中有一个指针,指向下一个物理块,这
个指针的长度由物理设备的容量决定,通常放
在该物理块的开头或结尾。
链接结构的文件适用于顺序存取。因为
要获得某一块的块号,必须读取上一物
理块,因此要随机地存取信息就较为困
难。
优缺点
优点:
提高了磁盘空间利用率,不存在外部碎片
问题
有利于文件插入和删除
有利于文件动态扩充
缺点:
存取速度慢,不适于随机存取
链接指针占用一定的空间
3、索引结构
一个文件的信息存放在若干不连续物理块
中,系统为每个文件建立一个专用数据
结构--索引表,并将这些块的块号存放在
索引表中。
一个索引表就是磁盘块地址数组,其中第i个
条目指向文件的第i块
0
…
255
…
12
0
…
255
…
11
0
…
255
…
10
0
…
255
0
…
255
…
…
9
直接索引
0
…
255
…
直接索引
0
…
255
…
0
…
…
0
…
255
一次间接
0
…
255
二次间接
三次间接
0
…
255
0
…
255
优点
保持了链接结构的优点,又解决了其缺
点:
即能顺序存取,又能随机存取
满足了文件动态增长、插入删除的要求
缺点
能充分利用外存空间
索引表本身带来了系统开销
如:内外存空间,存取时间
思考题
设一个文件由100个物理块构成,对于顺序,链接和索
引存储方式,分别计算执行下列操作时所应启动的I/o
次数。(链接方式使用的是单向指针,但没有头、尾指
针)
1.将一块加在文件的开头 2. 将一块加在文件的中间
3. 将一块加在文件的末尾 4 .从文件的开头去掉一块
5 .从文件的中间去掉一块 。6 .从文件的末尾去掉一块
文件目录
文件目录是文件系统中主要数据结构之
一,文件存储后用户通过用户文件逻辑结
构的索引链接找到对应的物理结构
文件目录由目录项构成,目录项又称为
文件控制块FCB
文件控制块FCB是文件存在的标志,记录
着系统对文件进行管理所需要的全部信
息。
文件目录分类
单级目录
– 一个磁盘一个目录,一个文件一个说明表目
– 优点是简单,缺点是无法防止重名或被刪,
安全保密性差,目前已淘汰
二级目录结构
二级文件目录结构把目录分成系统目录和用
户目录两级。
系统目录由用户名和用户文件目录首地址组
成,用户文件目录中登记相应的用户文件的
目录项。
在二级目录结构中,区别不同的文件除
文件名外还有文件的用户名,因此不同
的用户可以使用相同的文件名。
例如用户A中使用文件名LISH,用户B也
可使用文件名LISH,因为标识这两个文
件 时 还 要 加 上 用 户 名 , A : LISH 和 B :
LISH,不致于造成混淆。
优缺点
优点:二级目录结构较为简单,也比较
好地解决了重名的问题。
缺点:缺乏灵活性,特别是不能反映现
实世界中多层次的关系。
为此人们提出了多级目录结构,其中
MULTICS及UNIX系统均采用了多级目录
结构,它们是当前文件系统的典型而完
美的代表。
多级目录结构
多级目录结构由根目录和各级目录组成,
为管理上的方便,除根目录外,其它各
级目录均以文件的形式组成目录文件。
根目录中的每个目录项可以对应一个目
录文件,也可以对应一个数据文件,同
样目录文件中的每个目录项可以对应一
个目录文件。也可以对应一个数据文件。
如此类推,就形成多级目录结构。
也称树形目录结构
在这种结构中把根目录称为根结点,把
各级目录文件称中间结点,用方框表示。
数据文件称为叶结点,用圆圈表示。
路径名
在多级目录结构中一个文件的唯一标识不再
是文件名,而是从根结点开始,经过一个或
多个中间结点,到达某个叶结点的一条路径。
称这条路径为文件的路径名,它是文件的唯
一标识。
路径名由根目录和所经过的目录名和文件名
以及分隔符组成,通常使用分隔符 /。例如
/d1/f1, /d2/d5/f3, /f7
工作目录
在多级目录结构中,文件路径名一般较
长,而用户总是局部地使用文件,为了
方便起见,可把经常使用的文件所在的
目录指定为工作目录(或称当前目录)。
查询时,若路径名以/开头;则从根目录
开始查找,否则从当前目录开始查找。
文件目录改进
为加快目录检索把FCB分成两部分:
符号目录项 (次部)
–文件名,文件号
基本目录项(主部)
–除文件名外的所有项目
文件的共享
所谓文件共享指系统允许多个用户或进
程共享同一份文件。
在系统中只需要保存共享文件的一个副
本。
如果系统不能提供文件共享功能,就意
味着凡是需要该文件的用户都要自备此
文件的副本。
文件共享的目的
节省存储空间
进程间通过文件交换信息
链接技术实现文件共享
从一个目录项直接用一个指针(或编号)
指向另一个目录项达到共享文件的目的。
这里需要扩充目录项,增加:用户计数。
用于记录共享数量。
硬链接
利用符号链实现文件共享
用户A为了共享用户B的Bboot目录下的
一个文件f1.c,可以创建一个LINK类型
的新文件x,新文件x中仅包含被链接文
件f1.c的路径名。A用户对新文件x的访问
被系统重定位去访问B的文件f1.c。
软链接
优势:计算机网络环境下可用
问题:系统开销大
文件的保护、保密与安全
文件的保护
– 存取控制矩阵,访问权限说明,分级目录
文件的保密
– 口令,密码
文件的安全
– 备份
用访问控制矩阵实现文件保护
一维代表所有用户,一维代表系统中的
所有文件。
优点:一目了然
缺点:矩阵往往过大。
对访问权限分类
对文件的访问系统首先要检查访问权限,
只允许合法的用户访问。文件的存取权限
一般有以下几种:
仅允许读 (R)。
仅允许写 (W)
仅允许执行 (E)。
仅允许对文件进行修改(M)
允许删除文件(D)
这几种权限可进行适当的组合。
访问权限说明
对用户进行分类
按用户对文件访问权力的差别把用户分
成几类,然后对每个文件规定各类用户
的存取权限。通常将用户分成三类:
–文件主
–文件主的同组用户或合作用户
–其它用户
存取控制表实现文件保护
用户权限表实现文件保护
分级目录
在多级目录系统中,可规定不同用户对于统
一子目录的访问权限。
文件的保密
口令
密码
用口令实现文件保护
用户为自己的每个文件规定一个口令,
有口令者才能访问文件。
优点:简便
缺点:
保护级别少(可访问和不可访问)
保密性差。
不易改变存取控制权限。
使用口令
使用口令优点是占存储空间少、方
便,缺点是保护能力弱
口令应选择包含有大小写字母,甚
至包含控制字符
口令至少有八位字长
不要使用陈旧的口令,而且口令应
经常变化
使用密码
存储时用“密钥” (“密码钥匙”)对
文件进行编码,取时译码
优点是保密性强
文件的安全
文件的安全性是指抵抗和预防各种物理
性破坏及认为性破坏的能力。
备份
– 海量转储
– 增量转储
文件系统的实现
Fd mode p* 入口
…… …… …… ……
系统打开文件表
FCB主部 文件号 共享计数 修改标志
用户打开文件表(p1)
Fd mode p* 入口
…… …… …… ……
用户打开文件表(p2)
……
……
……
……
……
……
……
……
……
……
2
……
……
……
……
……
外存空间的管理
空闲块表
– 首空闲块号和空闲块数
空闲块链
字位映像图
– 字位映像图需要永久地保存于外存空间
– 使用时将其调入内存
– 修改后内存写回内存
文件系统的界面
建立文件
– create (path-name,FCB-args)
打开文件
– Fd=open(path-name,mode)
关闭文件
– Close(fd)
指针定位
– Seek(fd,offset)
读文件
– Read(fd,nrcd,buf)
写文件
– Write(fd,nrcd,buf)
建立链接
– Link(old-name,new-name)
断开链接
– Unlink(path-name)
存储管理的目的及功能(1)
目的:方便用户,使用户减少甚至摆脱
对存储器使用的管理;提高内存资源的
利用率,关键是实现内存共享
功能:
– 内存分配:通过建表、查表、改表和
回收登录内存使用情况,按选定分配
算法确定分区等
存储管理的目的及功能(2)
功能:
– 存储共享:节省内存空间,实现进程
通信
– 内存保护技术:防止地址越界,防止
操作越权
– 内存的扩充技术:使用虛存或自动复
盖技朮提供比实际内存更大的空间
– 地址映射
逻辑地址与物理地址
在具有地址变換机构的计算机中,
允许程序中编排的地址和信息实际存
放在内存中的地址有所不同。前者叫
逻辑(相对)地址,后者叫物理(绝
对)地址。
地址映射:将程序所产生的逻辑地址转
换为存储空间的物理地址。
内存资源管理
内存分区
内存分配
碎片处理
内存资源管理
静态不等长分区
静态等长分区
动态异长分区
静态不等长分区
分区:系统运行前,将逐村划分成大小不等的若干
区域,每个分区的大小可以预先确定,但系统开启
后就不能再改变了。
管理:每个注册的作业必须规定其最大存储量,不得
超过最大分区的大小。
分配:系统设置一张分区表,标明每块分区的大小位置
和使用状态,分区表按照分区从小到大顺序排列。分配时,
从说明的第一项开始依次查看每个分区的转台状态及大小,
当状态可用,且其大小超过作业大小时,便可分配。
静态等长分配(分页)
存储空间被静态地划分为若干个长度相
等的区域,每个区域称为一页。
字位影像图
空闲页面表/空闲页面链
动态异长分区
存储空间被动态地划分为若干个长度不等
的区域
分配算法
– 最先适应算法FF(First Fit)
– 最佳适应算法BF(Best Fit)
– 最坏适应算法WF(Worst Fit)
碎片处理
碎片
紧凑
紧凑的开销
– 修改被移动进程的地址信息
– 复制进程空间
– 实验:开始/程序/附件/系统工具/磁盘碎片整
理
内存资源管理实例1
有一个系统,其内存容量为1024KB,有8个作业同时到达,各
作业的内存量及运行时间如下表所示,假定系统初启时,将
内存1024KB按作业的编号顺序分给各道作业,并假定是多
CPU下,分配到内存的作业都可以立即运行,问:
1. 1S后,内存空白区按FF和Bf算法的方式将如何链接?
2. 2S后,内存空白区按上述两种算法的方式又将如何链接?
3. 这时( 2S后),有作业9要求进入内存,它需要12KB内存
量,按上述方法,系统将哪一块空白区分给它?
作业编号
1
2
3
4
5
6
7
需要内存量
(KB)
140
80
100
60
50
30
15
运行时间(s)
3
1
3
2
1
3
2
内存资源管理实例2
某计算机系统的内存容量为128KB,对存储器采用可变分
区管理办法,现有3个作业J1,J2,J3在内存,其存储区间的
分配如图所示:
现有一个需要25KB存储空间的作业J4请求装入内存,
(1)若采用FF分配算法,请给出装入J4后的内存分配表;
(2)若采用BF分配算法,请给出装入J4后的内存分配表;
(3)在只有J1,J2,J3三个作业的情况下,J2运行结束后撤离,
请给出J2撤离后的内存分配表
操作系统
0K
5K
J1
空闲区 J2
20K
空闲区
40K 50K
J3
90K
空闲区
100K
128K
内存“扩充”技术
交换(swap):由操作系统做,用
户不知道。
复盖(overlay):由用户控制,操
作系统提供覆盖机制。
存储管理方式
界地址存储管理
页式存储管理
段式存储管理
段页式存储管理
界地址存储管理
内存空间:动态地划分为若干个长度不同
的区域
进程空间:由一个连续的区间构成,0~L1
地址映射:设内存中的起始地址为b
内存分配表/空闲区域表
首址寄存器/限长寄存器
物理地址=逻辑地址+首址寄存器内容
双对界
交换技术swapping
– Roll-in,Roll-out
页式存储管理实现原理
基于程序在运行时不需要一开始都装入
内存,更不应该把最近较长一段时间内
不用的程序装入内存。
内存空间:静态地划分为若干等长的页面
– 物理地址=物理页首址+页内地址
进程空间:静态地划分为若干等长的逻辑页
– 逻辑地址=逻辑页首址+页内地址
页表/进程表/总页表
页表首址寄存器/页表长度寄存器/快表
分页式管理应用实例1
一个由4个页号(页号0~3),每页由1024
个字节组成的程序,把它装入一个由8个
物理块(块号为0~7)组成的存储器中,
装入情况如下表所示,已知下面的逻辑
地址[0,100],[1,179],[2,785],[3,
1010](第一个元素为页号,第二个元素
为页内地址),请按页表求出对应的物
理地址
逻辑页号
内存块号
0
3
1
5
2
6
3
2
页式存储管理的优点
虛存量大,适合多道程序运行,用户不
必担心内存不够的调度操作。
内存利用率高,不常用的页面尽量不留
在内存;
不要求作业连续存放,有效地解决了
“碎片”问题。与分区式比,不需移动
作业;与多重分区比,无零星碎片产生.
页式存储管理的缺点
要处理页面中断、缺页中断处理等,
系统开销较大;
有可能产生“抖动”;
地址变換机构复杂,为提高速度采
用硬件实现,增加了机器成本
分段式存储管理
内存空间:动态地划分为若干不等长的
物理段
– 物理地址=段首址+段内地址
进程空间:静态地划分为若干不等长的
逻辑段
– 逻辑地址=段号+段内地址
段表/进程表/空闲表
段表首址寄存器/段表长度寄存器/快表
地址映射p70,图4-26
段,页式存储管理的对比表
段式
页式
由用户设计,有逻辑意义
OS划分
段面是信息的逻辑单位
位
便于段的共享和动态链接
段长不等,可动态增长
增长
段具有二维地址空间
管理形式相似,但概念不同
分页用户不可见,由
页面是信息的物理单
页一般不能共享
页面大小相同,不能
页具有一维地址空间
段页式存储管理
内存空间:静态地划分为若干等长的物
理页
– 物理地址=物理页首址+页内地址
进程空间:静态地划分为若干不等长的
逻辑段,每段又静态地划分为若干等长
的逻辑页
– 逻辑地址=段号+逻辑页号+页内地址
段表/页表/进程表/空闲表
段表首址寄存器/段表长度寄存器/快表
分段式管理应用实例
给定下面段表,已知下列逻辑地址[0,430],
[3,400],[1,10],[2,500],[4,42],[1
,11](第一个元素为段号,第二个元素为段
内地址),分别求其对应的物理地址
段号
段长
段首址
0
600
219
1
14
2300
2
100
90
3
580
1327
4
96
1954
段式存储管理
段,页式存储管理的对比表
段式存储管理的优越性:段的共享与动态分配,
一般由硬件设备的多种支持,特别是近代的优
化编译巳进入CPU内部设计。段共享的先决条
件是程序段可重入,即前面一段没有退出前,
在不影响工作前提下,后面一段又可重新装入。
而可重入程序的特点是执行程序中指令不变称
纯代码(纯码),而工作区和数据区由调用者自
带。
段页式存储管理特点
每一段分若干页,再按页式管理,页间
不要求连续;
用分段方法分配管理作业,用分页方法
分配管理内存;
兼有段式和页式管理的优点,系统复杂性
和开销增大,一般在大型机器上才使用.
外存管理技术
外存区间划分:基本单位为块
外存空间分配:外存分配的基本单位是
块,而内存的分配单位是单元
– 界地址存储管理外存空间分配
– 页式存储管理外存空间分配
– 段式存储管理外存空间分配
– 段页存储管理外存空间分配
虚拟存储管理
虚存是由操作系统调度,采
用内外存的交换技术,各道程序
在必需使用时调入内存,不用的
调出内存,这样好象内存容量不
受限制。
虚拟存储系统
虚拟存储是一种借助于外存 空间,从而
允许一个进程在其运行过程中部分地装
入内存的技术
– 虚拟 页式存储系统
– 虚拟段式存储系统
– 虚拟段页式存储系统
虚存的特点
虚存容量不是无限的,极端情况受内存
和外存可利用的总容量限制
虚存容量还受计算机总线地址结构限制
速度和容量的“时空”矛盾,虛存量的
“扩大”是以牺牲CPU工作时间以及内外
存交換时间为代价的,以CPU时间和外存
空间换取昂贵内存空间,这是操作系统
中的资源转换技术
概述
程序局部性原理
时间局部性
一条指令被执行了,则在不久的将来它可
能再被执行
空间局部性
若某一存储单元被使用,则在一定时间内,
与该存储单元相邻的单元可能被使用
虚拟页式存储管理
基本思想
在进程开始运行之前,不是装入全部页面,而
是装入几个或零个页面,之后根据进程运行
的需要,动态装入其它页面;
当内存空间已满,而又需要装入新的页面时,
则根据某种算法淘汰某个页面,以便装入新
的页面
60K-64K
56K-60K
52K-56K
48K-52K
44K-48K
40K-44K
36K-40K
32K-36K
28K-32K
24K-28K
20K-24K
16K-20K
12K-16K
8K-12K
4K-8K
0K-4K
X
X
X
X
7
X
5
X
X
X
3
4
0
6
1
2
虚地址空间
} 虚页
物理地址空间
页框
28K-32K
24K-28K
20K-24K
16K-20K
12K-16K
8K-12K
4K-8K
0K-4K
页表表项
页号、内存块号、外存块号 、访问位、内外
标志、、修改标志
内外标志:表示该页是在内存还是在外存
修改位:查看此页是否在内存中被修改过
页号
中断位 内存块号
外存地址
访问位 修改位
页表设计
页表内容举例
– 淘汰位/修改位/保护位/中断位/引用位/
缺用位等
快表:因页面较多,页表在内存,取一次
数要访问内存两次。
内存页面分配策略
平均分配
– 将内存中所有物理页等份分给进入系统的进
程。
按进程长度比例分配
– Ai=si/S*m
按进程优先级比例分配
按进程长度和优先级比例分配
外存块分配策略
静态分配
– 一个进程在运行前,将其所有页面全部装入
外存,当某外存页被调入内存时,所占用的
外存 页面并不释放
动态分配
– 一个进程在运行前,仅将未装入内存的那部
分页面装入外存,当某外存页被调入内存时,
释放所占用的外存 页面
缺页中断(Page Fault)处理
在地址映射过程中,在页表中发现所要
访问的页不在内存,则产生缺页中断。
操作系统接到此中断信号后,就调出缺
页中断处理程序,根据页表中给出的外
存地址,准备将该页调入内存
此时应将缺页的进程挂起(调页完成唤
醒)
如果内存中有空闲块,则分配一个块,
将要调入的页装入该块,并修改页表中
相应页表项目的驻留位及相应的内存块
号
若此时内存中没有空闲块,则要淘汰某
页(若被淘汰页在内存期间被修改过,
则要将其写回外存)
思考
缺页中断同一般中断的区别?
缺页中断同一般中断都是中断,相同点是:
保护现场 中断处理 恢复现场
不同点:
一般中断是一条指令完成后中断,缺页
中断是一条指令执行时中断
一条指令执行时可能产生多个缺页中断。
如指令可能访问多个内存地址,这些地
址在不同的页中。
页面调入方法
请调
– 页故障发生/缺页时,进行页面调度
预调
– 页故障发生/缺页前,进行页面调度
页面淘汰算法(1)
最优淘汰算法(OPT)(Optimal Replacement
Algorithm)
淘汰以后不再需要的或最远的将来才会用到的页面
先进先出算法(FIFO)
(First Input First Output),又称轮转法(RR)
选择在内存中驻留时间最长的页并淘汰之
最近最少使用页面先淘汰(LRU)
(Least
Recently Used)
选择最后一次访问时间距离当前时间最长的一页并淘汰
之 即淘汰没有使用的时间最长的页
页面淘汰算法(2)
最近没有使用页面先淘汰(NUR)
最不经常使用的页面先淘汰(LFU)
(Least Frequent Used)
最经常使用的页面先淘汰(MFU)
(Most Frequent Used)
LRU的硬件解法:
系统为每页设置一个寄存器R,每当访问
这一页时,将该页对应的寄存器R置1,
以后每个时间间隔将所有的R左移一位,
当淘汰一页时就选择R值最大的页。也就
是说R值越大,对应的页未被使用的时间
越长。所以淘汰的是最久未使用的页。
显然,R的位数越多越精确。但系统硬件
成本也就越高。
LRU软件解法:
设置一个页号栈,当一个页面被访问时,就立
即将它的页号压入页号栈,并检查页号栈中是
否有与刚压入栈顶的相同的页号,若有,则从
页号栈中抽出,以保证页号栈中无相同的页号。
当系统要淘汰一节时,总是从页号栈底取出一
个页号淘汰,即淘汰的页是最久未使用的。
LRU近似算法:
在页表中增加一访问位,每当访问一页
时,将该页的访问位由硬件置1,软件周期
(T)性地将所有访问位置0。在时间T内,
访问过的页其访问位为1,反之为0,淘汰
为0 的页。
缺点:T难定。太小,访问位为0的页相
当多,所选的不一定是最久未用的。太大,
所有页的引用位可能都为1,找不到合适的
最不经常使用(LFU)
选择访问次数最少的页面淘汰之
与LRU的硬件解法类似。
例1
某程序在内存中分配三个块,访问页
的走向为4,3,2,1,4,3,5,4,
3,2,1,5,按FIFO、 LRU、OPT
算法分别计算缺页次数
假设开始时所有页均不在内存
FIFO
FIFO 4 3 2 1 4 3 5 4 3 2 1 5
页1 4 3 2 1 4 3 5 5 5 2 1 1
页2
4 3 2 1 4 3 3 3 5 2 2
页3
4 3 2 1 4 4 4 3 5 5
x x x x x x x x x
共缺页中断9次
LRU
LRU 4 3 2 1 4 3 5 4 3 2 1 5
页1 4 3 2 1 4 3 5 4 3 2 1 5
页2
4 3 2 1 4 3 5 4 3 2 1
页3
4 3 2 1 4 3 5 4 3 2
x x x x x x x x x x
共缺页中断10次
OPT
OPT 4 3 2 1 4 3 5 4 3 2 1 5
页1 4 3 2 1 1 1 5 5 5 2 1 1
页2
4 3 3 3 3 3 3 3 5 5 5
页3
4 4 4 4 4 4 4 4 4 4
x x x x x x x
共缺页中断7次
练习
某程序在内存中分配四个块,访问页的走
向为4,3,2,1,4,3,5,4,3,2,
1,5,按LRU、OPT算法分别计算缺页
次数
假设开始时所有页均不在内存
LRU
4 3 2 1 4 3 5 4 3 2 1 5
页1 4 3 2 1 4 3 5 4 3 2 1 5
页2
4 3 2 1 4 3 5 4 3 2 1
页3
4 3 2 1 4 3 5 4 3 2
页4
4 3 2 1 1 1 5 4 3
x x x x x x x x
共缺页中断8次
OPT
4 3 2 1 4 3 5 4 3 2
页1 4 3 2 1 1 1 5 5 5 5
页2
4 3 2 2 2 2 2 2 2
页3
4 3 3 3 3 3 3 3
页4
4 4 4 4 4 4 4
x x x x x
共缺页中断6次
1 5
1 1
5 5
3 3
4 4
x
例2
有一虚拟存储系统,采用先进先出的页面淘
汰算法。在内存中为每个进程分配3块。进
程执行时使用页号的顺序为 4 3 2 1 4 3 5 4
3215
(1) 该进程运行时总共出现几次缺页。
(2) 若每个进程在内存有4块,又将产生几
次缺页。
(3) 如何解释所出现的现象。
m=3
FIFO 4 3 2 1 4 3 5 4 3 2 1 5
页1 4 3 2 1 4 3 5 5 5 2 1 1
页2
4 3 2 1 4 3 3 3 5 2 2
页3
4 3 2 1 4 4 4 3 5 5
x x x x x x x x x
共缺页中断9次
m=4
FIFO 4 3 2 1 4 3 5 4 3 2 1 5
页1 4 3 2 1 1 1 5 4 3 2 1 5
页2
4 3 2 2 2 1 5 4 3 2 1
页3
4 3 3 3 2 1 5 4 3 2
页4
4 4 4 3 2 1 5 4 3
x x x x x x x x x x
共缺页中断10次
m=3时,缺页中断9次
m=4时,缺页中断10次
FIFO页面淘汰算法会产生异常现象
(Belady现象),即:当分配给进程
的物理页面数增加时,缺页次数反而
增加
影响缺页次数的因素
(1) 分配给进程的物理块数
(2) 页本身的大小
(3) 程序的编制方法
(4) 页淘汰算法
颠簸(抖动)
在虚存中,页面在内存与外存之间频
繁调度,以至于调度页面所需时间比
进程实际运行的时间还多,此时系统
效率急剧下降,甚至导致系统崩溃。
这种现象称为颠簸或抖动
原因:
分配给进程的物理页面数太少
页面淘汰算法不合理
工作集模型
工作集是进程活跃地访问页面的集
合
工作集随时间而变化
工作集大小与窗口大小密切相关
工作集模型实现的难点在于 动态记
录各个进程的工作集
页故障率反馈模型
系统可以利用页故障率的反馈信
息来动态地调整页面的分配。
规定页故障率的上限和下限。
虚拟段式存储管理
1、段表内容
增加:
特征位(在/不在内存,是否可共享)
存取权限位(读,写,执行)
标志位(是否修改过,能否移动)
扩充位(固定长/可扩充 )
缺段中断处理
检查内存中是否有足够的空闲空间
①若有,则装入该段,修改有关数据
结构,中断返回
②若没有,检查内存中空闲区的总和
是否满足要求,是则应采用紧缩技术,
转① ;否则,淘汰一(些)段,转
①
段的动态链接
[x]段
[w]段
…………
Load *1,[x]|<y>
…………
<y>
…………
125743
…………
段表
段号 …
0
段首
址
1
2
…
……
段名-段号对照表
段 段首
名 址0
[MAI
N]
[A]
1
[W]
2
… ……
[w]段 [段号=2 ]
……
60 Load *1,2|100
……
100 1 … 2 160
……
160 “7[x]|<y>”
……
……
Y
……
……
200
……
……
200 “125734”
……
段表
段号 …
0
段首
址
1
2
3
…
……
段名-段号对照表
段 段首
名 址0
[MAI
N]
[A]
1
[W]
[X]
…
2
3
……
[w]段 [段号=2 ]
……
60 Load *1,2|100
……
100 0 … 3 200
……
160 “7[x]|<y>”
……
[X]段
……
……
Y
200
……
……
……
200 “125734”
……
课堂练习
1、 某程序在内存中分配3块内存,初始为
空,访问页的走向为2,3,2,1,5,2,
4,5,3,2,5,2,用FIFO和LRU算法
分别计算缺页次数
FIFO
2 3 2 1 5 2 4 5 3 2
5 2
页1 2 3 3 1 5 2 4 4 3 3 5 2
页2
2 2 3 1 5 2 2 4 4 3 5
页3
2 3 1 5 5 2 2 4 3
x x x x x x x
x x
LRU
2 3 2 1 5 2 4 5 3 2 5
2
页1 2 3 2 1 5 2 4 5 3 2 5 2
页2
2 3 2 1 5 2 4 5 3 2 5
页3
3 2 1 5 2 4 5 3 3
x x x x x x x
2、 有一页式系统,其页表存放在主存中。
(1) 如果对主存的一次存取要3us,问实
现一次页面访问要多长时间。
(2) 如系统有快表,平均命中率为97%,
假设访问快表的时间忽略为0,问此时一
次页面访问要多长时间。
1、2*3=6us
2、0.97*3+0.03*6=3.09us
3、在分页存储管理系统中,有一作业大小
为4页,页长为2K,页表如下:
试借助地址变换图(即要求画出地址变换
图)求出逻辑地址4635所对应的物理地
页号 块号
址。
0
5
1
3
2
7
3
6
页表首址
00010
01000011011
10
+
页号
0
1
2
3
块号
5
3
7
6
物理地址为:14875
00111
0
01000011011
作业
第六章 设备管理
设备分类
6.2 设备的物理特性
6.3 通道技术
6.4 设备的分配与去配
6.5 设 备 驱动
6.6 缓冲技术
6.7 虚拟设备
6.1
设备管理的目标
1、设备独立性
所谓设备独立性:用户在编制程序时,使用
逻辑设备名,由系统实现从逻辑设备到物理
设备(实际设备)的转换。用户能独立于具
体物理设备而方便的使用设备。
两种类型的设备独立性
独立于同一类设备中的某台具体设备。
如果一个系统中有若干台相同的设备,
用户编程时不指定使用哪一个具体的设
备,而仅说明要使用哪一类设备,系统
根据当前这一类设备的具体状况给用户
分配一台具体的设备。用户不用关心他
所使用的到底是哪一台设备。
独立于不同类型的设备。
例如有一程序要求输入信息,可以从各种不同类型的
输入设备上给程序输入数据,则称该程序是独立于
不同类型的输入设备的。
又如在MS-DOS系统中,程序的I/O操作不必指出在哪台
设备上进行,一般情况下是从键盘上输入数据,而
在显示器上输出数据。但用户可以做一次联机操作
命令Ctrl+P,则输出数据可以在打印机上打印出来。
2、提高设备利用率
提高设备的使用效率是操作系统设备管理
的重要目标。
为达到此目标除了要合理分配和使用外部
设备外,还应努力提高设备同CPU的并行程
度。与此有关的技术有:通道技术和缓冲
技术。
设备管理的功能
1、 监视系统中所有设备的状态
一个计算机系统中存在着许多设备,在系统运行
期间这些设备都在处理各自所承担的工作,并
处于各种不同的状态,系统要有效地管理和使
用这些设备就必须监视它们的工作状态。
设备的分类
1.按用途分
– 输入输出型设备
输入设备
输出设备
– 存储型设备
磁带机
磁盘机
磁鼓机
2、按信息交换的单位分类
字符设备:I/O传输的单位是字节,如打
印机、modem等。特征:速率较低、中断
驱动。
块设备 : I/O传输的单位是块,如磁盘、
磁带。特征:速率高(几兆)、可随机
访问任一块、DMA方式驱动。
3. 按资源管理方式分类
独占型设备:在任一段时间内最多有一个进程占用
它,字符设备及磁带机属独占型设备。即临界资源。
共享型设备:多个进程对它的访问可以交叉进行,
除磁带机外的块设备属共享设备
虚拟设备:在一类设备上模拟另一类设备,常用共
享设备模拟独占设备,用高速设备模拟低速设备,
被模拟的设备称为虚拟设备
4、按传输速率分
低速设备:每秒几个到数百字节。如Modem
中速设备:每秒数千到数万字节。如打印机
高速设备:每秒数百K到数兆。如磁盘、磁带
设备的物理特性
输入输出型设备
– 以字符为I/O传输的基本单位
– 通道技术
存储型设备
– I/O传输一完整的块为基本单位
磁带
磁头
带头标
信息块
间隙 信息块 间隙
成组技术
……
尾标
假定磁带的记录密度为每英寸800字符,每个逻辑记录长为
160字符,块间间隙为0.6英寸,现有1000个逻辑记录需要存
储.问:
1.计算不成组操作时,磁带的利用率是多少?
2.若以5个逻辑记录为一组操作时,磁带的利用率又是多少?
3.物理记录(块)至少为多大时,才不至于浪费超过50%的利
用率?
磁盘物理结构
扇区
磁道
磁盘结构及磁道扇区划分
磁道(cylinders)0磁道中
存有文件分配表(FAT)信息
扇区(Sectors,512字节)
磁盘容量
容量=磁盘面数磁道数/面扇区数/磁道字节数/扇区
容量 = 2 80 18 512(字节)
= 1474560(字节B) 1024
= 1440(KB)
硬磁盘的结构
柱面
柱面、磁头、扇区
唯一确切的扇区:
0柱面、1磁头、12扇区
磁道
扇区
三维地址:
一维地址:
柱面号:0…i…L-1
块号b
盘面号:0…j…m-1
扇区号:0…k…n-1
i=b÷(m×n)
b=i × m×n +j ×n +K
j=b mod (m×n) ÷n
k=b mod (m×n) mod n
假设某磁盘组 共有100个柱面,8个磁头,每个盘面被分为4个
扇区,若逻辑记录的大小与扇区大小相等,柱面,盘面和扇
区的编号从“0”开始, 现用字长为16位的200个字(第0字
到第199字)组成字位映像图来指示磁盘空间的使用情况
,请问:
1. 文件系统发现字位映像图中的第15个字第7位为0,而准备
分配给某一记录时,该记录会存放到磁盘的哪一块上,此
块的物理位置如何?(柱面号,盘面号和扇区号如何?)
2. 删除文件时,要归还存储空间,当第56柱面第6盘面第3扇
区的块变成了空白块时,字位映像图中的第几位应该由1
改为0?
1、 I/O系统结构
通道技术
在大型计算机系统
中 较 为 典 型 的 I/O
系统结构是主机、
通道、控制器和外
部设备。
外部设备通常由机械的和电子的两部分组
成,电子部分构成控制器,也叫适配器。
一个控制器可交替地控制几台同类设备,例
如一个磁盘控制器可以控制两台磁盘驱动器。
在没有通道的计算机系统中,中央处理机是
通过控制器控制I/O操作的。
在采用了中断技术以后,中央处理机和
外部设备已能在一定程度上并行工作,
但每传一个信息单位(一个字节或一个
字符块),就要插入一次中断处理,每
次中断处理CPU少则要执行几十条指令,
多则要执行上千条指令,当一个系统配
置的设备较多时,I/O操作较为频繁的情
况下,CPU可能完全陷入I/O处理,这样
会大大地降低计算机系统的效率,解决
的方法就是用到通道技术。
2、通道概念
为使中央处理机从繁忙的I/O处理中摆脱出
来,现代大、中型计算机系统中设置了专门
的处理I/O操作的处理机,并把这种处理机称
为通道。通道在CPU的控制下独立地执行通道
程序,对外部设备的I/O操作进行控制,以实
现内存与外设之间成批的数据交换。
通道=I/O处理机
当完成CPU交给的任务后,向CPU发出中
断信号,请求CPU的处理。这样就使得
CPU基本上摆脱了I/O操作的处理工作,
提高了CPU与设备之间的并行程序,从而
提高了整个计算机系统的效率。
通道程序是由通道指令组成,一个通道
可以分时的方式执行几道程序。每道程
序控制一台外部设备。
3、 通道指令和通道程序
通道有它自己的指令系统,用这些指令
编写的程序叫通道程序,通道只能执行
通道程序,不可能执行用户进程。
通道程序保存在内存中
通道指令
操作码 传输字节数 特征位
通道控制部件
通道地址字CAW
通道命令字CCW
通道状态字CSW
通道数据字CDW
地址信息
4、通道的工作过程
某进程在运行过程中,若提出了I/O请求,
则通过系统调用进入操作系统,系统首
先为I/O操作分配通道和外设,然后按
I/O请求生成通道程序并存入内存,把起
始地址送入通道的首地址寄存器(CAW),
接着CPU发出启动通道的指令。
中央处理机启动通道后,通道的工作过程
为:
根据CAW,从内存取出通道指令,送入通道控
制字寄存器(CCW),并修改CAW,使其指向下
一条通道指令。
执行CCW中的通道指令,进行实际的I/O操作,
执行完毕后,如果还有下一条指令,则返回前
一步,否则转下一步。
发出中断信号通知CPU通道程序已执行完成。
P115 图6-4
设备的分配与去配
在多用户或多进程的环境中,每个用户在
完成各自的任务时总是要使用外设,为
用户或进程分配设备是设备管理的主要
功能之一。
设备分配包括:设备分配策略、分配的方
式、分配技术和选择用户的算法。
设备管理数据结构
设备控制块(UCB/DCB)
DCB是设备管理的重要数据结构,在这个结
构中较全面地反映了每台设备的特性、
连接和使用的状态等信息。当一台设备
进入系统时必须创立相应的DCB
DCB的内容
设备标识符:系统有许多设备,为区别起见为
每台设备取个名,这个名叫设备标识符。
设备属性:反映设备的相应特性和类型
设备I/O总线地址:设备和CPU是通过I/O总线
连接起来的,它在总线上有个地址。
设备状态:指设备当时所处的状态。
等待队列指针:等待使用该设备的进程组成等
待队列,这里存放等待队列的队首指针。
图示
设备分配技术
根据设备的特性把设备分成独占设备、共
享设备和虚拟设备三种。
针对这三种设备采用三种分配技术:
独享分配
共享分配
虚拟分配
独占分配
独占型设备有行打印机,键盘,显示器。
磁带机可作为独占设备,也可作为共享
设备。
若对这些设备不采用独享分配就会造成
混乱。因此对独占设备一般采用独享分
配,即当进程申请独占设备时,系统把
设备分配给这个进程,直到进程释放设
申请时执行P操作,释放时执行V操作
备。
共享分配
共享设备包括磁盘,磁带和磁鼓。
对这类设备的分配是采用动态分配的方式进行
的,当一个进程要请求某个设备时,系统按照
某种算法立即分配相应的设备给请求者,请求
者使用完后立即释放。
磁盘设备调度
先到先服务FCFS(first come first serve)
最短查找时间优先SSTF(shortest seek
time first)
– 优先为距磁头当前所在位置最近柱面的请求
服务
扫描算法scan
– 磁头引臂按照方向扫描
N步扫描N-scan
假设一个可移动磁头的磁盘具有200个磁道,其编号为
0-199,系统刚结束对125道的处理,现正在处理143
道的服务请求,假设系统当前I/O请求序列顺序排列
如下:86,147,91,177,94,150,102,175,130
。试问对以下几种磁盘I/O请求算法而言,满足以上
请求序列时,磁头将如何移动,移动的距离各是多
少?(以磁道数计)
1.先来先服务算法FCFS
2.最短查找时间优先调度算法SSTF
3.扫描算法SCAN
缓冲技术
引言
硬缓冲与软缓冲
缓冲池
缓冲技术的实现
缓冲技术的引入
缓冲技术的目的是为了提高中央处理机
与外设的并行程度。
计算机系统中的各种设备(包括中央处理
机)的运行速度差异甚大,CPU的运行速
度是以微秒甚至以纳秒计,而设备的运
行速度则是以毫秒甚至以秒计;(速度
的差异)
另一方面系统的负荷也不均匀,有时处
理机进行大量的计算工作,没有I/O操作,
有时又会进行大量的I/O操作,这两个极
端都会造成系统中的一些设备过于繁忙,
一部分设备过于空闲,严重地影响CPU与
外设的并行工作。
为此人们提出用缓冲技术来匹配CPU与设
备的速度的差异和负荷的不均匀,从而
提高处理机与外设的并行程度。
凡是数据到达和离去速度不匹配的地方
均可采用缓冲技术。
缓冲技术可以用硬件缓冲器来实现,在
设备控制器中有硬件缓冲器,通常容量
较小,一般为1个字节。
软件缓冲技术是应用广泛的一种缓冲技
术,它由缓冲区和对缓冲区的管理两部
分组成。
缓冲池
为了提高缓冲区的利用率,目前广泛流行公用
缓冲池,池中的缓冲区可供多个进程共享。
缓冲池由内存中一组大小相等的缓冲区组成,
池中各缓冲区的大小与用于I/O的设备的基本
信息单位相似,缓冲池属于系统资源,由系
统进行管理。
缓冲池中各缓冲区可用于输出信息,也可用于
输入信息,并可根据需要组成各种缓冲区队
列。
缓冲技术的实现
输入设备
缓冲区
通道程序
进程空间
缓冲区
操作系统
进程空间
缓冲区
操作系统
通道程序
进程空间
输出设备
输入/输出设备
虚拟设备
利用共享设备实现数量 较多,速度较快的独
占型设备。
进程
内存
间
断
传
输
某一区域
共享型设备
连
续
传
输
独占型设备
虚拟分配
系统中独占设备的数量总是有限的,这些独占设备
一旦分配给某个进程往往只有很少时间在工作,许
多时间一直处于空闲状态。而别的进程又因得不到
相应的设备而不能运行,因此严重地影响到整个计
算机系统的效率。
从另一个角度来说,独占设备一般是低速的,若采
用联机操作,也会增加进程的运行时间,影响计算
机系统的效率。
为提高计算机系统的效率,提出了在高速共享设备
上模拟低速设备功能的技术,称为虚拟设备技术。
虚拟分配是针对虚拟设备而言的。
其实现的过程是:
当用户(或进程)申请独占设备时。系统给它分
配共享设备的一部分存储空间。当程序要与
设备交换信息时,系统就把要交换的信息存
放在这部分存储空间。在适当的时候再将存
储空间的信息传输到相应的设备上去处理。
如系统打印信息时,就把要打印的信息送
到某个存储空间中去,然后由系统在适
当时机把存储空间上的信息送到打印机
上打印出来。这个时机可能是打印机空
闲或打印机完成了一用户的信息输出之
后。
通常人们把共享设备中代替独占设备的那
部分存储空间和相应的控制结构称为虚
拟设备,并把对这类设备的分配称作虚
拟分配。
SPOOLing系统
Simultaneaus Periphernal Operations OnLine(外部设备同时联机操作)。
在单道批处理时期,用脱机I/O可以提高CPU
利用率。多道出现后可以利用一道程序来模
拟脱机I/O中的卫星机,这样可实现在主机控
制下的脱机I/O功能。
我们把这种在联机情况下实现的同时外围操
作称为SPOOLing,也称为假脱机操作。
SPOOLing系统的组成
1、输入井和输出井
2、输入缓冲区和输出缓冲区
3、输入进程和输出进程
SPOOLing系统工作原理
作业执行前预先将程序和数据输入到输入井中
作业运行后,使用数据时,从输入井中取出
作业执行不必直接启动外设输出数据,只需将这些
数据写入输出井中
作业全部运行完毕,再由外设输出全部数据和信息
好处:
实现了对作业输入、组织调度和输出的统一管理
使外设在CPU直接控制下,与CPU并行工作(假脱机)
图示
输入装置
输入装置
外
存
输出装置
通
通
道
道
输入井 输出井
通
输出装置
道
SPOOLing系统
输入管
理模块
输出管
理模块
主机系统
SPOOLing系统的特点
1、提高了I/O速度
2、将独占设备改造为共享设备
3、实现了虚拟设备功能
其它技术(*)
总线技术
USB技术
SCSI接口技术
即插即用技术
网络I/O设备
总线技术
新一代计算机出现,带来了总线技术的更新
1、总线的基本概念:
在计算机系统内各种子系统,如CPU、内
存、I/O设备等之间,构建公用的信号或数
据传输通道
这种可共享的传输通道称为总线
2、总线的分类
CPU-内存总线 (非本课程范围)
总线的分类
数据总线
I/O总线
地址总线
控制总线
…...
微型计算机
总线的种类和发展
SCSI总线
USB总线
PCI总线
VESA总线
EISA总线
MCA总线
ISA总线
PC/XT总线 (过时)
1394总线
ISA(工业标准结构)
ISA基于PC/AT总线,是由IEEE(美国电气
电子工程师协会)1987年正式确立的标准。
ISA槽是一个黑色的62+36线插槽。
ISA工作频率定在8.33MHz,数据传输率为
8.33MB/s。
随着系统工作频率的迅速提高,其配用的扩
展卡也逐渐被淘汰,现在最新的主板已开始
取消ISA槽。
PCI (外围部件互连)
1993年Intel发表PCI2.0版,PCI开始走进主
板。
PCI有32位和64位两种,32位PCI槽124线,
64位槽188线,目前常用的是32位插槽。
PCI槽的时钟频率为33.3MHz,32位PCI的数
据传输率为133MB/s,大大高于ISA。所以
PCI问世后迅速成了扩展总线的主流,流行的
扩展卡也都转移到PCI上,如显示卡、声卡、
网卡、MODEM卡等等。
AGP(加速图形端口)
1996年Intel公司在PCI的基础上专为显
示卡接口提出AGP标准。
AGP使用32位数据总线,工作频率为
66.6MHz
AGP 1x的数据传输率可达266MB/s,
AGP 2x在一个时钟周期的上升沿和下降
沿各传输一次资料,其数据传输率可达
到533MB/s,而AGP 4x的理论传输率
为1.066GB/s。
IEEE1394
IEEE1394是1995年由IEEE将APPLE公
司高速串行总线“FIRE WIRE”标准化而
成,目前还在发展中。
IEEE1394适用于声音、图像和视频多媒
体产品、高速打印机和扫描仪产品、硬
盘等存储设备、数码摄影机、显示器和
影音录放设备等。
IEEE1394的特点
标准数据传输率分三种:100Mbps、
200Mbps和400Mbps, IEEE1394商业联盟
计划将它提高到800Mbps、1Gbps和
1.6Gbps;
支持同步模式传输,可实现“准实时”的多媒
体数据传输;
连接方便,易于扩展,不必设定标识号和连
接终端负载,可采用菊花链或树形方式连接,
所有连接的设备是平等关系,不用个人计算
机介入也可形成系统,支持热插拔;
单根线缆最长为4.5米,最大可进行15级
级联,连接最大距离为72米;
采用6股铜芯线缆,两股用于供电,另外
四股分为两对双绞线,接头小巧耐用。
USB技术
USB(Universal Serial Bus)通用串行总线
一种连接I/O串行设备的技术标准
USB是以Intel为主并有Compaq、MicroSoft、
IBM、DEC、NEC、Northern Telecom7家公司共
同制定的串行接口规格。
USB接口适用于低、中速的外围设备如键盘、鼠标、
打印机、数码相机、调制解调器、扫描仪等。
USB设备的分类
USB设备分为两类:
(1)USB集线器:本身可再接其他
USB外围设备
(2)USB设备:连接在计算机上用来
完成特定功能并符合USB规范的I/O设备
单元,如鼠标、键盘等
USB的传输方式
4种不同的数据传输方式:
(1)等时传输方式
以固定的传输速率,连续不断传输数据,发生错误
时,USB不处理,而是继续传送新的数据。用于需
要连续传输,且对数据的正确性要求不高而对时间
极为敏感的外部设备,如麦克风、音箱以及电话等
(2)中断传输方式
该方式传送的数据量很小,但这些数据需要及时处
理,以达到实时效果,此方式主要用在键盘、鼠标
以及游戏手柄等外部设备上
(3)控制传输方式
处理器与USB设备的数据传输,包括设备控制指令、
设备状态查询及确认命令。当USB设备收到这些数
据和命令后将按照先进先出的原则按队列方式处理
到达的数据
(4)批传输方式
用来传输要求正确无误的数据。通常打印机、扫描
仪和数码相机以这种方式与主机连接
除等时传输方式外,其他3种方式在数据传输发生
错误时,都会试图重新发送数据以保证其准确性
USB 的特点
数据传输具有1.5Mbps和12Mbps两种方式;
连接方便,易于扩展,可使用集线器进行树
形连接,连接的设备最多可达6层127个,支
持热插拔;
连接的设备之间不是平等关系而是亲子关系,
上下游的关系明确,对上和对下的电缆插头
不一样,而且必须用个人计算机作为主设备,
各个分设备只能同主设备进行通信并受主设
备的控制;
单根线缆最长为5米;
采用4股铜芯线缆,两股用于供电,直接
由主板提供+5V电源,另外二股为信号
线。
USB 2.0规范将最高速率提高到480
Mbps
SCSI接口技术
小型计算机系统接口
(Small Computer System Interface)
最早研制于1979年,原是为小型机的研制出的
一种接口技术,但随着电脑技术的发展,现
在它被完全移植到了普通微机上。
在计算机外部设备,尤其是存储设备的
接口方面SCSI接口和IDE接口一直是飞
速发展的两大阵营。
IDE接口价格低廉,兼容性好,主板的
BIOS能够支持,使用方便,长期以来的
不断改进,使其性能也有了长足的进步,
传输速率现已达到66MB/S。
SCSI接口从技术和性能上说,其始终拥
有着顶级设备的特征。
IDE接口在PC机上拥有绝大多数的市场
份额
SCSI接口却以其优异的性能成为高端电
脑市场的绝佳选择。
二者的区别主要在于:
IDE的工作方式需要CPU的全程参与
SCSI接口则完全通过独立的高速的SCSI
卡来控制数据的读写操作
优缺点
SCSI接口优点:
1. 适应面广,在一块SCSI控制卡上就可以
同时挂接15个设备
2. 高性能(具有很多任务、宽带宽及少
CPU占用率等特点)
3. 具有外置和内置两种
SCSI接口缺点: 价格昂贵、安装复杂
即插即用技术
Plug and Play
计算机系统I/O设备与部件配置的应用技术
顾名思义:
插入就可用,不需要进行任何设置操作
PnP技术的产生
由于一个系统可以配置多种外部设备,
设备也经常变动和更换,它们都要占有
一定的系统资源,彼此间在硬件和软件
上可能会产生冲突。因此在系统中要正
确地对它们进行配置和资源匹配;当设
备撤除、添置和进行系统升级时,配置
过程往往是一个困难的过程
PnP技术的特点
(1)支持I/O设备及部件的自动配置,使
用户能够简单方便地使用系统扩充设备
(2)减少由制造商装入的种种用户支持
和限制,简化部件的硬件跳接设置,使
I/O附加卡和部件不再具有人工跳接线
设置电路
(3)在主机板和附加卡上保存系统资源的配
置参数和分配状态,有利于系统对整个I/O资
源的分配和控制
(4)支持和兼容各种操作系统平台,具有很
强的扩展性和可移植性。
(5)在一定程度上具有“热插入”、“热拼接”
技术
网络I/O设备
典型网络I/O设备——网络打印
以往的打印模式
打印机连接到网上PC上,或连到文件服务器
上,提供网络打印服务
新的网络打印
采用网络打印服务器技术,打印机直接上
网
任何数据直接送到网络打印机输出
打印服务器还能实现多种网络自动切换:不同网
络环境中的用户都可以直接向同一台打印机发送
打印作业,打印服务器会自动识别
较强的打印管理功能:可以管理网络打印驱动,
而且容易安装和管理;可以实现远程登录访问,
进行远程打印机管理
提高工作效率
分布式的环境设置:可以安装在网络的任何地方,
这种打印服务方式,就显得更加灵活和满足需要
第七章 作业管理
7.1 作业及其分类
7.2 批处理作业管理
7.3 交互式作业管理
处理机调度概述
处理机调度(CPU调度)要解决的问题:
WHAT:按什么原则分配CPU
—调度算法
WHEN:何时分配CPU
—调度的时机
HOW: 如何分配CPU
—CPU调度过程(进程的上下文切换)
处理机调度的三个层次
处理机是计算机系统中的重要资源
处理机调度算法对整个计算机系统的综合性
能指标有重要影响
可把处理机调度分成三个层次:
高级调度
中级调度
低级调度
高级调度
也称为作业调度或宏观调度,一般在批
处理系统中有作业调度。
中级调度
涉及进程在内外存间的交换,从存储器
资源管理的角度来看,把进程的部分或
全部换出到外存上,可为当前运行进程
的执行提供所需内存空间。
低级调度
也称微观调度、进程调度,从处理机资源分
配的角度来看,处理机需要经常选择就绪进
程或线程进入运行状态。由于低级调度算法
的频繁使用,要求在实现时做到高效
作业调度
作业的基本概念
(1)作业
要求计算机系统按照指定步骤对初始数据进行处理
并得到结果的一系列的工作集合。
作业更强调完整的工作过程。
(2)作业步
一个作业可划分成若干部分,称为一个作业步
典型的作业控制过程:
“编译”、“连接装配”、“运行”
(3)典型的作业步
批处理作业
– 以脱机操作为主要特征
交互式作业
– 以联机操作为主要特征,在分时系统以及实
时系统中所处理的作业属于此类。
批处理作业控制语言与作业说明书
1、作业控制语言
作业说明书:用户用于描述批处理作业处
理过程
书写作业说明书的语言称为作业控制语
言(JCL)
2、作业说明书
表达用户对作业的控制意图
内容:
作业的基本描述
作业控制描述
资源要求描述
$ SNUMB JOB1,40
$ INDET
123,USER1
$ OPTION FORTRAN77
$ FORTRAN77
…………………..
$ EXECUTE
$ LIMITS 20,64K,1000
$ ENDJOB
批处理作业的状态及其转换
提交
假脱机输入
后备
执行
完成
退出
作业调度(1) 作业调度(2) 假脱机输出
作业控制块与作业表
1、作业控制块(JCB:Job Control
Block)
作业控制块是批处理作业存在的标志
保存有系统对于作业进行管理所需要的
全部信息
位于磁盘区域中
2、作业控制块的内容
作业控制块中所包含的信息数量及内
容因系统而异
作业标知
用户名称
用户帐号
调度信息
资源需求
作业状态
作业类别
输入井地址
输出井地址
进入系统时间
开始处理时间
作业完成时间
作业退出时间
资源使用情况
作业控制块JCB
3、作业控制块的建立
当作业开始由输入设备向磁盘的输入
井传输时,系统输入程序为其建立一个作
业控制块,并进行初始化
初始化的大部分信息取自作业说明书
4、作业控制块的使用
需要访问作业控制块的程序:
系统输入程序
作业调度程序
作业控制程序
系统输出程序等
5、作业控制块的撤消
作业完成后,其作业控制块由系统输
出程序撤消
作业控制块被撤消后其作业也不复存在
6、作业表
每个作业有个作业控制块
所有作业JCB构成一个作业表
作业表存放在外存固定区域中,长度是固定
限制了系统所能同时容纳的作业数量
系统输入程序、作业调度程序、系统输出
程序都需要访问作业表,因而存在互斥问题
JCB1
JCB2
…… JCBi
作业表
……
JCBn
作业的建立
经历两个过程
1、作业的输入
2、JCB的建立
作业控制块JCB和作业:一一对应关系
1、作业的输入
将作业程序、数据和作业说明书从输入设备(例
如键盘)输入到外存,并形成初始信息
作业输入方式
–联机输入方式
–脱机输入方式
–SPOOLing系统
联机输入方式
用户和系统通过交互会话来输入作业
外围设备直接和主机连接
脱机输入方式
为了解决单台设备联机输入时的CPU浪费问题
2、JCB的建立
在系统把作业信息输入到输入井之后,根据作
业说明书和有关作业信息在外存的位置等,
建立作业控制表JCB
JCB包含对作业进行管理所必须的信息
JCB表的数量是一个常数
外存输入井的大小有限
只有在获得JCB表项和足够输入井空间后
作业才可能创建成功
批处理作业的调度
主要功能:
审查系统能否满足用户作业的资源要求
按照一定的算法从输入井中的后备作业中
选取作业
调度的关键在选择恰当的算法
1、调度算法评价
调度实质上是一个策略问题
设定的目标往往是相互冲突的
目标:
单位时间内运行尽可能多的作业
使处理机尽可能保持“忙碌”
使各种I/O设备得以充分利用
对所有的作业都是公平合理的
要设计一个理想的调度算法是一件十分困难的事
在实际系统中,调度算法往往折衷考虑
设计调度算法时应考虑的因素:
调度算法应与系统设计目标保持一致
注意系统资源均衡使用
保证提交的作业在截止时间内完成
设法缩短作业平均周转时间
大多数操作系统都采用比较简单的调度算法
2、调度算法性能的衡量
作业平均周转时间
假定某一作业进入“输入井”的时间为Si,
它被选中执行,运行结束时的时间为Ei
周转时间为Ti =Ei – Si
则作业平均周转时间为:
n
T=( Ti )×
i 1
n为作业数
1
n
平均带权周转时间
W=(
n
Ti
ri )×
i 1
1
n
ri 为某作业i的实际执行时间
3、系统进行作业调度的决策因素
作业到达时间
预先为作业确定的优先级
作业所需的CPU时间C
存储要求M
打印输出的行数L
其他的资源要求
4、常见的批处理作业调度算法
先来先服务算法(FCFS:First Come First
Serve)
最短作业优先算法(SJF:Shortest Job First)
最高响应比优先算法(HRN:Highest
Response Ratio Next)
响应比R = 作业周转时间 / 作业处理时间
=(作业处理时间+作业等待时间)/ 作业处
理时间
= 1 +(作业等待时间 / 作业处理时间)
基于优先数调度算法(HPF:Highest Priority First)
(a)由用户规定优先数(外部优先数)
用户提交作业时,根据急迫程度规定适当的优先
数,作业调度程序根据JCB优先数决定进入内存的
次序
(b)由系统计算优先数(内部优先数)
例:可按如下公式计算作业的优先数:
优先数 = 用户规定优先数 – 作业处理时间 +
作业等待时间 – 输出量
均衡调度算法(分类排队算法)
基本思想:
根据系统运行情况和作业属性将作业分类
轮流从不同的作业类中挑选作业
目标:
力求均衡地利用各种系统资源,发挥资源使用效
率
力求使用户满意
均衡调度算法例1:
将待处理作业分成如下队列:
队列1:计算量大的作业
队列2:I/O量大的作业
队列3:计算量与I/O量均衡的作业
调度时,在三个队列中各取一些作业,在内存中
的作业有的使用处理机,有的使用外部设备
使得系统的各种资源能得到充分利用
均衡调度算法例2:
将待处理作业分成如下三个队列:
队列1:长作业
队列2:中等长度作业
队列3:短作业
调度时
取队列1一道作业,队列2一道作业,队列3一
道作业
长作业用户和短作业用户均比较满意
5、作业调度算法应用例子1
假设在单道批处理环境下有四个作业,
已知它们进入系统的时间、估计运行
时间,
应用先来先服务、最短作业优先和最
高响应比优先作业调度算法,分别计
算出作业的平均周转时间和带权的平
均周转时间
先来先服务调度算法计算结果
作业
JOB1
JOB2
JOB3
JOB4
进入时间
估计运行
开始时间
时间
(分钟)
120
8:00
8:00
50
8:50
10:00
10
9:00
10:50
20
9:50
11:00
作业平均周转时间 T = 112.5
作业带权平均周转时间 W = 4.975
结束时间
周转时间
(分钟)
带权周转
时间
10:00
10:50
11:00
11:20
120
120
120
90
1
2.4
12
4.5
450
19.9
最短作业优先作业算法计算结果
作业
JOB1
JOB2
JOB3
JOB4
进入时间
估计运行
开始时间
时间
(分钟)
120
8:00
8:00
50
8:50
10:30
10
9:00
10:00
20
9:50
10:10
作业平均周转时间 T = 95
作业带权平均周转时间 W = 3.25
结束时间
周转时间
(分钟)
带权周转
时间
10:00
11:20
10:10
10:30
120
150
70
40
1
3
7
2
380
13
最高响应比优先作业算法计算结果
作业调度与进程调度
作业能否占用处理器?什么时间能够占用处理
器?
由进程调度来决定
进程的初始状态为就绪状态
进程调度选择当前可占用 CPU处理进程,当它
让出处理器时,进程调度就再选另一作业的
进程
作业调度与进程调度相互配合,实现作业的并
作业退出
• 把输出结果送到输出设备上(启动缓
输出进程完成)
• 回收各种资源
交互式作业的管理
终端命令语言
命令解释程序
终端用户的创建与清除
– 用户名,帐号,口令,历次登录使用时间,
资源使用情况,其他
终端用户的注册与注销
– Login/logon
– Logout/logoff
第八章 进程管理
8.1 并发进程
8.2 进程互斥
8.3 进程同步
8.4 进程通信
8.5 进程死锁
程序的顺序执行
程序的顺序执行如图
在计算机系统中只有一个程序在运行,这个程
序独占系统中所有资源,其执行不受外界影响。一
道程序执行完后另一道才能开始。
程序顺序执行的特点
顺序性:一个程序开始执行必须要等到
前一个程序已执行完成
封闭性:程序一旦开始执行,其计算结
果不受外界因素影响
可再现性:程序的结果与它的执行速度
无关(即与时间无关),只要给定相同
的输入,一定会得到相同的结果。
程序的并发执行
所谓程序的并
发执行是指:若干
个程序同时在系统
中执行,这些程序
的执行在时间上是
重叠的,一个程序
的执行尚未结束,
并发与并行概念的区别?
另一个程序的执行
Concurrency,parallel 已经开始。
程序并发执行的特点
间断性
失去程序的封闭性
不可再现性
任何并发执行都是不可再现的吗?
进程互斥
共享变量与临界区域
临界区域与进程互斥
进程互斥的实现
–利用软件方法解决进程互斥问题
–利用硬件方法解决进程互斥问题
–用上锁开锁原语实现进程互斥
基本概念
与时间有关的错误:
一飞机订票系统,两个终端,运行T1、T2进程
T1 :
T2:
...
...
Read(x);
Read(x);
if x>=1 then
if x>=1 then
x:=x-1;
x:=x-1;
write(x);
write(x);
...
...
p
g
c
p
c
g
c
g
并发环境下程序间的制约关系
p
同步:对于进程操作的时间顺序所加的某种
限制,如操作A应在B之前执行。
互斥:同步的特例,多个操作决不能同时执
行, 如:操作A和操作B不能在同时执行。
(注意:理解不能同时执行的准确含义)
临界资源(critical resource):一次仅允许一
个进程访问的资源。
如:进程AB共享一台打印机,若让它们交替
使用则得到的结果肯定不是我们希望的。
临界资源可能是硬件,也可能是软件:变量,
数据,表格,队列等。
并发进程对临界资源的访问必须作某种限制,
否则就可能出与时间有关的错误,如:联网
售票。
临界区(critical section):临界段,在每个程
序中,访问临界资源的那段程序。
注意:临界区是对某一临界资源而言的,
对于不同临界资源的临界区,它们之间不存
在互斥。
如有程序段A、B是关于变量X的临界区,
而C、D是关于变量Y的临界区,那么,A、B
之间需要互斥执行,C、D之间也要互斥执行,
而A与C、B与D之间不用互斥执行。
解决互斥的准则
为了禁止两个进程同时进入临界区内,可以采用
软件办法或系统提供的同步机构来协调它们的关
系。但是,不论用什么办法都要遵循下述准则:
1、当有若干进程欲进入它的临界区时,应在有
限时间内使进程进入临界区。换言之,它们
不应相互阻塞而致使彼此都不能进入临界区
2、每次至多有一个进程处于临界区。
3、进程在临界区内仅逗留有限的时间。
对临界区的管理原则
有闲让进
忙则等待
多中选一
有限等待
让权等待
软件方法解决进程互斥
现在很少用软件方法解决互斥,但通过
学习软件解法能使读者了解到,在早期
进程互斥问题的解决并不是一件很简单
的事。
假如有两个进程Pi和Pj,它们共享一
个临界资源R。如何用软件方法使进程Pi
和Pj能互斥地访问R。 下面介绍四个算
法。
算法1
设整型变量turn,用于指示被允许进入临界区
的进程的编号,即若turn=0,表示进程Pi可进
入。turn =1表示进程Pj可进入。
进程Pi :
Repeat
While turn<>i do no_op;
Critical section
turn:=j;
Other code
Until false;
算法1的问题
该算法可确保每次只允许一个进程进
入临界区。但它强制两个进程轮流进入。
如当Pi退出时将turn置为1,以便 Pj能进
入,但Pj暂不需要进入,而这时Pi又需
要进入时,它无法进入。这不能保证准
则1。
算法2
设var flag:array[0..1] of boolean,若flag[i]=true,
表示进程Pi正在临界区内。flag[i]=false表示进程Pi不
在临界区内。若flag[j]=true,表示进程Pj正在临界区
内。flag[j]=false表示进程Pj不在临界区内。
Pi进程:
Repeat
While flag[ j ] do no_op;
flag[i]:=true;
Critical section
flag[i]:=false;
Other code
Until false;
算法2的问题
该算法可确保准则1。但又出现新问
题。当pi和pj都未进入时,它们各自的访
问标志都为false。如果pi和pj几乎同时要
求进入,它们都发现对方的标志为false,
于是都进入了。 这不能保证准则2。
算法3
算法2 的问题在于:当进程Pi观察到进程Pj的
标志为false后,便将自己的标志由false改为
true,而正是在这两步之间,可能发生进程切
换 。 当 Pj 运 行 时 , 它 会 观 察 到 Pi 的 标 志 为
false,从而可以将自己的标志设为true,并
进入临界区。若在临界区的执行过程中发生
了进程切换,Pi可能获得处理机而进入临界
区。
在算法3 中,设var Flag:array[0..1] of
boolean,若flag[i]=true,表示进程Pi希
望进入临界区内。若flag[j]=true,表示进
程Pj希望进入临界区。
Pi进程:
Repeat
flag[i]:=true;
While flag[j] do no_op;
Critical section
flag[I]:=false;
Other code
Until false;
算法3的问题
该算法可确保准则2。但又出现新问
题。它可能造成谁也不能进入。如,当pi
和pj几乎同时都要进入,分别把自己的标
志置为true,都立即检查对方的标志,发
现对方为true. 最终谁也不能进入。 这不
能保证准则1。
算法4(正确算法)
组合算法1、3,为每一进程设标志位flag[i],
当flag[i]=true时,表示进程pi要求进入,或正
在临界区中执行。此外再设一个变量turn,用
于指示允许进入的进程编号。
进程为了进入先置flag[i]=true,并置turn
为 j , 表 示 应 轮 到 pj 进 入 。 接 着 再 判 断
flag[ j ] and turn=j的条件是否满足。若不
满足则可进入。或者说,当flag[ j ]=false
或者turn=i时,进程可以进入。前者表示
pj未要求进入,后者表示仅允许pi进入。
算法4(正确算法)
Repeat
flag[i]:=true;
turn:=j;
While (flag[ j] and turn=j) do no_op;
Critical section
flag[i]:=false;
Other code
Until false
软件解法的缺点
1. 忙等待
2. 实现过于复杂,需要较高的编程技
巧
硬件方法解决进程互斥
用软件解决很难,现代计算机大多提
供一些硬件指令。
利用Test-and-Set指令实现互斥
利用swap指令实现进程互斥
Test-and-Set指令实现互斥
1、Test-and-Set指令
Function TS(var lock:boolean):boolean;
Begin
TS:=lock;
Lock:=true;
End;
其中,有lock有两种状态:当lock=false时,
表示该资源空闲;当lock=true时,表示该
资源正在被使用。
2、利用TS指令实现进程互斥
为每个临界资源设置一个全局布尔变量lock,并赋
初值false,表示资源空闲。
repeat
while TS(lock) do skip;
critical section
lock:=false;
Other code
Until false;
swap指令实现进程互斥
1、swap指令
又称交换指令,X86中称为XCHG指令。
Procedure swap(var a,b:boolean);
Var temp:boolean;
Begin
Temp:=a; A:=b;
B:=temp;
End;
2、利用swap实现进程互斥
为每一临界资源设置一个全局布尔变量lock,其初值
为false,在每个进程中有局部布尔变量key。
Repeat
key:=true;
Repeat
Swap(lock,key);
Until key=false;
Critical section
lock:=false;
Other code
Until false;
用原语实现进程互斥
锁即操作系统中的一标志位,0表示资源可用,
1表示资源已 被占用。用户程序不能对锁直
接操作,必须通过操作系统提供的上锁和开
锁原语来操作。
通常锁用w表示,上锁开锁原语分别用lock(w)、
unlock(w)来表示。
上锁和开锁原语
上锁原语lock(w)可描述为:
L:if(w==1) goto L
else w=1;
开锁原语unlock(w)可描述为:
w=0;
用原语实现进程互斥
改进的上锁原语
上述上锁原语中存在忙等待。
改进的开锁原语
信号量及P、V操作
1965年,由荷兰学者Dijkstra提出(所以
P、V分别是荷兰语的test (proberen) 和
increment (verhogen) )
一种卓有成效的进程同步机制
最初提出的是二元信号量(互斥)
推广到一般信号量(多值)(同步)
P、V操作是原语
信号量:semaphore
是一个数据结构
定义如下:
struct semaphore
{
int value;
pointer_PCB queue;
}
信号量说明:
semaphore s;
P操作
P(s)
{
s.value = s.value -1 ;
if (s.value < 0)
{
该进程状态置为等待状态
将该进程的PCB插入相应的等待队列末尾s.queue;
}
}
V操作
V(s)
{
s.value = s.value +1;
if (s.value < = 0)
{
唤醒相应等待队列s.queue中等待的一个进程
改变其状态为就绪态
并将其插入就绪队列
}
}
信号量的使用
必须置一次且只能置一次初值
初值不能为负数
只能执行P、V操作
用P、V操作解决进程间互斥问题
P1
P2
P3
P(mutex)
P(mutex)
V(mutex)
P(mutex)
V(mutex)
V(mutex)
互斥区
信号量及P、V操作讨论
对于两个并发进程,互斥信号量的值
仅取1、0和-1三个值
若MUTEX=1表示没有进程进入临
界区
若MUTEX=0表示有一个进程进入
临界区
若MUTEX=-1表示一个进程进入
临界区,另一个进程等待进入。
信号量及P、V操作讨论(续1)
1) 信号量的物理含义:
S>0表示有S个资源可用
S=0表示无资源可用
S<0则| S |表示S等待队列中的进程个数
P(S):表示申请一个资源
V(S):表示释放一个资源。
信号量的初值应该大于等于0
信号量及P、V操作讨论(续2)
2) P.V操作必须成对出现,有一个P操作就一定有
一个V操作
当为互斥操作时,它们同处于同一进程
当为同步操作时,则不在同一进程中出现
如果P(S1)和P(S2)两个操作在一起,那么P操作的
顺序至关重要。
一个同步P操作与一个互斥P操作在一起时,同步
P操作在互斥P操作前
而两个V操作无关紧要
信号量及P、V操作讨论(续3)
3)P、V操作的优缺点
优点:
简单,而且表达能力强(用P、V操作可解决任
何同步互斥问题)
缺点:
不够安全,P、V操作使用不当会出现死锁;
遇到复杂同步互斥问题时实现复杂
信号量集——AND型信号量集
AND型信号量集是指同时需要多种资源且
每种占用一个时的信号量操作
AND型信号量集的基本思想:在一个原语
中申请整段代码需要的多个临界资源,要
么全部分配给它,要么一个都不分配
AND型信号量集P原语为Swait
AND型信号量集V原语为Ssignal
进程同步
同步问题可分为两类:
保证一组合作进程按确定的次序执行
保证共享缓冲区的合作进程的同步。
合作进程的执行次序
若干个进程为了完成一个共同任务而并发执行,在这些进程
中,有些进程之间有次序的要求,有些进程之间没有次序的
要求,为了描述方便,可以用一个图来表示进程集合的执行
次序。如图
例
如图,试用信号量实现这三个进程的同
步。
设有两个信号量SB、SC,初值均为0
Pa:
Pb:
Pc:
…
P(SB);
P(SC)
V(SB);
…
…
V(SC);
解
设有两个信号量S1、S2,初值均为0
P1:
P2:
P3:
…
…
P(S1)
V(S1);
V(S2);
P(S2)
…
解
设有5个信号量S2、S3、S4、S5、S6,初值均为0
P1:
P2:
…
P(S2);
V(S2);
…
V(S3);
V(S4); V(S6);
P3:
P(S3)
…
V(S5)
P4:
P(S4);
…
P5:
P(S5);
P(S5);
…
V(S5); V(S6);
P6:
P(S6);
P(S6);
…
用P.V操作解决司机与售票员的问题
司机进程:
while(1)
{
启动车辆
售票 员 进程 :
while(1)
{
关门
正常驾驶
售票
到站停车
}…
开门
}…
解
设有两个信号量S1,S2,初值均为0。
司机进程:
while(1)
{
P(S1)
启动车辆
售票 员 进程 :
while(1)
{
关门
V(S1)
正常驾驶
售票
到站停车
V(S2)
}…
P(S2)
开门
}…
共享缓冲区的进程的同步
设某计算进程CP和打印进程IOP共
用一个单缓冲区,CP进程负责不断地
计算数据并送入缓冲区T中,IOP进
程负责不断地从缓冲区T中取出数据去
打印。
分析
通过分析可知,CP、IOP必须遵守以
下同步规则:
当CP进程把计算结果送入缓冲区时,
IOP进程才 能从缓冲区中取出结果去打
印;
当IOP进程把缓冲区中的数据取出打印后,
CP进程才能把下一个计算结果送入缓
冲区
为此设有两个信号量Sa=0,Sb=1,Sa表示缓冲区
中有无数据,Sb表示缓冲区中有无空位置。
两个进程的同步可以描述如下:
【思考题】
1.用P.V操作解决下图之同步问题
提示:分别考虑对缓冲区S和T的同步,再
合并考虑
get
copy
put
s
t
解
copy:
put:
get: 设置四个信号量Sin=1,Sout=0,Tin=1,
Tout=0;
while(1)
while(1)
while(1)
{
{
{
P(Sout);
P(Tout);
P(Sin);
P(Tin);
将数从T取走;
将数放入S;
将数从S取出放入T;
V(Tin);
V(Sout);
V(Tout);
}
}
V(Sin);
}
【思考题】
桌上有一空盘,最多允许存放一只水果。爸
爸可向盘中放一个苹果或放一个桔子,儿子
专等吃盘中的桔子,女儿专等吃苹果。
试用P、V操作实现爸爸、儿子、女儿三个并
发进程的同步。
提示:设置一个信号量表示可否向盘中放水果,
一个信号量表示可否取桔子,一个信号量表
示可否取苹果。
解
设置三个信号量S,So,Sa ,初值分别
为1,0,0。分别表示可否向盘中放水果,
可否取桔子,可否取苹果。
Father()
{ while(1)
{ p(S);
Son()
{ while(1)
{ p(So)
将水果放入盘中;
取桔子
v(S);
if(是桔子)v(So);
else v(Sa);
吃桔子;
}
}
}
}
Daughter()
{ while(1)
{ p(Sa)
取苹果
v(S);
吃苹果;
}
}
经典的进程同步问题
生产者/消费者问题
读者/写者问题
哲学家进餐问题
生产者/消费者问题
生产者消费者问题是一种同步问题的抽
象描述。计算机系统中的每个进程都可
以消费(使用)或生产(释放)某类资
源。这些资源可以是硬件资源,也可以
是软件资源。
当某一进程使用某一资源时,可以看作
是消费,称该进程为消费者。而当某一
进程释放某一资源时,它就相当于生产
者。
问题描述
通过一个有界缓冲区可以把一群生产者
p1,p2…,pm,和一群消费者
Q1,Q2,…,Qn联系起来。如图
只要缓冲区未满,生产者就可以把产
品送入缓冲区;
只要缓冲区未空,消费者就可以从缓
冲区中取走物品。
放消息
图
取消息
Q
P
......
i
n
n个缓冲区
(Buffer)
j
问题分析
为解决生产者消费者问题,应该设两个同步
信号量,一个说明空缓冲区的数目,用S1表
示,初值为有界缓冲区的大小N,另一个说
明已用缓冲区的数目,用S2表示,初值为0。
由于在此问题中有M个生产者和N个消费者,
它们在执行生产活动和消费活动中要对有界
缓冲区进行操作。由于有界缓冲区是一个临
界资源,必须互斥使用,所以,另外还需要
设置一个互斥信号量mutex,其初值为1。
问题的解
P:
i = 0;
while (1)
{
生产产品;
P(S1);
P(mutex);
往Buffer [i]放产品;
i = (i+1) % n;
V(mutex);
V(S2);
};
Q:
j = 0;
while (1)
{
P(S2);
P(mutex);
从Buffer[j]取产品;
j = (j+1) % n;
V(mutex);
V(S1);
消费产品;
};
采用AND信号量集解决生产者-消费者问题
Q:
P:
i = 0;
j = 0;
while (1)
while (1)
{
{
生产产品;
Swait(s2, mutex);
Swait(s1, mutex);
从Buffer[j]取产品;
往Buffer [i]放产品;
j = (j+1) % n;
i = (i+1) % n;
Ssignal(s1, mutex);
消费产品;
Ssignal(s2, mutex);
};
};
【思考题】
如果生产者消费者问题中的缓冲区是无
界的,又该如何解呢?
解 设信号量S1, mutex 初值均为0
P:
i = 0;
while (1)
{
生产产品;
P(mutex);
往Buffer [i]放产品;
i = (i+1) % n;
V(mutex);
V(S1);
};
Q:
j = 0;
while (1)
{
P(S1);
P(mutex);
从Buffer[j]取产品;
j = (j+1) % n;
V(mutex);
消费产品;
};
【思考题】
有一个仓库,可以存放A和B两种产品,但
要求:
(1) 每次只能存入一种产品(A或B)
(2) -N<A产品数量-B产品数量<M。
其中,N和M是正整数。试用P、V操作描
述产品A与B的入库过程。
提示:设两个信号量Sa、Sb
Sa表示允许A产品比B产品多入库的数量
Sb表示允许B产品比A产品多入库的数量
解
设两个信号量Sa、Sb,初值分别为M-1,N1
Sa表示允许A产品比B产品多入库的数量
Sb表示允许B产品比A产品多入库的数量
设互斥信号量mutex,初值为1。
A产品入库进程:
i = 0;
while (1)
{
生产产品;
P(Sa);
P(mutex);
A产品入库
V(mutex);
V(Sb);
};
B产品入库进程:
j = 0;
while (1)
{
P(Sb);
P(mutex);
B产品入库
V(mutex);
V(Sa);
消费产品;
};
读者/写者问题
有两组并发进程:
读者和写者,共享一组数据区
要求:
允许多个读者同时执行读操作
不允许读者、写者同时操作
不允许多个写者同时操作
第一类:读者优先
如果读者来:
1)无读者、写者,新读者可以读
2)有写者等,但有其它读者正在读,则新读者
也可以读
3)有写者写,新读者等
如果写者来:
1)无读者,新写者可以写
2)有读者,新写者等待
3)有其它写者,新写者等待
第一类读者写者问题的解法
设有两个信号量w=1,mutex=1
另设一个全局变量readcount =0
w用于读者和写者、写者和写者之间的互
斥
readcount表示正在读的读者数目
mutex用于对readcount 这个临界资源的
互斥访问
读者:
while (1)
{
P(mutex);
readcount ++;
if (readcount==1) P (w);
V(mutex);
读
P(mutex);
readcount --;
if (readcount==0) V(w);
V(mutex);
};
写者:
while (1)
{
P(w);
写
V(w);
};
第一类读者写者问题的解法(一般信号量集)
读者:
写者:
while(1)
while(1)
{
{
Swait(wmutex,1,1;
Swait(rcount,1,1;
rcount,R,0);
wmutex,1,0);
读;
写;
Ssignal(wmutex,1);
Ssignal(rcount,1);
}
}
增加一个限制条件:同时读的“读者”最多R个
–wmutex表示“允许写”,初值是1
–rcount表示“允许读者数目”,初值为R
【思考题】写优先
修改以上读者写者问题的算法,使之对
写者优先,即一旦有写者到达,后续的
读者必须必须等待,无论是否有读者在
读。
提示,增加一个信号量,用于在写者到
达后封锁后续的读者
解 增加一个信号量s,初值为1
读者:
while (1)
{ P(s);
P(mutex);
readcount ++;
if (readcount==1) P (w);
V(mutex);
V(s);
读
P(mutex);
readcount --;
if (readcount==0) V(w);
V(mutex);
};
写者:
while (1)
{
P(s);
P(w);
写
V(w);
V(s);
};
哲学家就餐问题
有五个哲学家围坐在一圆桌旁,桌中央有一盘通心
粉,每人面前有一只空盘子,每两人之间放一只筷
子
每个哲学家的行为是思考,感到饥饿,然后吃通心
粉
为了吃通心粉,每个哲学家必须拿到两只筷子,并
且每个人只能直接从自己的左边或右边去取筷子
解
设fork[5]为5 个信号量,初值为均1
Philosopheri:
while (1)
{
思考;
P(fork[i]);
P(fork[(i+1) % 5]);
进食;
V(fork[i]);
V(fork[(i+1) % 5]);
}
分析
以上解法会出现死锁
为防止死锁发生可采取的措施:
最多允许4个哲学家同时坐在桌子周围
仅当一个哲学家左右两边的筷子都可用时,才允
许他拿筷子()
给所有哲学家编号,奇数号的哲学家必须首先拿
左边的筷子,偶数号的哲学家则反之
采用AND信号量集解决哲学家就餐问题
设fork[5]为5 个信号量,初值为均1
Philosopheri:
while (1)
{
思考;
Swait( fork[i], fork[(i+1) % 5] );
进食;
Ssignal( fork[i], fork[(i+1) % 5] );
}
进程通信
概念
进程通信模式
直接方式
间接方式
概念
所谓进程通信是指进程之间可直接以较
高的效率传递较多数据的信息交换方式。
P.V操作实现的是进程之间的低级通讯,
所以P.V为低级通讯原语。它只能传递简
单的信号,不能传递交换大量信息。如
果要在进程间传递大量信息则要用Send
/ Receive原语(高级通讯原语)
进程通信类型
1、共享存储器系统
2、消息传递系统
3、管道通信
(共享文件方式)
1、共享存储器系统
基于共享数据结构的通信方式
诸进程公用某些数据结构,进程通
过它们交换信息。如生产者-消费者问题
中的有界缓冲区。
基于共享存储区的通信方式
高级通信,在存储器中划出一块共享存
储区,进程在通信前,向系统申请共享存储
区中的一个分区,并指定该分区的关键字,
若系统已经给其它进程分配了这样的分区,
则将该分区的描述符返回给申请者。接着,
申请者把获得的共享存储分区连接到本进程
上,此后可读写该分区。
以上两种方式的同步互斥都要由进程自
己负责。
2、消息传递系统
进程间的数据交换以消息为单位,
程序员利用系统的通信原语实现通
信。操作系统隐藏了通信的实现细
节,简化了通信程序编制的复杂性。
因而得到广泛应用。
消息传递系统可分为:
直接通信:发送进程直接把消息发送给
接收者,并将它挂在接收进程的消息缓
冲队列上。接收进程从消息缓冲队列中
取得消息。
也称为消息缓冲通信
间接通信:发送进程将消息发送到某种
中间实体中(信箱),接收进程从中取
得消息。
也称信箱通信。在网络中称为电子邮件
系统。
思考
两种方式的主要区别?
前者需要两进程都存在,后者不需要。
3、管道通信
所谓管道,是指用于连接一个读进程和一个写进程
的文件,称pipe文件。向管道提供输入的进程(称
写进程),以字符流的形式将大量数据送入管道,
而接受管道输出的进程(读进程)可从管道中接收
数据。该方式首创于UNIX,它能传送大量数据,被
广泛采用。
发送进程
字符流方式写入读出
先进先出顺序
接收进程
消息缓冲通信的实现
在操作系统空间设置一组缓冲区。
当发送进程需要发送消息时,执行send系
统调用,产生访管中断,进入操作系统。
操作系统为发送进程分配一个空缓冲区,
并将所发送的消息从发送进程copy到缓冲
区中,然后将该载有消息的缓冲区连接到
接收进程的消息链链尾,如此就完成了发
送过程。
发送进程返回到用户态继续执行。
在以后某个时刻,当接收进程执行到
receive接收原语时,也产生访管中断进入
操作系统。
由操作系统将载有消息的缓冲区从消息链中
取出,并把消息内容copy到接收进程空间,
之后收回缓冲区,如此就完成了消息的接收,
接收进程返回到用户态继续进行
发送进程 S
图示
消息
PCB
接收进程 R
......
消息链指针
......
消息
M:
......
Send(R, M)
......
SIZE:消息长度
TEXT:消息正文
......
消息
N:
......
Receive(N)
......
SIZE:消息长度
TEXT:消息正文
......
消息缓冲区结构
type messageBuffer=record
sender ;//发送者ID
size ;//消息长度
text ;//消息正文
next ;//消息队列指针
end
PCB中有关通信的数据项
type PCB=record
…
mq ; //消息队列首指针
mutex; //消息队列互斥信号量
sm ; //消息队列资源信号量
end
用P、V操作来实现Send原语
send(R,M)
begin
在OS中分配M.size大小的缓冲区t;
将M中的内容复制到t;
得到进程R的PCB的指针q;
P(q.mutex);
将t挂到队列q.mq队尾;
V(q.mutex);
V(q.sm);
end
用P、V操作来实现Receive原语
Receive(N)
begin
得到本进程PCB的指针q;
P(q.sm);
P(q.mutex);
从q.mq队首取下一个缓冲区t;
V(q.mutex);
将t的内容复制到N,并释放t
end
信箱通信的实现
信箱使用规则
若发送信件时信箱已满,则发送进程被
置为“等信箱”状态,直到信箱有空时才被
唤醒
若取信件时信箱中无信,则接收进程被
置为“等信件”状态,直到有信件时才被唤
醒
Send实现
send(MailBox,M):把信件M送到指定的信箱
MailBox中
步骤:
查找指定信箱MailBox ;
若信箱未满,则把信件M送入信箱且唤醒“等信件”者;
若信箱已满置发送信件进程为“等信箱”状态;
Receive实现
receive( MailBox ,X):从指定信箱MailBox中取
出一封信,存放到指定的地址X中
步骤:
查找指定信箱MailBox ;
若信箱中有信,则取出一封信存于X中且唤醒“等信箱”
者;
若信箱中无信件则置接收信件进程“等信件”状态;
无死锁哲学家就餐问题 解1
设fork[5]为5 个信号量,初值均为1
设信号量Mutex、W ,初值为1
设有全局变量Count 初值为0
W用于封锁第5个哲学家
Mutex用于对临界资源Count 的访问
Philosopheri:
while (1)
{ 思考;
P(Mutex)
Count++;
if(Count>=4)P(W)
V(Mutex)
V(fork[i]);
V(fork[(i+1) % 5]);
P(Mutex)
Count--;
if(Count==3)V(W)
V(Mutex)
}
P(fork[i]);
P(fork[(i+1) % 5]);
进食;
无死锁哲学家就餐问题 解2
设fork[5]为5 个信号量,初值为均1
设信号量S ,初值为4
S用于封锁第5个哲学家
Philosopheri:
while (1)
{ 思考;
P(S)
P(fork[i]);
P(fork[(i+1) % 5]);
进食;
V(fork[i]);
V(fork[(i+1) % 5]);
V(S)
}
无死锁哲学家就餐问题 解3
设fork[5]为5 个信号量,初值为均1
Philosopher1:
while (1)
{ 思考;
P(fork[1]);
P(fork[2]);
进食;
V(fork[2]);
V(fork[1]);
}
Philosopher2:
while (1)
{ 思考;
P(fork[3]);
P(fork[2]);
进食;
V(fork[2]);
V(fork[3);
}
习题
进程A1、A2,。。。An1通过m个缓冲区向进程B1、
B2、。。。Bn2不断发送消息。发送和接收工作遵
循下列规则:
(1) 每个发送进程一次发送一个消息,写入一个缓
冲区,缓冲区大小等于消息长度
(2) 对每个消息,B1,B2,Bn2都须各接收一次,
读入各自的数据区内
(3) m个缓冲区都满时,发送进程等待,没有可读
消息时,接收进程等待。
试用P、V操作组织正确的发送和接收工作。
提示:每个缓冲区只要写一次但要读n2
次,因此,可以看成n2组缓冲区,每个
发送者要同时写n2个缓冲区,而每个接
收者只要读它自己的缓冲区。
Sin[n2]=m
Sout[n2]=0;
解
先将问题简化:
设缓冲区的大小为1
有一个发送进程A1
有二个接收进程B1、B2
设有信号量Sin[1] 、Sin[2] 初值为1
设有信号量Sout[1] 、Sout[2] 初值为0
A1:
while (1)
{
P(Sin[1]);
P(Sin[2]);
将数据放入缓冲区
V(Sout[1]);
V(Sout[2]);
}
Bi:
while (1)
{
P(Sout[i]);
从缓冲区取数
V(Sin[i]);
}
向目标前进一步
设缓冲区的大小为m
有一个发送进程A1
有二个接收进程B1、B2
设有信号量Sin[1] 、Sin[2] 初值为m
设有信号量Sout[1] 、Sout[2] 初值为0
A1:
while (1)
{
P(Sin[1]);
P(Sin[2]);
P(mutex);
将数据放入缓冲区
V(mutex);
V(Sout[1]);
V(Sout[2]);
}
Bi:
while (1)
{
P(Sout[i]);
P(mutex);
从缓冲区取数
V(mutex);
V(Sin[i]);
};
到达目标
设缓冲区的大小为m
有n1个发送进程A1….An1
有n2个接收进程B1…Bn2
设有n2个信号量Sin[n2] 初值均为m
设有n2个信号量Sout[n2] 初值均为0
Aj:
while (1)
{
for(i=1;i<=n2;i++)
P(Sin[i]);
P(mutex);
将数据放入缓冲区
V(mutex);
for(i=1;i<=n2;i++)
V(Sout[2]);
}
Bi:
while (1)
{
P(Sout[i]);
P(mutex);
从缓冲区取数
V(mutex);
V(Sin[i]);
};
死锁的概念
死锁举例
产生死锁的原因
产生死锁的必要条件
处理死锁的基本方法
死锁举例
例1:
两个小孩在一起玩耍,一个在玩皮球,另一
个玩自动步枪,如果这两个小孩都要对方手
中的玩具,而又不肯先放掉自己拿着的玩具,
这时就发生了僵持局面。
例2:
设系统有一台打印机和一台扫描仪,进程P1、
P2并发执行,在某时刻T,进程P1和P2分
别 占 用 了 打 印 机 和 扫 描 仪 。 在 时 刻 T1
(T1>T),P1又要申请扫描仪,但由于扫
描仪被P2占用,P1只有等待。在时刻T2
(T2>T),P2又申请打印机,但由于打印
机被P1占用,P2只有等待。如此两进程均
不能执行完成。称这种现象为死锁。
例3:
在生产者-消费者问题中将生产者进程的
两个P操作颠倒时会发生死锁。
将消费者进程的两个P操作颠倒时也会发
生死锁。
死锁的定义
一组进程中,每个进程都无限等待
被该组进程中另一进程所占有的资源,
因而永远无法得到该资源,这种现象
称为进程死锁,这一组进程就称为死
锁进程
死锁(Deadlock)
饥饿(Starvation)
判断
1 参与死锁的所有进程都占有资源
2 参与死锁的所有进程均正在等待资源
3 参与死锁的所有进程中至少有两个进程占有
资源
4 参与死锁的进程至少有两个
关于死锁的一些结论
参与死锁的进程最少是两个
(两个以上进程才会出现死锁)
参与死锁的进程至少有两个已经占有资源
参与死锁的所有进程都在等待资源
参与死锁的进程是当前系统中所有进程的子
集
注:如果死锁发生,会浪费大量系统资
源,甚至导致系统崩溃
产生死锁的必要条件
四个必要条件:
互斥条件:涉及的资源是非共享的。
不剥夺条件:不能强行剥夺进程拥有的资源。
部分分配条件:进程在等待一新资源时继续
占有已分配的资源。
环路条件:存在一种进程的循环链,链中的
每一个进程已获得的资源同时被链中的下一
个进程所请求。
处理死锁的基本方法
1、预防死锁:
通过设置某些限制条件,去破坏死锁四个
必要条件中的一个或多个,来防止死锁。
较易实现,广泛使用,但由于所施加的限
制往往太严格,可能导致系统资源利用
率和系统吞吐量的降低。
2、避免死锁:
不事先采取限制去破坏产生死锁的条件,
而是在资源的动态分配过程中,用某种
方法去防止系统进入不安全状态,从而
避免死锁的发生。
实现较难,只需要较弱的限制条件,可获
得较高的资源利用率和系统吞吐量。
3、检测死锁:
事先并不采取任何限制,也不检查系统是
否进入不安全区,允许死锁发生,但可
通过检测机构及时检测出死锁的发生,
并精确确定与死锁有关的进程和资源,
然后采取适当措施,将系统中已发生的
死锁清除掉
4、解除死锁:
与检测死锁相配套,用于将进程从死锁状态解
脱出来。
常用的方法是撤消或挂起一些进程。以回收一
些资源,再将它们分配给处于阻塞状态的进
程,使之转为就绪状态。
实现难度大,但可获得较好的资源利用率和系
统吞吐量。
死锁的预防和避免
死锁的预防
系统的安全状态
利用银行家算法避免死锁
死锁的预防
在系统设计时确定资源分配算法,保证不
发生死锁
具体的做法是破坏产生死锁的四个必要
条件之一
破坏部分分配条件
系统要求所有进程要一次性地申请在整个
运行过程中所需的全部资源。若系统有
足够资源则完全分配。
优点:简单、易于实现且安全。
缺点:
一个用户在作业运行之前可能提不出他的作业将要
使用的全部设备。
用户作业必须等待,直到所有资源满足才能运行。
实际上某些资源可能要到运行后期才会用到。
一个作业运行期间,对某些设备的使用时间很短,
甚至不会用到。如:当用户作业出错时才需要打印
机输出错误信息,但采用静态分配法必须把打印机
分配给该作业,并长期占用。采用该方法对系统来
说是非常浪费的。
破坏不可剥夺条件
一个已拥有资源的进程,若它再提出新资
源要求而不能立即得到满足时,它必须
释放已经拥有的所有资源。以后需要时
再重新申请。
实现复杂、要付出很大的代价。
破坏环路条件
系统中的所有资源都有一个确定的唯一号码,
所有分配请求必须以序号上升的次序进行。
例如:系统中有下列设备:输入机(1),打印
机(2),穿孔机(3),磁带机(4),磁盘
(5)。有一进程要先后使用输入机、磁盘、
打印机,则它申请设备时要按输入机、打印
机、磁盘的顺序申请。
优点:同前两法相比,其资源利用率和系
统吞吐量有较明显的改善。
缺点:进程实际需要资源的顺序不一定与
资源的编号一致,因此仍会造成资源浪
费。
系统的安全状态
死锁避免定义
在系统运行过程中,对进程发出的
每一个系统能够满足的资源申请进行动
态检查,并根据检查结果决定是否分配
资源,若分配后系统可能发生死锁,则
不予分配,否则予以分配
安全状态
如 果 系 统 能 按 某 种 顺 序 ( 如 P4 ,
P1,…,Pn, 称为安全序列)为每个进程
分配其所需的资源,直至所有进程都能
运行完成,称系统处于安全状态。若不
存在这样一个安全序列称系统处于不安
全状态。
安全状态举例
有三个进程p1,p2,p3,有12台磁带机。
P1共要求10台,P2共要求4台,P3共要
求9台。在T0时刻,p1,p2,p3分别获得5、
2、2台,尚有3台空闲。
图
经分析,在T0时刻,系统是安全的。
因为存在一个安全序列p2、p1、p3。见下图。
进程
最大需求
已分配
还需
可用
p1
10
5
5
3
p2
4
2
2
p3
9
2
7
由安全状态向不安全状态的转换
如果不按安全序列分配资源,则系统
可能会由安全状态进入不安全状态。如
在T0以后,P3要求1台磁带机,若系统
分给它一台,则系统进入不安全状态。
因为其余2台分给P2,P2完成后,只能
释放4台,这既不能满足P1(5台),也
不能满足P3(6台)。将导致死锁。可见
当P3申请资源时,尽管系统中有资源也
不能分给它。
系统进入不安全状态
进程
最大需求
已分配
还需
可用
p1
10
5
5
2
p2
4
2
2
p3
9
3
6
利用银行家算法避免死锁
最有代表性的避免死锁算法,由Dijkstra提出。
1、银行家算法中的数据结构
可利用资源向量Available。它是一个含有m
个元素的数组,其中每个元素代表一类可利
用资源的数目。
如:
A
5
B
2
C
3
最大需求矩阵Max。n*m矩阵,表示n个
进程的每一个对m类资源的最大需求。
A
B
C
P1
5
6
2
P2
3
3
1
P3
4
2
5
P4
3
3
2
分配矩阵Allocation 。n*m矩阵,表示每
个进程分配的资源数。
A
B
C
P1
2
1
2
P2
1
2
1
P3
2
2
2
P4
1
3
2
需求矩阵Need 。n*m矩阵,表示每个进
程还需要各类资源数。
A
B
C
P1
3
5
2
P2
2
1
1
P3
2
2
3
P4
2
3
2
例
设系统有五个进程和三类资源,每类资源分别有10、
5、7。在T0时刻资源分配情况如图
银行家算法描述
当进程pi提出资源申请时,系统执行下
列步骤:
(1)若Request[i]≤Need[i],转(2);
否则错误返回
(2)若Request[i]≤Available,
转(3);否则进程等待
(3)假设系统分配了资源,则有:
Available:=Available-Request[i];
Allocation[i]:=Allocation[i]+Request[i];
Need[i]:=Need[i]-Request[i]
(4)执行安全性算法,若系统新状态是安
全的,则分配完成,若系统新状态是不安
全的,则恢复原状态,进程等待
安全性算法
为进行安全性检查,定义数据结构:
Work:ARRAY[0..m-1] of integer;
Finish:ARRAY[0..n-1] of Boolean;
m代表资源的数量,n代表进程的数量
安全性算法步骤
(1) Work:=Available;
Finish:=false;
(2) 寻找满足下列条件的i:
a). Finish[i]=false;
b). Need[i]≤Work;
如果不存在,则转(4)
(3) Work:=Work+Allocation[i];
Finish[i]:=true;
转(2)
(4) 若对所有i,Finish[i]=true,则系
统处于安全状态,否则处于不安全
状态
T0时刻的安全性检查
T0时刻可以找到一个安全序列{p1,p3,p4,p2,p0}.
系统是安全
的。
P1发出请求Request(1,0,2),执行银行家算法
例1:T0时刻P1请求资源
可以找到一个安全序列{p1,p3,p4,p0,p2}. 系统是安全的,可
以将P1的请求分配给它。
执行安全性算法
例2:P4请求资源
P4发出请求Request(3,3,0), 执行银行家
算法
Available=2 3 0
不能通过算法第2步
( Request[i]≤Available ),所以P4
等待。
例3:P0请求资源
Request(0,2,0),执行银行家算法
进行安全性检查
Available{2,1,0}已不能满足任何进程需
要,所以系统进入不安全状态,P0的请
求不能分配
练习:有三类资源A(17)、B(5)、C(20)。有5个进程
P1—P5。T0时刻系统状态如下:
P1
P2
P3
P4
P5
最大需求
5 5 9
已分配
2 1 2
5 3 6
4 0 11
4 2 5
4 0 2
4 0 5
2 0 4
4 2 4
3 1 4
问(1)、T0时刻是否为安全状态,给出安全系列。
(2)、T0时刻,P2: Request(0,3,4),能否分配,为什么?
(3)、在(2)的基础上P4:Request(2,0,1),能否分配,为什么?
(4)、 在(3)的基础上P1:Request(0,2,0),能否分配,为什么?
解:(1) T0时刻的出安全系列
先求出Need和Work
P1
P2
P3
P4
P5
最大需求
5 5 9
已分配
2 1 2
Need
3 4 7
5 3 6
4 0 11
4 2 5
4 0 2
4 0 5
2 0 4
1 3 4
0 0 6
2 2 1
4 2 4
3 1 4
1 1 0
A(17)、B(5)、C(20)
Work=2 3 3
Work=2 3 3
P5
P4
P3
P2
P1
Work
2 3 3
Allocation
3 1 4
Need
1 1 0
W+A
5 4 7
Finish
T
5 4 7
7 4 11
11 4 16
2 0 4
4 0 5
4 0 2
2 2 1
0 0 6
1 3 4
7 4 11
11 4 16
15 4 18
T
T
T
15 4 18
2 1 2
3 4 7
17 5 20
T
(2) P2: Request(0,3,4)
因( Available =2 3 3)< Request(0,3,4) 所以不
能分配
Available =2 3 3
(3) P4:Request(2,0,1)
P1
P2
Allocation
2 1 2
4 0 2
Need
3 4 7
1 3 4
P3
P4
P5
4 0 5
4 0 5
3 1 4
0 0 6
0 2 0
1 1 0
Available
0 3 2
有安全序
列P4 P5
P3 P2 P1
可以分配
P4
P5
Work
0 3 2
4 3 7
Allocation
4 0 5
3 1 4
Need
0 2 0
1 1 0
W+A
4 3 7
7 4 11
Finish
T
T
P3
P2
P1
7 4 11
11 4 16
15 4 18
4 0 5
4 0 2
2 1 2
0 0 6
1 3 4
3 4 7
11 4 16
15 4 18
17 5 20
T
T
T
(4) P1:Request(0,2,0)
P1
P2
P3
P4
P5
Allocation
2 3 2
4 0 2
4 0 5
4 0 5
3 1 4
Need
3 2 7
1 3 4
0 0 6
0 2 0
1 1 0
Available
0 1 2
0 1 2 已不能满足任何进程的需要,不能分配
死锁的检测和解除
死锁检测:
允许死锁发生,操作系统不断监视系统进
展情况,判断死锁是否发生
一旦死锁发生则采取专门的措施,解除死
锁并以最小的代价恢复操作系统运行
检测时机:
当进程等待时检测死锁
(其缺点是系统的开销大)
定时检测
系统资源利用率下降时检测死锁
死锁的解除
重要的是以最小的代价恢复系统的运行。方
法如下:
1)重新启动
2)撤消进程
3)剥夺资源
4)进程回退
资源分配图
用有向图描述进程的死锁
准确、形象
系统由若干类资源构成,一类资源称
为一个资源类;每个资源类中包含若
干个同种资源,称为资源实例
二元组G=(V,E)
V:结点集,分为P,R两部分
P={p1,p2,…,pn}
R={r1,r2,…,rm}
E:边的集合,其元素为有序二元组
(pi,rj)或(rj,pi)
表示法
资源类(资源的不同类型)
用方框表示
资源实例(存在于每个资源中)
用方框中的黑圆点(圈)表示
进程
用圆圈中加进程名表示
分配边:
资源实例进程的一条有向边
申请边:
进程资源类的一条有向边
例
死锁定理
如果资源分配图中没有环路,则系
统中没有死锁,如果图中存在环路则
系统中可能存在死锁
如果每个资源类中只包含一个资源
实例,则环路是死锁存在的充分必要
条件
资源分配图化简
1)找一个非孤立点进程结点且只有分配边,去掉
分配边,将其变为孤立结点
2)再把相应的资源分配给一个等待该资源的进程,
即将某进程的申请边变为分配边
3)重复以上步骤,若所有进程成为孤立结点,称
该图是可完全简化的,否则称该图是不可完全简
化的。
死锁状态的充分条件是:当且仅当资源分配图是不
可完全简化的。
有环有死锁
有环无死锁
教材P132第17题解答
P0请求:Reqest(0,1,0)
P0
P1
P2
Allocation
010
302
302
Need
743
020
600
P3
P4
211
002
011
431
Available
230
试探分配后
2 2 0
P0
P1
P2
P3
P4
Allocation
020
302
302
211
002
Need
733
020
600
011
431
Available
220
P1
5 2 2
P2
7 3 3
P4
7 3 5
P0
7 5 5
P2
10 5 7
有安全系列如下
Work
Allocation
Need
W+A
Finish
P1
2 2 0
3 0 2
0 2 0
5 2 2
T
P3
5 2 2
2 1 1
0 1 1
7 3 3
T
P4
7 3 3
0 0 2
4 3 1
7 3 5
T
P0
7 3 5
0 2 0
7 3 3
7 5 5
T
P2
7 5 5
3 0 2
6 0 0
10 5 7
T
习题1
已分配的资源
A B
C
P1 0 1
0
P2 2 0
0
P3 3 0
2
P4 2 1
1
P5 0 0
2
最大需求量
A
B
C
7
5
3
3
2
2
9
0
2
2
2
2
4
3
3
剩余资源
B
3
A
3
C
2
问题:此状态是否为安全状态,如果
是, 则找出安全序列
在此基础上
P2 申请(1,0,2)能否分配?为什么?
P5 申请(3,3,0)能否分配?为什么?
P1 申请(0,2,0)能否分配?为什么?
习题2
1、 一台计算机共8台磁带机,由N个进程
共享,每个进程最多要3台,问N为多少时不
会有死锁,为什么?
2、有R1(2)、R2(1)两类资源和两个进程P1、
P2,两个进程均以
申 请 R1 申 请 R2 申 请 R1 释 放 R1 释 放
R2释放R1
顺序使用资源,求可能达到的死锁点,并画出
此时的资源分配图。
解
当两个进程都执行完第1步后,无论哪个
进程执行完第2步,以后,这两个进程再
申请资源时就会死锁。
P1
R2
R1
P2