Chapter 6 同步 (Synchronization)

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 行程的同步 註:本章學術性較重,但考試常考。
© 2012 IBM Corporation IBM 中国系统与科技研发中心 --- IBM i 实验室之旅 利用工具分析 IBM i 程序性能 应锦鑫, IBM i 性能工具高级软件工程师 IBM 中国系统与科技研发中心.
1 I/O 设备访问方式和类型. 2 Overview n The two main jobs of a computer: l I/O (Input/Output) l processing n The control of devices connneted to the computer is.
2007年8月龙星课程 周源源老师课程体会 包云岗 中科院计算所
第10章 并发控制技术 10.1 并发控制概述 10.2 并发控制的正确性准则 10.3 加锁协议 10.4 死锁的检测、处理和预防
第二章 进程的描述与控制管理.
作業系統 第六章 同步與死結.
Chapter 7: Process Synchronization 进程同步
控制流程實作 胡百敬 精誠公司恆逸資訊 二○一七年三月十九日
第6章 資料庫管理系統 6-1 關聯式資料庫管理系統 6-2 SQL Server資料庫管理系統
資料庫設計 Database Design.
第7章 事务管理 事务管理(transaction management): 恢复——保证事务在并发执行时满足ACID准则的技术。
第6章 死結(Deadlock).
PURSUING EXCELLENCE / TOWARD SUCCESS WUCHANG UNIVERSITY OF TECHNOLOGY
Chapter 6 時序.
Operating System Process Management - 4 Monday, August 11, 2008.
Leftmost Longest Regular Expression Matching in Reconfigurable Logic
Operating System CPU Scheduing - 2 Monday, August 11, 2008.
Minimum Spanning Trees
操作系统 (并发进程) 徐锋 南京大学计算机科学与技术系 2018年9月18日3时52分.
Operating System Concepts 作業系統原理 Chapter 3 行程觀念 (Process Concept)
中国科学技术大学计算机系 陈香兰 2013Fall 第五讲 进程同步和通信(part II) 中国科学技术大学计算机系 陈香兰 2013Fall.
多线程编程基本概念 2008.
Applied Operating System Concepts
Deadlocks P0 P1 Example System has 2 tape drives.
和春技術學院資訊管理系 九十三學年度第一學期 系統程式 第三章 死結(Deadlock)
Logistics 物流 昭安國際物流園區 總經理 曾玉勤.
经典同步问题.
作業系統 第六章 同步與死結.
Flash数据管理 Zhou da
HLA - Time Management 陳昱豪.
Chapter 3 行程觀念 (Process Concept)
第五組 : 廖震昌 / 謝坤吉 / 黃麗珍 陳曉伶 / 陳思因 / 林慧佳
计算机操作系统 第二章 进程管理 高校教师、高级项目经理 任铄 QQ:
第三章 进程互斥与同步.
第三章 进程互斥与同步 进程通信 Communication.
刘红岩 清华大学 管理科学与工程系 第17章 事务管理 刘红岩 清华大学 管理科学与工程系
操作系统原理 Operating System Principles
李元金 计算机与信息工程学院 第 4 讲 进程管理(2) 李元金 计算机与信息工程学院 1/
An Introduction to Cloud RDBMS
邹佳恒 第十八届全国科学计算与信息化会议 • 威海,
第4章(1) 空间数据库 —数据库理论基础 北京建筑工程学院 王文宇.
佇列(queue) Lai Ah Fur.
多核结构与程序设计 杨全胜 东南大学成贤学院计算机系.
樹 2 Michael Tsai 2013/3/26.
句子成分的省略(1).
感謝同學們在加分題建議. 我會好好研讀+反省~
Chapter 5 Recursion.
第2章 进程管理 2.1 进程概念 2.2 线程 2.3 进程管理 2.4 进程间通信 2.5 经典进程同步问题 2.6 管程
第2章 进程和线程 内容提要: 2.1 进 程 概 念 2.2 进程的状态和组成 2.3 进 程 管 理 2.4 线 程.
Operation System(OS).
中国科学技术大学计算机系 陈香兰 2013Fall 第七讲 存储器管理 中国科学技术大学计算机系 陈香兰 2013Fall.
中国科学技术大学计算机系 陈香兰 Fall 2013 第三讲 线程 中国科学技术大学计算机系 陈香兰 Fall 2013.
An Introduction to Database System An Introduction to Database System
從 ER 到 Logical Schema ──兼談Schema Integration
17 交易處理與鎖定 17-1 交易的基礎 17-2 交易處理 17-3 並行控制 17-4 資料鎖定 17-5 死結問題.
计算机问题求解 – 论题 算法方法 2016年11月28日.
Chap2 Stack & Queue.
第7章 進階的同步 觀念與實務.
信号量(Semaphore).
计算机问题求解 – 论题1-5 - 数据与数据结构 2018年10月16日.
CHAPTER 6 Concurrency:deadlock And Starvation
Efficient Query Relaxation for Complex Relationship Search on Graph Data 李舒馨
磁共振原理的临床应用.
怎樣把同一評估 給與在不同班級的學生 How to administer the Same assessment to students from Different classes and groups.
Race Conditions and Semaphore
Experimental Analysis of Distributed Graph Systems
中正大學,資工系,作業系統實驗室 陽春副教授 羅習五
How do you make a banana milk shake?
Presentation transcript:

