进程同步(Process Synchronization)之 临界区问题(Critical Section Problem)

Slides:



Advertisements
Similar presentations
Multicore Programming Final Review. Outline Intro to Parallelism and Concurrency Parallel Programming – Algorithms and Analysis Concurrent Programming.
Advertisements

作者 : 陳鍾誠 單位 : 金門技術學院資管系 URL : 日期 : 2016/7/21 行程的同步 註:本章學術性較重,但考試常考。
渡黑水溝 郁永河. 2 戎克船:是明末清初時期往返兩岸的主要交通工具 ∗ 1. 關於台灣的開發歷史,我們到底了解多少呢?不妨試著說出 就我們所知有關台灣開發史的故事、小說、電影、音樂與大 家分享。 ∗ 2. 什麼是黑水溝?黑水溝為什麼會成為大陸移民渡海來臺時最 大的威脅? ∗ 3. 有聽過「六死三留一回頭」、「有唐山公,無唐山嬤」這兩.
定 格 入 格 破 格 —— 新诗仿写复习训练 仿照下列句子,再把 “ 人生 ” 比喻成 “ 大海 ”“ 天空 ” , 造两个句子。 如果说人生是一首优美的乐曲,那么痛苦则 是其中一个不可或缺的音符。 参考答案: 1 、如果说人生是一望无际的大海,那么挫折则 是其中一个骤然翻起的浪花。 2 、如果说人生是一片湛蓝的天空,那么失意则.
阻塞操作. 在 linux 里,一个等待队列由一个 wait_queue_head_t 类型的结构来描述 等待队列的初始化: static wait_queue_head_t testqueue; init_waitqueue_head(&testqueue);
Linux 系统. 操作系统发展需求 1 没有操作系统 2 简单批处理操作系统 3 多道程序设计的批处理 4 多道程序设计的分时操作系统 5 多处理机并行系统 6 网络操作系统 7 分布式操作系统.
一百零一年溪口國小 學校日 班級: 三年三班 教師: 張慈麟.
全国国际商务英语考试(一级) 口试操作流程 全国国际商务英语考试中心 中国国际贸易学会商务专业培训考试办公室 2016年
第6章 二叉树和树 前面的章节主要讨论的是线性结构,二叉树和树属于非线性的结构。遍历非线性结构比线性结构要麻烦。
第二章 进程的描述与控制管理.
关注热点 2014年天猫双十一成交总额 571亿 点亮217个国家地区
作業系統 第六章 同步與死結.
Chapter 7: Process Synchronization 进程同步
多核体系结构与并行编程模型 计算机科学导论第八讲
高等职业学校建筑设计类与艺术设计类专业骨干教师实践能力国家级培训
创业实战.
没有请柬该如何办 记者如何选取有利位置 着装 准备工作 提问时的注意事项
PURSUING EXCELLENCE / TOWARD SUCCESS WUCHANG UNIVERSITY OF TECHNOLOGY
3.1能源资源的开发 ——以我国山西省为例.
Chapter 6 同步 (Synchronization)
Operating System Process Management - 4 Monday, August 11, 2008.
操作系统 (并发进程) 徐锋 南京大学计算机科学与技术系 2018年9月18日3时52分.
中国科学技术大学计算机系 陈香兰 2013Fall 第五讲 进程同步 中国科学技术大学计算机系 陈香兰 2013Fall.
Operating System Concepts 作業系統原理 Chapter 3 行程觀念 (Process Concept)
中国科学技术大学计算机系 陈香兰 2013Fall 第五讲 进程同步和通信(part II) 中国科学技术大学计算机系 陈香兰 2013Fall.
佇列 (Queue).
Java语言程序设计 第七部分 多线程.
Synchronization Background Critical Section Problem (临界区问题) 经典同步问题.
经典同步问题.
作業系統 第六章 同步與死結.
Chapter 3 行程觀念 (Process Concept)
李元金 计算机与信息工程学院 第 5 讲 进程管理(3) 李元金 计算机与信息工程学院 1/
计算机操作系统 第二章 进程管理 高校教师、高级项目经理 任铄 QQ:
第三章 进程互斥与同步.
SQL Injection.
程式語言Visual Basic 重複結構 黃瀧輝 老師 Long Hwai,Huang.
第三章 进程互斥与同步 进程通信 Communication.
第5章 堆疊(Stacks) 5-1 堆疊的基礎 5-2 堆疊的表示法 5-3 堆疊的應用 - 運算式的計算與轉換
临界区软件互斥软件实现算法.
Concurrency (并发性) Communication among processes
进程操作.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
操作系统原理 Operating System Principles
李元金 计算机与信息工程学院 第 4 讲 进程管理(2) 李元金 计算机与信息工程学院 1/
临界区软件互斥软件实现算法 主讲教师:夏莹杰
陈海明 副教授 信息学院 计算机系 电子信息类非计算机专业选修课 程序设计实践 陈海明 副教授 信息学院 计算机系
第2章 进程管理 2.1 进程概念 2.2 线程 2.3 进程管理 2.4 进程间通信 2.5 经典进程同步问题 2.6 管程
第2章 进程和线程 内容提要: 2.1 进 程 概 念 2.2 进程的状态和组成 2.3 进 程 管 理 2.4 线 程.
第三章 进程互斥与同步.
1.3 C语言的语句和关键字 一、C语言的语句 与其它高级语言一样,C语言也是利用函数体中的可执行 语句,向计算机系统发出操作命令。按照语句功能或构成的不 同,可将C语言的语句分为五类。 goto, return.
C语言程序设计 主讲教师:陆幼利.
Operation System(OS).
第7章 進階的同步 觀念與實務.
南宁翰林华府 ——地中海风格与现代住宅的融合.
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
信号量(Semaphore).
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
用穷举法设计程序 南京师范大学 教育技术系 倪佳慧
<编程达人入门课程> 本节内容 计算机编程语言 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
CHAPTER 6 Concurrency:deadlock And Starvation
中国农业科学院博士后学术论坛 博士后基金申请的经验及体会 中国农业科学院生物技术研究所 秦 华 博士
3.4.6 进程的挂起和激活 当出现了引起进程挂起的事件时,用户请求将自己挂起,或者父进程请求挂起自己的子进程,应该利用挂起原语suspend( ) 挂起原语的执行过程:检查被挂起进程的状态;如果处于活动就绪状态,就将它改为静止就绪;如果处于活动阻塞,则改为静止阻塞。 进程的激活过程 当发生激活事件后,系统利用激活原语Active()将指定进程激活。激活原语先将进程从外存调入内存,然后检查进程的状态。
分布式系统 Distributed Systems 第 9 讲 协调和协定 Lecture 9 Coordination and Agreement 王晓阳、张 奇 复旦大学 计算机科学技术学院.
临界区问题的硬件指令解决方案 (Synchronization Hardware)
Google的云计算 分布式锁服务Chubby.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
Race Conditions and Semaphore
本节内容 SEMAPHORE 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
Section 2-2: 4 (6), 7, 12 (14), 13, 18 (16), 21, 25, 28, 30, 36, 46, 48, 50, 54a Section 3-1: 4 (2), 5, 10, 15, 20, 29, 32 Section 4-1: 3, 7, 8,
8-3 原子結構.
Presentation transcript:

