李元金 计算机与信息工程学院 E-mail: liyuanjin10@126.com 第 5 讲 进程管理(3) 李元金 计算机与信息工程学院 E-mail: liyuanjin10@126.com 1/

Slides:



Advertisements
Similar presentations
作者 : 陳鍾誠 單位 : 金門技術學院資管系 URL : 日期 : 2016/7/21 行程的同步 註:本章學術性較重,但考試常考。
Advertisements

练一练: 在数轴上画出表示下列各数的点, 并指出这些点相互间的关系: -6 , 6 , -3 , 3 , -1.5, 1.5.
阻塞操作. 在 linux 里,一个等待队列由一个 wait_queue_head_t 类型的结构来描述 等待队列的初始化: static wait_queue_head_t testqueue; init_waitqueue_head(&testqueue);
进程管理习题 设有一个可以装 A 、 B 两种物品的仓库,其 容量无限大,但要求仓库中 A 、 B 两种物品 的数量满足下述不等式: -M ≤ A 物品数量 -B 物品数量 ≤N 其中, M 和 N 为正整数。试用信号量和 P 、 V 操作描述 A 、 B 两种物品的入库过程。
第一章 十六世紀中葉以前的臺灣與原住民 第一節 考古發掘與史前文化.
遊程規劃實務 中華民國遊程規劃設計協會.
量化vs質性研究分析 量化vs質性研究分析 報告人:王秀民.
自 我 介 紹 班級:運促一乙 姓名:林以權 學號:D
唐宋傳奇、筆記小品和史書、論著中的寓言 中碩二 吳佳樺.
兒童期 7 青春期 兩性圓舞曲 乘客:七年級同學 司機:張立杰老師.
彰化縣教師會 導護問題知多少? 理事長:許麗芳老師 報告人:廖銘潭老師   .
第二章 进程管理 2.1 进程的基本概念 2.2 进程控制 2.3 进程同步 2.4 经典进程的同步问题 2.5 管程机制 2.6 进程通信
第二章 进程的描述与控制管理.
星星知我心 談古話今….. ……..觀星望斗 主講人: 陽光青春美少男.
反垃圾掩埋場相關報告 組長:文煊 組員:鄭侃文 李浩暐 胡育睿 李瑞耘 朱祐賢 林承宇.
作業系統 第六章 同步與死結.
计算机操作系统.
Chapter 7: Process Synchronization 进程同步
"性"不"性"由你 性別平等之探討 北屯國小 張文陵.
組員: 洪暐翔、 賴峻毅 侯家豪、 賴琦穎 指導老師: 王惠鈴 老師
1 发送进程和接收进程的同步问题 利用信号量可以解决合作进程之间的同步。 例:设进程Pa,Pb通过缓冲区队列传送数据
(四)进程互斥 一、进程互斥的概念 1. 临界资源 例1:两个进程A、B共享一台打印机
进程管理习题 图书馆有100个座位,有一张登记表,要求: 用P、V原语描述一个读者的使用过程 阅读者进入时登记,取得座位号; 出来时,注销;
第二章 进程管理.
上課囉 職場甘苦談 小資男孩向錢衝 育碁數位科技 呂宗益/副理.
进程同步与互斥 例题.
PURSUING EXCELLENCE / TOWARD SUCCESS WUCHANG UNIVERSITY OF TECHNOLOGY
第八組 組員:07黃佩瑄 13吳姿毅 14葉芷芸 26黃欣蓮 34林思妤 48潘婷蓉
操作系统 (并发进程) 徐锋 南京大学计算机科学与技术系 2018年9月18日3时52分.
2018/9/19.
中国科学技术大学计算机系 陈香兰 2013Fall 第五讲 进程同步 中国科学技术大学计算机系 陈香兰 2013Fall.
台中市不動產經紀人職業工會 不動產經紀營業員 複訓班
中国科学技术大学计算机系 陈香兰 2013Fall 第五讲 进程同步和通信(part II) 中国科学技术大学计算机系 陈香兰 2013Fall.
Synchronization Background Critical Section Problem (临界区问题) 经典同步问题.
经典同步问题.
作業系統 第六章 同步與死結.
第二章 进程管理 2.1 进程的基本概念 2.2 进程控制 2.3 进程同步.
计算机软件技术基础 操作系统(3).
计算机操作系统 第二章 进程管理 高校教师、高级项目经理 任铄 QQ:
第三章 进程互斥与同步.
第三章 进程互斥与同步 进程通信 Communication.
第二章 进程管理.
临界区软件互斥软件实现算法.
操作系统原理 Operating System Principles
第二章 进程管理 2.1 进程(PROCESS)的基本概念 2.2 进程控制 2.3 进程同步 2.4 经典进程的同步问题 2.6 管程机制
李元金 计算机与信息工程学院 第 4 讲 进程管理(2) 李元金 计算机与信息工程学院 1/
临界区软件互斥软件实现算法 主讲教师:夏莹杰
最大公约数 ——解题报告 作者:宋含章 七(12)班 1.
第2章 进程管理 2.1 进程概念 2.2 线程 2.3 进程管理 2.4 进程间通信 2.5 经典进程同步问题 2.6 管程
第2章 进程和线程 内容提要: 2.1 进 程 概 念 2.2 进程的状态和组成 2.3 进 程 管 理 2.4 线 程.
第二章 进程管理 2.1 进程的基本概念 2.2 进程控制 2.3 进程同步 2.4 经典进程的同步问题 2.5 管程机制 2.6 进程通信
青少年常見犯法行為.
实验四、TinyOS执行机制实验 一、实验目的 1、了解tinyos执行机制,实现程序异步处理的方法。
进程同步(Process Synchronization)之 临界区问题(Critical Section Problem)
李元金 计算机与信息工程学院 第 6 讲 进程管理(4) 李元金 计算机与信息工程学院 1/
主讲人: 颜蓉花 E---mail: 财务管理课程 (第二版) 主讲人: 颜蓉花 E---mail:
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
信号量(Semaphore).
中五級電腦科 PASCAL檔案處理.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
3.4.6 进程的挂起和激活 当出现了引起进程挂起的事件时,用户请求将自己挂起,或者父进程请求挂起自己的子进程,应该利用挂起原语suspend( ) 挂起原语的执行过程:检查被挂起进程的状态;如果处于活动就绪状态,就将它改为静止就绪;如果处于活动阻塞,则改为静止阻塞。 进程的激活过程 当发生激活事件后,系统利用激活原语Active()将指定进程激活。激活原语先将进程从外存调入内存,然后检查进程的状态。
临界区问题的硬件指令解决方案 (Synchronization Hardware)
互斥与同步 操作系统实验2
第15讲 特征值与特征向量的性质 主要内容:特征值与特征向量的性质.
Race Conditions and Semaphore
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
本节内容 SEMAPHORE 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
第二章 进 程 管 理 2.1 前趋图和程序执行 2.2 进程的描述 2.3 进程控制 2.4 进程同步 2.5 经典进程的同步问题
一元一次方程的解法(-).
解题报告 七(5)班 严崟杰 03:20.
Presentation transcript:

