进程同步与死锁实验
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
❖ 本例中,有一个初始化的数组,读者和写者均是对此数组 进行操作。写者是随机对数组中的数字进行修改,修改的 值也是随机的,这样更直观、更有助于理解。
第4页/共17页
操作系统实验教程(Linux版) 潘景昌 刘杰 编著
21世纪高等学校规划教材
准备知识
计算机科学与技术
❖ 了解如何创建线程及如何销毁线程;
❖ 互斥
这是一种更常见的进程之间的相互关系,通常是由于多个进程共享某些 资源而引起的,而这些进程往往彼此独立。例如:系统只有一台打印 机,有两个进程同时使用它输出数据的话,打印结果将使这两个进程 的输出内容混杂在一起。为了保证共享临界资源的各个进程都能正确 运行,当临界资源被一个进程访问时,其他访问进程必须等待。多个 进程在共享临界资源时的这种制约关系称为进程互斥。
21世纪高等学校规划教材
计算机科学与技术
❖ 请根据上述介绍,编写车辆行驶死锁问题的程序,要求如 下:
(1) 在Linux下用C编程,利用信号量操作实现进程同步;
(2) 假设三个方向的车辆数目相等,数值由用户输入,并动态显示 车辆的行驶状态,每个车辆行驶所用的时间可以预先设定。
第12页/共17页
操作系统实验教程(Linux版) 潘景昌 刘杰 编著
21世纪高等学校规划教材
准备知识
❖ 了解进程死锁的原理; ❖ 掌握自然有序分配法。
计算机科学与技术
第13页/共17页
操作系统实验教程(Linux版) 潘景昌 刘杰 编著
21世纪高等学校规划教材
实验原理
计算机科学与技术
❖ 死锁是指在一组进程中的各个进程均占有不会释放的资源, 但因互相申请被其他进程所占用不会释放的资源而处于的 一种永久等待状态。
21世纪高等学校规划教材
实验内容
计算机科学与技术
❖ 车辆行驶死锁问题,在Linux下用C语言完成下面模型:设 有一个T型路口,其中A、B、C、D处各可容纳一辆车, 车行方向如图所示,试找出死锁并用有序分配法消除之。 要求资源编号合理。
A
D W:直行
S
B
C
: 左 转
E:左转
第11页/共17页
操作系统实验教程(Linux版) 潘景昌 刘杰 编著
实验内容
计算机科学与技术
❖ 编写读者—写者问题的程序,要求如下:
(1) 在Linux下用C编程,利用信号量操作实现进程同步;
(2) 读写请求随机产生(比如敲击键盘上的r和w),并动态显示 当前的状态(读的时候有多少读者,有多少个写者在等待;写的 时候是谁在写,还有多少写者和读者在等待),每个读者和写者 用的时间可以预先设定。
(4)循环等待条件(Circular wait):系统中若干进程组成环路, 该环路中每个进程都在等待相邻进程已占用的资源。
第14页/共17页
操作系统实验教程(Linux版) 潘景昌 刘杰 编著
21世纪高等学校规划教材
实验指导
计算机科学与技术
❖ 死锁的可能性有两种:
(1)E方向两台车分别位于A和B、S方向一台车位于C、W方向一台 车位于D。
❖ 分析线程的创建过程,理解同步信号量与互斥信号量的 作用
第5页/共17页
操作系统实验教程(Linux版) 潘景昌 刘杰 编著
21世纪高等学校规划教材
实验原理
计算机科学与技术
❖ 同步
同步是指进程间共同完成一项任务时直接发生相互作用的关系,即进程 在执行的时间顺序上必须遵循特定的次序,这种时序关系称为同步关 系。例如:B进程在运行时需要A进程的输出结果作为资源,那么A进 程必须在B进程执行之前完成,这就确定了A、B两进程间的同步关系 。
第6页/共17页
操作系统实验教程(Linux版) 潘景昌 刘杰 编著
21世纪高等学校规划教材
实验指导
计算机科学与技术
❖ 设有一组共享数据DB和两组并发进程, 一组进程只对此组 数据执行读操作, 另一组进程可对此组数据执行写操作(同 时也可以执行读操作),将前一组进程称作读者,后一组 进程称作写者。为了保证共享数据的完整性,要求:
(1)多个读者的操作可以同时进行;
(2)多个写者的操作不可同时进行;
(3)任何读者与写者的操作不可同时进行。
DB
R1
…
Rm
W1
Βιβλιοθήκη Baidu
…
Wn
第7页/共17页
操作系统实验教程(Linux版) 潘景昌 刘杰 编著
21世纪高等学校规划教材
实验指导
❖ 实验的流程图如图所示
开始
随机产生一组数
计算机科学与技术
随机在某位置读取
第2页/共17页
操作系统实验教程(Linux版) 潘景昌 刘杰 编著
21世纪高等学校规划教材
实验目的
计算机科学与技术
❖ 理解进程同步的原理和机制;
❖ 通过读者—写者问题的设计与实现进一步掌握进程同步 在实际中的应用。
第3页/共17页
操作系统实验教程(Linux版) 潘景昌 刘杰 编著
21世纪高等学校规划教材
❖ 死锁的四个必要条件:
(1)互斥条件(Mutual exclusion):资源不能被共享,只能由一 个进程使用。
(2)请求与保持条件(Hold and wait):已经得到资源的进程可以 再次申请新的资源。
(3)非剥夺条件(No pre-emption):已分配的资源不能从相应的 进程中被强制地剥夺。
第9页/共17页
操作系统实验教程(Linux版) 潘景昌 刘杰 编著
21世纪高等学校规划教材
实验目的
计算机科学与技术
❖ 理解死锁的产生原因,掌握预防和避免死锁的方法,以 及死锁的检测方法;
❖ 通过车辆行驶死锁问题的设计与实现掌握解决死锁的方 法。
第10页/共17页
操作系统实验教程(Linux版) 潘景昌 刘杰 编著
21世纪高等学校规划教材
第九章 进程同步与死锁实验
计算机科学与技术
❖ 实验一 读者—写者问题 ❖ 实验二 车辆行驶死锁问题
第1页/共17页
操作系统实验教程(Linux版) 潘景昌 刘杰 编著
21世纪高等学校规划教材
实验一 读者—写者问题
计算机科学与技术
❖ 实验目的 ❖ 实验内容 ❖ 准备知识 ❖ 实验原理 ❖ 实验指导
r
内容
用户的选择
w
随机在某个位置写入
某随机数
N 读者是否已经全部读完
Y
N 写者是否已经全部写完
Y
写者是否已经全部写完 N
Y
读者是否已经全部读完 N
Y
第8结页束 /共17页
操作系统实验教程(Linux版) 潘景昌 刘杰 编著
21世纪高等学校规划教材
实验二 车辆行驶死锁问题
计算机科学与技术
❖ 实验目的 ❖ 实验内容 ❖ 准备知识 ❖ 实验原理 ❖ 实验指导
第4页/共17页
操作系统实验教程(Linux版) 潘景昌 刘杰 编著
21世纪高等学校规划教材
准备知识
计算机科学与技术
❖ 了解如何创建线程及如何销毁线程;
❖ 互斥
这是一种更常见的进程之间的相互关系,通常是由于多个进程共享某些 资源而引起的,而这些进程往往彼此独立。例如:系统只有一台打印 机,有两个进程同时使用它输出数据的话,打印结果将使这两个进程 的输出内容混杂在一起。为了保证共享临界资源的各个进程都能正确 运行,当临界资源被一个进程访问时,其他访问进程必须等待。多个 进程在共享临界资源时的这种制约关系称为进程互斥。
21世纪高等学校规划教材
计算机科学与技术
❖ 请根据上述介绍,编写车辆行驶死锁问题的程序,要求如 下:
(1) 在Linux下用C编程,利用信号量操作实现进程同步;
(2) 假设三个方向的车辆数目相等,数值由用户输入,并动态显示 车辆的行驶状态,每个车辆行驶所用的时间可以预先设定。
第12页/共17页
操作系统实验教程(Linux版) 潘景昌 刘杰 编著
21世纪高等学校规划教材
准备知识
❖ 了解进程死锁的原理; ❖ 掌握自然有序分配法。
计算机科学与技术
第13页/共17页
操作系统实验教程(Linux版) 潘景昌 刘杰 编著
21世纪高等学校规划教材
实验原理
计算机科学与技术
❖ 死锁是指在一组进程中的各个进程均占有不会释放的资源, 但因互相申请被其他进程所占用不会释放的资源而处于的 一种永久等待状态。
21世纪高等学校规划教材
实验内容
计算机科学与技术
❖ 车辆行驶死锁问题,在Linux下用C语言完成下面模型:设 有一个T型路口,其中A、B、C、D处各可容纳一辆车, 车行方向如图所示,试找出死锁并用有序分配法消除之。 要求资源编号合理。
A
D W:直行
S
B
C
: 左 转
E:左转
第11页/共17页
操作系统实验教程(Linux版) 潘景昌 刘杰 编著
实验内容
计算机科学与技术
❖ 编写读者—写者问题的程序,要求如下:
(1) 在Linux下用C编程,利用信号量操作实现进程同步;
(2) 读写请求随机产生(比如敲击键盘上的r和w),并动态显示 当前的状态(读的时候有多少读者,有多少个写者在等待;写的 时候是谁在写,还有多少写者和读者在等待),每个读者和写者 用的时间可以预先设定。
(4)循环等待条件(Circular wait):系统中若干进程组成环路, 该环路中每个进程都在等待相邻进程已占用的资源。
第14页/共17页
操作系统实验教程(Linux版) 潘景昌 刘杰 编著
21世纪高等学校规划教材
实验指导
计算机科学与技术
❖ 死锁的可能性有两种:
(1)E方向两台车分别位于A和B、S方向一台车位于C、W方向一台 车位于D。
❖ 分析线程的创建过程,理解同步信号量与互斥信号量的 作用
第5页/共17页
操作系统实验教程(Linux版) 潘景昌 刘杰 编著
21世纪高等学校规划教材
实验原理
计算机科学与技术
❖ 同步
同步是指进程间共同完成一项任务时直接发生相互作用的关系,即进程 在执行的时间顺序上必须遵循特定的次序,这种时序关系称为同步关 系。例如:B进程在运行时需要A进程的输出结果作为资源,那么A进 程必须在B进程执行之前完成,这就确定了A、B两进程间的同步关系 。
第6页/共17页
操作系统实验教程(Linux版) 潘景昌 刘杰 编著
21世纪高等学校规划教材
实验指导
计算机科学与技术
❖ 设有一组共享数据DB和两组并发进程, 一组进程只对此组 数据执行读操作, 另一组进程可对此组数据执行写操作(同 时也可以执行读操作),将前一组进程称作读者,后一组 进程称作写者。为了保证共享数据的完整性,要求:
(1)多个读者的操作可以同时进行;
(2)多个写者的操作不可同时进行;
(3)任何读者与写者的操作不可同时进行。
DB
R1
…
Rm
W1
Βιβλιοθήκη Baidu
…
Wn
第7页/共17页
操作系统实验教程(Linux版) 潘景昌 刘杰 编著
21世纪高等学校规划教材
实验指导
❖ 实验的流程图如图所示
开始
随机产生一组数
计算机科学与技术
随机在某位置读取
第2页/共17页
操作系统实验教程(Linux版) 潘景昌 刘杰 编著
21世纪高等学校规划教材
实验目的
计算机科学与技术
❖ 理解进程同步的原理和机制;
❖ 通过读者—写者问题的设计与实现进一步掌握进程同步 在实际中的应用。
第3页/共17页
操作系统实验教程(Linux版) 潘景昌 刘杰 编著
21世纪高等学校规划教材
❖ 死锁的四个必要条件:
(1)互斥条件(Mutual exclusion):资源不能被共享,只能由一 个进程使用。
(2)请求与保持条件(Hold and wait):已经得到资源的进程可以 再次申请新的资源。
(3)非剥夺条件(No pre-emption):已分配的资源不能从相应的 进程中被强制地剥夺。
第9页/共17页
操作系统实验教程(Linux版) 潘景昌 刘杰 编著
21世纪高等学校规划教材
实验目的
计算机科学与技术
❖ 理解死锁的产生原因,掌握预防和避免死锁的方法,以 及死锁的检测方法;
❖ 通过车辆行驶死锁问题的设计与实现掌握解决死锁的方 法。
第10页/共17页
操作系统实验教程(Linux版) 潘景昌 刘杰 编著
21世纪高等学校规划教材
第九章 进程同步与死锁实验
计算机科学与技术
❖ 实验一 读者—写者问题 ❖ 实验二 车辆行驶死锁问题
第1页/共17页
操作系统实验教程(Linux版) 潘景昌 刘杰 编著
21世纪高等学校规划教材
实验一 读者—写者问题
计算机科学与技术
❖ 实验目的 ❖ 实验内容 ❖ 准备知识 ❖ 实验原理 ❖ 实验指导
r
内容
用户的选择
w
随机在某个位置写入
某随机数
N 读者是否已经全部读完
Y
N 写者是否已经全部写完
Y
写者是否已经全部写完 N
Y
读者是否已经全部读完 N
Y
第8结页束 /共17页
操作系统实验教程(Linux版) 潘景昌 刘杰 编著
21世纪高等学校规划教材
实验二 车辆行驶死锁问题
计算机科学与技术
❖ 实验目的 ❖ 实验内容 ❖ 准备知识 ❖ 实验原理 ❖ 实验指导