进程同步(Process Synchronization)之 临界区问题(Critical Section Problem)

让我们先达成共识 对共享数据(Shared Data)的并发访问(Concurrent Access),可能导致数据不一致问题 确保数据一致性(Data Consistency),是个合理的要求。它需要一个机制,以保证合作进程们有序地执行 以生产者-消费者问题为例。设计一个整型变量count,总是记录缓冲区中被占用的单元总数。count的初始值为 0;当生产者进程注入一个单元数据时,count增 1;当消费者进程消费掉一个单元数据时,count减 1。

生产者-消费者问题的一种解法 共享变量(Shared data)描述有界缓冲区(Bounded Buffer) #define BUFFER_SIZE 10 typedef struct { . . . } item; item buffer[BUFFER_SIZE]; int count = 0; 进程独占变量 int in = 0; int out = 0;

生产者-消费者问题的一种解法(续) 生产者进程 item nextProduced; while (1) { while (count == BUFFER_SIZE) ; /* do nothing */ buffer[in] = nextProduced; in = (in + 1) % BUFFER_SIZE; count++; }

生产者-消费者问题的一种解法(续) 消费者进程 item nextConsumed; while (1) { while (count == 0) ; /* do nothing */ nextConsumed = buffer[out]; out = (out + 1) % BUFFER_SIZE; count--; }