李元金 计算机与信息工程学院 E-mail: liyuanjin10@126.com 第 5 讲 进程管理(3) 李元金 计算机与信息工程学院 E-mail: liyuanjin10@126.com 1/

经典进程同步问题 教学目标 掌握利用信号量机制解决经典的进程同步问题的方法; 教学内容 掌握P、V操作的实现。 共享缓冲区进程同步问题 掌握共享缓冲区进程同步问题的方法; 教学内容 共享缓冲区进程同步问题 经典进程的同步问题 计算机科学与技术系 信息与教育技术中心 2/

复习 进程同步的任务是什么? 同步机制应遵循的规则是什么? 信号量机制的种类有哪些? 什么是管程?作用是什么? 3/

经典进程同步问题 生产者--消费者问题 哲学家进餐问题 读者--写者问题 4/

生产者一消费者问题 Dijkstra把同步问题抽象成一种生产者和消费者关系,计算机系统中的许多问题都可以被归结为生产者和消费者关系,例如,生产者可以是计算进程,消费者是打印进程,输入时输入进程是生产者,计算进程是消费者。我们可以通过一个缓冲区把生产者和消费者联系起来。 5/

生产者一消费者问题 上述生产者--消费者问题是一个同步问题。即生产者和消费者之间满足如下条件: 消费者想接收数据时,有界缓冲区中至少有一个单元是满的; 生产者想发送数据时,有界缓冲区中至少有一个单元是空的。 6/

生产者一消费者问题 由于有界缓冲区是临界资源,因此,各生产者进程和消费者进程之间必须互斥执行。 由以上分析我们设公用信号量mutex保证生产者进程和消费者进程之间的互斥,设信号量empty表示有界缓冲区中的空单元数,初值为n;信号量full表示有界缓冲区中的非空单元数,初值为0。信号量mutex表示有界缓冲区中的个数,初值为1。 7/

利用记录型信号量解决生产者一消费者问题 mutex:使诸进程互斥地访问缓冲区(n个缓冲区) empty、 full:空、满缓冲区数量。 Var mutex,empty,full:semaphore:=1,n,0; buffer:array[0,1,…,n-1] of item; in, out: integer: =0,0; begin parbegin producer: begin repeat … Produce an item in nextp; 8/

consumer:begin repeat wait(full); wait(empty); wait(mutex); nextc:=buffer(out); out:=(out+1) mod n; signal(mutex); signal(empty); Consumer the item in nextc; Until false; end parend wait(empty); wait(mutex); buffer(in):=nextp; in:=(in+1) mod n; signal(mutex); signal(full); Until false; end 9/

思考 wait(empty)与wait(mutex) wait(full)与wait(mutex)是否可以互换? 在每个程序中的多个wait操作顺序不能颠倒,应先执行对资源信号量的wait操作,然后再执行对互斥信号量的wait操作,否则可能引起进程死锁。 wait 与signal对信号量的操作应该成对出现。 10/

利用AND信号量解决生产者——消费者问题 var mutex, empty, full: semaphore:=1,n,0; buffer:array[0,…,n-1] of item; in out: integer :=0,0; begin parbegin 11/

利用AND信号量解决生产者——消费者问题 Consumer: begin repeat Swait(full, mutex); nextc:=buffer(out); out:=(out+1) mod n; Ssignal(mutex, empty); consumer the item in nextc; until false; end Parend producer: begin repeat produce an item in nextp; … Swait(empty, mutex); buffer(in):=nextp; in:=(in+1) mod n; Ssingal(mutex, full); until false; end 12/

哲学家进餐问题 有五个哲学家共用一张圆桌,分别坐在周围的五张椅子上,在圆桌上有五个碗和五只筷子,他们的生活方式是交替地进行思考和进餐。平时,一个哲学家进行思考,饥饿时便试图取其左右最靠近他的筷子,只有在他拿到两只筷子时才能进餐,进餐完毕,放下筷子继续思考。 13/

利用记录型信号量解决哲学家进餐问题 Var chopstick: array[0, …, 4] of semaphore:=(1,1,1,1,1); repeat swait(chopstick[i]); wait(chopstick[(i+1)mod 5] ); eat; signal(chopstick[i]) ; signal(chopstick[(i+1)mod 5] ); think; Until false 14/

利用记录型信号量解决哲学家进餐问题 上述解决哲学家进餐问题的方法,可以保证不会有两个相邻的哲学家同时进餐,但是可能引起死锁。 解决方法 至多允许有四位哲学家同时去拿左边的筷子,最终能保证至少有一位哲学家能够进餐,并在用毕时能释放出他用过的两只筷子,从而使更多的哲学家能够进餐。 仅当哲学家的左右两只筷子均可用时,才允许他拿起筷子进餐。 规定奇数号哲学家先拿他左边的筷子,然后再去拿右边的筷子,而偶数号哲学家则相反。 15/

利用AND信号量解决哲学家进餐问题 Var chopstick: array[0, …, 4] of semaphore:=(1,1,1,1,1); processi repeat think; Sswait(chopstick[(i+1)mod 5],chopstick[i]); eat Ssignal(chopstick[(i+1)mod 5],chopstick[i]); Until false 16/

读者—写者问题 一个数据文件或记录,可被多个进程共享,把只要求读该文件的进程成为“Reader进程”,其他进程则称为“Write进程”。 17/

利用记录型信号量解决读者——写者问题 var rmutex, wmutex: semaphore: =1,1; readcount:integer: =0; begin parbegin reader: begin repeat wait(rmutex); if readcount=0 then wait(wmutex); readcount:=readcount+1; signal(rmutex); … perform read operation 18/

利用记录型信号量解决读者——写者问题 … wait(rmutex); readcount:=readcount-1; if readcount=0 then signal(wmutex); signal(rmutex); until false; end 19/

