就叫兢争情况racecondition课件_第1页
就叫兢争情况racecondition课件_第2页
就叫兢争情况racecondition课件_第3页
就叫兢争情况racecondition课件_第4页
就叫兢争情况racecondition课件_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Operating System Concepts作業系統原理 Chapter 6 同步 (Synchronization)CHAPTER 6 同步6.1 背景6.2 臨界區間問題6.3 Petersons解決方案6.4 同步之硬體6.5 號誌6.6 典型的同步問題6.7 監督程式6.8 不可分割的交易6.1 背景這個不正確的狀態是因為允許兩個行程並行處理這個 counter變數。像這種數個行程同時存取和處理相同資料的情況,而且執行的結果取決於存取時的特殊順序,就叫兢爭情況 (race condition)。6.2 臨界區間問題(Critical-Section Problem)互斥(Mutu

2、al Exclusion):如果行程Pi正在臨界區間內執行,則其它的行程不能在其臨界區間內執行。進行(Progress):如果沒有行程在臨界區間內執行,同時某一行程想要進入其臨界區間,那麼只有那些不在剩餘區間執行的行程才能加入決定誰將在下一次進入臨界區間,並且這個選擇不得無限期地延遲下去。有限制的等待(Bound Waiting):一個行程已要求進入其臨界區間,在此要求尚未被答應前,允許其它的行程進入其臨界區間的次數要有限制。6.3 Petersons解決方案要證明互斥性存在,進行的要求能被滿足,有限制的等待要求亦能符合。P0P1i=0, 16.4 同步之硬體硬體上的特殊性質可以使寫程式的工作

3、變得比較容易,並且增進系統的效率。電腦系統都提供了一些特殊的硬體指令,允許我們可以在同一記憶體週期內去測試修改一個字組的內容,或交換兩個字組的內容。lock=FALSE回傳*target, 並設定*target為True*a & *b內容對換設定lock為Truelock=FALSElock=FALSEwaitingi=FALSE;lock=FALSETestAndSet及Swap由硬體製作(不可分方式執行)6.5 號誌 (Semaphore)6.5.1 用途計數號誌 (counting semaphore)的值可以不受限制。二元號誌 (binary semaphore)的數值可以是0或 1。