Chapter 6 同步 (Synchronization) 6.1 背景 6.2 臨界區間問題 6.3 Peterson’s解決方案 6.4 同步之硬體 6.5 號誌 6.6 典型的同步問題 6.7 監督程式 6.8 不可分割的交易

6.1 背景(Background) 這個不正確的狀態是因為允許兩個行程並行處理這個 counter變數。像這種數個行程同時存取和處理相同資料的情況,而且執行的結果取決於存取時的特殊順序,就叫兢爭情況 (race condition)。 T0 => T1 => T4 => T2 => T3 => T5 =>

6.2 臨界區間問題(Critical-Section Problem) 互斥(Mutual Exclusion):如果行程Pi正在臨界區間內執行,則其它的行程不能在其臨界區間內執行。 進行(Progress):如果沒有行程在臨界區間內執行,同時某一行程想要進入其臨界區間,那麼只有那些不在剩餘區間執行的行程才能加入決定誰將在下一次進入臨界區間,並且這個選擇不得無限期地延遲下去。 有限制的等待(Bound Waiting):一個行程已要求進入其臨界區間,在此要求尚未被答應前,允許其它的行程進入其臨界區間的次數要有限制。

6.3 Peterson’s解決方案(Perterson’s Solution) 要證明 互斥性存在 進行(Progress)的要求能被滿足 有限制的等待要求亦能符合。 P0 i=0, j=1 flag[0]=True; turn=1; while(flag[1] && turn==1); P0 P1 P1 i=1, j=0 flag[1]=True; turn=0; while(flag[0] && turn==0); i=0, 1

6.4 同步之硬體 硬體上的特殊性質可以使寫程式的工作變得比較容易,並且增進系統的效率。 6.4 同步之硬體 lock=FALSE 硬體上的特殊性質可以使寫程式的工作變得比較容易,並且增進系統的效率。 電腦系統都提供了一些特殊的硬體指令,允許我們可以在同一記憶體週期內去測試修改一個字組的內容,或交換兩個字組的內容。 回傳*target, 並設定*target為True lock=FALSE 設定lock為True *a & *b內容對換

waiting[i]=FALSE; lock=FALSE lock=FALSE TestAndSet及Swap由硬體製作(一時間週期完成;不可分步驟方式執行)

6.5 號誌 (Semaphore) 6.5.1 用途(Usage) 計數號誌 (counting semaphore)的值可以不受限制。二元號誌 (binary semaphore)的數值可以是0或 1。在某些系統,二元號誌稱為互斥鎖 (mutex locks),當它們是鎖而且互斥。 mutex=1 wait(mutex);