利用记录型信号量解决读者——写者问题 writer: begin repeat wait(wmutex); perform write operation; signal(wmutex); until false; end parend 20/

信号量集解决读者——写者问题 var RN integer; L, mx: semaphore: =RN, 1; begin parbegin reader: begin repeat Swait(L,1,1); Swait(mx,1,0); … perform read operation; … Ssignal(L,1); until false; end 21/

信号量集解决读者——写者问题 writer: begin repeat Swait(mx,1,1; L,RN,0); perform write operation; Ssignal(mx, 1); until flase; end parend 22/

信号量 一般说来,信号量的值与相应资源的使用情况有关。 信号量的值仅由P、V操作改变 P、V操作都是原语 P:申请一个单位资源 23/

P操作 P(s): 若S<0,入等待队列 若S>=0,继续 取s值减1 24/

V操作 V(s): 若S<=0,唤醒一等待队列进程 若S>0,继续 取s值加1 25/

信号量及P、V操作讨论 对于两个并发进程,互斥信号量的值仅取1、0和-1三个值 若MUTEX=1表示没有进程进入临界区 若MUTEX=0表示有一个进程进入临界区 若MUTEX=-1表示一个进程进入临界区,另一个进程等待进入。 26/

信号量及P、V操作讨论 信号量的物理含义: 信号量的初值应该大于等于0 S>0表示有S个资源可用 S=0表示无资源可用 P(S):表示申请一个资源 V(S):表示释放一个资源。 信号量的初值应该大于等于0 27/

信号量及P、V操作讨论 P、V操作必须成对出现,有一个P操作就一定有一个V操作 当为互斥操作时,它们同处于同一进程 当为同步操作时,则不在同一进程中出现 如果P(S1)和P(S2)两个操作在一起,那么P操作的顺序至关重要。 一个同步P操作与一个互斥P操作在一起时同步P操作在互斥P操作前 两个V操作无关紧要 28/

信号量及P、V操作讨论 P、V操作的优缺点 优点: 缺点: 简单,而且表达能力强(用P、V操作可解决任何同步互斥问题) 遇到复杂同步互斥问题时实现复杂 29/

共享缓冲区的进程的同步 设某计算进程CP和打印进程IOP共用一个单缓冲区,CP进程负责不断地计算数据并送入缓冲区T中,IOP进程负责不断地从缓冲区T中取出数据去打印。 30/

共享缓冲区的进程的同步 通过分析可知,CP、IOP必须遵守以下同步规则: 当CP进程把计算结果送入缓冲区时,IOP进程才 能从缓冲区中取出结果去打印; 当IOP进程把缓冲区中的数据取出打印后,CP进程才能把下一个计算结果送入缓冲区。 31/

共享缓冲区的进程的同步 用P、V操作解决下图之同步问题 put copy get 提示:分别考虑对缓冲区S和T的同步,再合并考虑 S T 32/

共享缓冲区的进程的同步 设置四个信号量Sin=1,Sout=0,Tin=1,Tout=0; while(1) P(Tout); copy: while(1) { P(Sout); P(Tin); 将数从S取出放入T; V(Tout); V(Sin); } get: while(1) { P(Tout); 将数从T取走; V(Tin); } put: while(1) { P(Sin); 将数放入S; V(Sout); } 33/

进程同步与互斥关系 进程同步与互斥都反映了在异步环境下并发进程间的相互制约关系。可归于同步范畴,但互斥是同步问题的一个特例,互斥解决临界区的使用,同步是并发进程在一些关键点上需互相等待互发消息。 34/

思考题 桌上有一空盘,最多允许存放一只水果。爸爸可向盘中放一个苹果或放一个桔子,儿子专等吃盘中的桔子,女儿专等吃苹果。 试用P、V操作实现爸爸、儿子、女儿三个并发进程的同步。 提示:设置一个信号量表示可否向盘中放水果,一个信号量表示可否取桔子,一个信号量表示可否取苹果 35/

S=1;So=0;Sa=0;(已经蕴含了儿子和女儿间的互斥关系) Father() { while(1) { p(S); 将水果放入盘中; if(是桔子)v(So); else v(Sa); } Son() { while(1) { p(So) 取桔子 v(S); 吃桔子; Daughter() { p(Sa) 取苹果 吃苹果;

小结 利用信号量机制解决经典进程的同步问题。 P、V操作 37/

作业 P84 13-16 38/