4、在某些系統,二元號誌稱為互斥鎖 (mutex locks),當它們是鎖而且互斥。mutex=1wait(mutex);6.5.2 製作號誌定義都有一個主要的缺點,那就是它們都需要忙碌等待 (busy waiting)。意即當一個行程置於其臨界區間時,其它欲進入它們的臨界區間之行程必定在入口的程式碼形成迴路。Implementation of wait: wait(semaphore *S) S-value-; if (S-value list; block(); Implementation of signal:signal(semaphore *S) S-value+; if (S-valu

5、e list; wakeup(P); 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 processesLet S and Q be two semaphores initialized to 1 P0 P1 wait (S); wait (Q); wait (Q); wait (S);. . . . signal (S); signal (Q

6、); signal (Q); signal (S);Starvation indefinite blocking. A process may never be removed from the semaphore queue in which it is suspendedPriority Inversion - Scheduling problem when lower-priority process holds a lock needed by higher-priority process6.5.4 優先權倒置(Priority Inversion)假設有三個行程L、M、H,其優先權

7、順序是L M H。假設行程H要求正被行程L存取的資源R。通常行程H會等待L完成使用資源R。然而,現在因為行程M變成可執行的,因此可搶先行程L。間接地一個有較低優先權的行程(行程M)已經影響到行程H。這個問題被稱為優先權倒置。 優先權繼承協定必須允許行程L暫時地繼承行程H的優先權,因此才能阻止行程M搶先它的執行。當行程L已經完成使用資源R時,它將放棄它從H所繼承的優先權並假設其最初的優先權。因為資源R是可用的,接下來讓行程H使用,而不是M。 6.6 典型的同步問題6.6.1 有限緩衝區問題(Bounded-Buffer Problem)N buffers, each can hold one i

8、temSemaphore mutex initialized to the value 1Semaphore full initialized to the value 0Semaphore empty initialized to the value N.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.Semaphore m

9、utex initialized to 1Semaphore wrt initialized to 1Integer readcount initialized to 0除非有一Writer已獲得允許使用共用資料,否則Reader不需保持等候狀態(Reader不用等候其他Reader結束,但Writer需要等候)。Writer可能有Starvation 若有一Writer已在等候存取共用資料,則不能有新Reader去讀取資料。Reader可能有Starvation 6.6.3 哲學家進餐的問題(Dining-Philosophers Problem)Shared data Bowl of ri

10、ce (data set)Semaphore chopstick 5 initialized to 16.7 監督程式 (monitor)6.7.1 用途一種抽象的資料型態使用公用的方法封裝私人的資料以對或函數之實體。此資料進行操作。監督程式之型式為該程式是由一組程式設計者定義之運算元所組成。此監督程式之形式之表示是由變數宣告所組成,該變數之值定義了形式範例的狀態,以及形式運作之程序。6.7.2 使用監督程式哲學家進餐的解6.7.3 使用號誌製作監督程式對每一個監督程式提一個號誌mutex(初始值為 1)。每一個行程在進入監督程式之前,都必須先執行wait (mutex) 的動作,並在離開監督

11、程式之後,執行signal (mutex) 的動作。6.7.4 監督程式內的恢復行程一個行程可能在沒有先取得某項資源的存取允許權之前就先使用該資源。一個行程在獲得某項資源的存取權之後,就佔住不放。一個行程可能會試圖桿放一項從未取得過的資源。一個行程可能會對相同的資源提出兩次要求(沒有先釋放出該資源)。6.8 不可分割的交易臨界區間的互斥性保證了臨界區間的執行之不可分割。換言之,如果兩個臨界區間並行地執行,結果相當於它們以某種未知的順序循序地執行。雖然這項性質在許多應用領域很有用,依然有許多情況下我們希望工作是完整的執行完,或完全不執行。資料的一致性 (連同資料的儲藏和取回),時常與資料庫系統

12、(Database systems)有關。最近,與起應用資料庫系統的技術在作業系統的與趣。作業系統可以視為資料的處理者:因此,可以從資料庫研究的進階技術和模型得到一些幫助。6.8.1 系統模型為了決定系統該如何確保不可分割的性質,我們首先需要誠別用來儲存被交易存取各項資料之裝量的特性。不同型態的儲存媒體是由它們的速度、容量和失效彈性來區分。揮發性儲存體 (volatile storage):儲存在揮發性儲存體的資訊在系統當掉時通 常不存在。這種儲存體的例子有主記憶體和快取記憶體。對揮發性儲存體的存取非常快,這是因為記憶體存取本身的速度,和因為可以直接在揮發性儲存體 存取任何資料項。非揮發性儲存

13、體 (nonvolatile storage):儲存在非揮發性儲存體的資訊在系統當掉之後通常還存在。這種儲存體的例子有磁碟和磁帶。目前非 揮發性儲存體的速度比揮發性儲存體的速度慢好幾個級次。因為磁碟和磁帶裝 置是電子機械式,並且需要實體移動以存取資料。穩定儲存體 (stable storage):在穩定儲存體的資訊絕不會遺失 。為了製作近似這種的儲存體,我們需要複製資訊到數個非揮發性的儲 存體快取 (通常是磁碟),每一個有各自的失效模式,並且以控制的方式更新 資訊 。6.8.2 以記載簿為基礎的復原每一筆登錄記載著一筆寫入交易的操作,並有以下各欄:交易名稱 (transaction):執行 w

14、rite操作之交易的唯一名稱。資料項名稱 (data item name):寫入資料項的唯一名稱。舊值 (old value):寫入動作前的資料項數值。新值 (new value):寫入後的資料項數值。6.8.3 檢查點(checkpoint)1. 將所有記錄簿中目前在揮發性儲存體(通常是主記憶體)的記錄輸出到穩定儲存體。2. 將所有在揮發性儲存體的已修改資料輸出到穩定儲存體。3. 輸出一筆記錄簿記錄(checkpoint)到穩定儲存體。6.8.4 並行的不可分割交易每一筆交易都是不可分割,交易的並行執行就相當於以某種任意順序依序地執行這些交易。這項性質 叫做可串列化,serialization)可以藉著在一個臨界區間只執行一項交易來維持。所有的交易都共享一個共用號誌 mutex,此號誌被設定成 1的初值。當一項交易開始執行時,它的第一個動作時執行wait (mut

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论