生产者-消费者问题的一种解法(续) 其中的2条语句 count++; count--; 必须独立不受干扰地执行 原子操作(Atomic operation) 要求该操作完整地一次性完成,不允许中间被打断 (e. g. 中断响应,CPU重新调度等)

生产者-消费者问题的一种解法(续) 高级语言的语句“count++”可能被编译翻译成如下机器语言: register1 = count register1 = register1 + 1 count = register1 高级语言的语句“count --”可能被编译翻译成如下机器语言: register2 = count register2 = register2 – 1 count = register2

生产者-消费者问题的一种解法(续) 假如并发执行的生产者进程和消费者进程恰巧经历一个时机点:它们都意欲修改共享变量count !上述汇编语句可能交叉执行。 是否交叉执行,取决于CPU调度器的调度结果。

生产者-消费者问题的一种解法(续) 假设count的当前值为 5,一种交叉执行的场景: producer: register1 = count (register1 = 5) producer: register1 = register1 + 1 (register1 = 6) consumer: register2 = count (register2 = 5) consumer: register2 = register2 – 1 (register2 = 4) producer: count = register1 (count = 6) consumer: count = register2 (count = 4) 生产者进程和消费者进程在一次并发执行后,共享变量count变为 4 or 6 正确的结果应该是 5 !

Race Condition Race condition(竞争): The situation where several processes access and manipulate shared data concurrently. The final value of the shared data depends upon which process finishes last. 若干进程并发访问并且操纵共享数据的特殊情形。共享数据的最终稳定值取决于最后完成操纵的那个进程

Race Condition 为了避免race conditions,并发进程必须同步(synchronized)

临界区问题(The Critical-Section Problem) 每个进程存在一段代码,称作为临界区(critical section), 进程就是通过这段代码访问了共享数据(shared data) 其它代码段没有访问共享数据 这 n 个进程中,至少存在1个以上的进程甚至修改了共享数据

临界区问题(续) 有很多例子,关于临界区 临界区问题 怎样确保 – 当有一个进程 i 正在其自己的临界区执行时,没有任何其它进程 j 也在它(进程 j )的临界区中执行

临界区问题的解决方案必须满足3条件 “互斥”(Mutual Exclusion) – 如果进程Pi正在其临界区执行,那么,其它任何进程均不允许在他们的临界区中

临界区问题的解决方案必须满足3条件 “空闲让进”(Progress) – 如果 没有进程处于它的临界区,and 某些进程申请进入其临界区 那么 只有那些不在remainder sections的进程,才能参与能否进入临界区的选举, and 这个选举不允许无限期(indefinitely)推迟

临界区问题的解决方案必须满足3条件 “有限等待”(Bounded Waiting) - 某一进程从其提出请求,至它获准进入临界区的这段时间里,其它进程进入他们的临界区的次数存在上界 假设进程各自都在持续执行 不考虑N个进程之间的相对执行速度

临界区问题解决方案的简化框架 只限于 2 processes, Pi and Pj 进程Pi代码段的一般化结构(进程Pj也一样) do { 进入临界区前 (entry section) 临界区(critical section) 离开临界区后(exit section) 其它代码段(remainder section) } while (1); 当然,两个进程可能有多处共享变量,因此有多处这样的一般化结构。

END