6.5.2 製作(Implementation) 號誌定義都有一個主要的缺點,那就是它們都需要忙碌等待 (busy waiting)。意即當一個行程置於其臨界區間時,其它欲進入它們的臨界區間之行程必定在入口的程式碼形成循環迴路。 Implementation of wait: wait(semaphore *S) { S->value--; if (S->value < 0) { add this process to S->list; block(); } Implementation of signal: signal(semaphore *S) { S->value++; if (S->value <= 0) { remove a process P from S->list; wakeup(P); typedef struct{ int value; struct process *list; } semaphore

6.5.3 死結和飢餓(Deadlock and Starvation) Deadlock – two or more processes are waiting indefinitely for an event that can be caused by only one of the waiting processes Let S and Q be two semaphores initialized to 1 P0 P1 wait (S); wait (Q); wait (Q); wait (S); . . signal (S); signal (Q); signal (Q); signal (S); Starvation – indefinite blocking. A process may never be removed from the semaphore queue in which it is suspended. Indefinite blocking may occur if we remove processes from the list associated with a semaphore in LIFO (Last-in, First out) order. 9

6.5.4 優先權倒置(Priority Inversion) 假設有三個行程L、M、H,其優先權順序是L < M < H。假設行程H要求正被行程L存取的資源R。通常行程H會等待L完成使用資源R。然而,現在因為行程M變成可執行的,因此可搶先行程L。間接地一個有較低優先權的行程(行程M)已經影響到行程H。這個問題被稱為優先權倒置。 優先權繼承協定必須允許行程L暫時地繼承行程H的優先權,因此才能阻止行程M搶先它的執行。當行程L已經完成使用資源R時,它將放棄它從H所繼承的優先權並假設其最初的優先權。因為資源R是可用的,接下來讓行程H使用,而不是M。 Priority Inversion - Scheduling problem when lower-priority process holds a lock needed by higher-priority process

Priority inversion is a situation where in lower priority tasks will run blocking higher priority tasks waiting for resource (mutex).  priority: A(High) B(Medium) C(Low) C was ready to run. So C starts running. locks mutex A is ready to run. Bcz of A is higher priority than C, A  gets the CPU (otherwords C relinguishes CPU).  While executing "A" task, it's need of resource(mutex) but it locked by lower priority task "C". so task "A" going to  be waiting state(priority inversion) B is ready to run. Bcz B is Higher priority than C, B get the CPU frm C.  For task "B", its no need of any resource(mutex). so it wont be waiting for any task to get resource. it will be finished first. Then, Task "C" gets CPU from task "B" and finished its task, and reliese the resource(mutex). Task C (waiting task for resource)then gets mutex finish execution.. Here:  B(M) task finished exe first C(L) task finished exe second A(H) task finished exe last even its have higher priority  than both B and C

6.6 典型的同步問題(Classic Problem of Synchronization) 6.6.1 有限緩衝區問題(Bounded-Buffer Problem) N buffers, each can hold one item Semaphore mutex initialized to the value 1 Semaphore full initialized to the value 0 Semaphore empty initialized to the value N. Empty 5 Full 0 Mutex 1 Buffer[0] Buffer[1] Buffer[2] Buffer[3] Buffer[4]

6.6.2 讀取者-寫入者問題(Readers and Writers Problem) Allow multiple readers to read at the same time. Only one single writer can access the shared data at the same time. 除非有一Writer已獲得允許使用共用資料,否則Reader不需保持等候狀態 (Reader不用等候其他Reader結束,但Writer需要等候)。Writer可能有Starvation 若有一Writer已在等候存取共用資料,則不能有新Reader去讀取資料。Reader可能 有Starvation Semaphore mutex initialized to 1 Semaphore wrt initialized to 1 Integer readcount initialized to 0

6.6.3 哲學家進餐的問題(Dining-Philosophers Problem) Shared data Bowl of rice (data set) Semaphore chopstick [5] initialized to 1 至多允許四位哲學家上座 只有左右二支筷子可取用時,才允許哲學家拾取 座次為奇數號取其左邊筷子、為偶數號取其右邊筷子

6.7 監督程式 (Monitors) 6.7.1 用途(Usage) 一種抽象的資料型態(ADT)使用公用的方法封裝私人的資料以及函數。 對此資料進行操作。監督程式之型式為該程式是由一組程式設計者定義之運算元所組成。 此監督程式之形式是由變數宣告所組成,該變數之值定義了狀態及運作之程序。

condition x, y; x.wait(); : x.signal(); 可以確保同一時間只有一個Process 在monitor內執行。

6.7.2 使用監督程式哲學家進餐的解(Dining-Philosophers Solution Using Monitors) 只有左右二支筷子可取用時,才允許哲學家拾取 不會發生deadlock但可能有Starvation

6.7.3 使用號誌製作監督程式(Implementing a Monitor Using Semaphores) 對每一個監督程式提一個號誌mutex(初始值為 1)。每一個行程在進 入監督程式之前,都必須先執行wait (mutex) 的動作,並在離開監 督程式之後,執行signal (mutex) 的動作。 semaphore next: 控制通知等候process next_count紀錄等候next號誌地˙process數 x_sem=1; x.count=0; mutex=1; next=0; F: external procedure x.wait() x.signal()

6.7.4 監督程式內的恢復行程(Resuming Processes within a Monitor) R.acquire(t) … access the resource; R.release(); 把單一資源分配給相互競爭的process 每一process須告知使用資源之最大使用使間 Monitor將資源分配給使用時間最短之process 一個行程(Process)可能在沒有先取得某項資源的存取允許權之前就先使用該資源。 一個行程在獲得某項資源的存取權之後,就佔住不放。 一個行程可能會試圖存取一項從未取得過的資源。 一個行程可能會對相同的資源提出兩次要求(沒有先釋放出該資源)。

6.8 不可分割的交易(Atomic Transactions) 臨界區間的互斥性保證了臨界區間的執行之不可分割。換言之,如果兩個臨界區間並行地執行,結果相當於它們以某種未知的順序循序地執行。雖然這項性質在許多應用領域很有用,依然有許多情況下我們希望工作是完整的執行完,或完全不執行。 資料的一致性 (連同資料的儲藏和取回),時常與資料庫系統 (Database systems)有關。最近,興起將資料庫系統的技術應用在作業系統。作業系統可以視為資料的處理者:因此,可以從資料庫研究的進階技術和模型得到一些幫助。

6.8.1 系統模型(System Model) A collection of operations that performs a single logical function is called a transaction(交易). 成功完成一交易就執行committed,確認之前交易活動資料。失敗則中止 (aborted),恢復之前交易資料狀態(稱為為rolled back撤回)。 為了確保不可分割的性質,首先需要識別用來儲存被交易存取各項資料 之裝量的特性。不同型態的儲存媒體是由它們的速度(Speed)、容量 (Capacity)、和失效彈性(Resilience to failure)來區分。 揮發性儲存體 (volatile storage):儲存在揮發性儲存體的資訊在系統當掉時通常不存在。這種儲存體的例子有主記憶體和快取記憶體。對揮發性儲存體的存取非常快,這是因為記憶體存取本身的速度,和因為可以直接在揮發性儲存體 存取任何資料項。 非揮發性儲存體 (nonvolatile storage):儲存在非揮發性儲存體的資訊在系統當掉之後通常還存在。這種儲存體的例子有磁碟和磁帶。目前非 揮發性儲存體的速度比揮發性儲存體的速度慢好幾個級次。因為磁碟和磁帶裝置是電子機械式,並且需要實體移動以存取資料。 穩定儲存體 (stable storage):在穩定儲存體的資訊絕不會遺失。為了製作近似這種的儲存體,我們需要複製資訊到數個非揮發性的儲存體快取 (通常是磁碟),每一個有各自的失效模式,並且以控制的方式更新資訊 。

6.8.2 以記載簿為基礎的復原(Log-based Recovery) 預先記錄所有對各項資料所做修改之交易資訊,稱為預寫式記載簿 (write-ahead logging)。 為每一筆記載簿登錄下列各欄寫入交易資訊: 1. 交易名稱 (transaction):執行 write 操作交易的唯一名稱。 2. 資料項名稱 (data item name):寫入資料項的唯一名稱。 3. 舊值 (old value):寫入動作前的資料項數值。 4. 新值 (new value):寫入後的資料項數值。 undo(Ti) redo(Ti) 缺點:需做二次write

6.8.3 檢查點(Checkpoints) 一旦系統failure,以記載簿為基礎的復原方式,必須搜尋整個紀錄簿,搜尋過程耗時,影響效能。 1. 將所有記錄簿中目前在揮發性儲存體(通常是主記憶體)的記錄 輸出到穩定儲存體。 2. 將所有在揮發性儲存體的已修改資料輸出到穩定儲存體。 3. 輸出一筆記錄簿記錄(checkpoint)到穩定儲存體。

6.8.4 並行的不可分割交易(Concurrent Atomic Transactions) 前面所述是每次只能執行一筆交易的環境,考慮可以同時執行多個交易環境。 每一筆交易都是不可分割,交易的並行執行就相當於以某種任意順序依序地執行這些交易。這項性質 [叫做可串列化,serialization)可以藉著在一個臨界區間只執行一項交易來維持。 所有的交易都共享一個共用號誌 mutex,此號誌被設定成 1的初值。當一項交易開始執行時,它的第一個動作時執行wait (mutex)。在此交易交付或中止時,它就執行 signal (mutex)。

6.8.4.1 可串列化(Serializability) Conflicting operation Non-Conflicting operation 將non-serial schedule轉換成 Serial schedule 交換 T0的read(B)操作和T1的write(A)。

6.8.4.2 上鎖協定(Locking Protocol) 每一資料項給予一鎖,每一筆交易需遵循上鎖協定,以管理如何取得和釋放鎖。 資料有下列二種模式被上鎖: Two-phase locking protocol可確保conflict serializable, 但還是會發生deadlock。(習題)

6.8.4.3 時間戳記為基礎的協定(Timestamp-based Protocols) 使用系統時鐘的數值做為時間戳記:換言之,一筆交易的時間戳記等於此交易進入系統時的時鐘數值。這種方法對於發生在分隔系統間的交易,或沒有共用同一時鐘的處理器之交易無效。 使用邏輯計數器做為時間戳記:換言之,交易的時間戳記等於此交易 進入系統時的計數器數值。當設定一個新的時間戳記之後,計數器就 加 1。 TS(Ti) < TS(Tj):表示交易Ti發生在交易Tj前的串列排班。 每一資料項 Q 配上二個Timestamp值: