第5章 同步(Synchronization)

Slides:



Advertisements
Similar presentations
台中市牙醫師公會 社會教育委員會 蔡佩音醫師 迎接新口腔時代. 蛀牙 v.s 全身疾病.
Advertisements

第一單元 建立java 程式.
LinkIt ONE開發板的簡介.
MATLAB 程式設計 時間量測 清大資工系 多媒體資訊檢索實驗室.
夯实基层 创新进取 大力践行医药卫生体制改革 丽水市卫生局 黄 刚
第三节 灰树花栽培技术 主讲 段鸿斌.
开展优质护理服务 落实重患护理 沈阳市第四人民医院 姚军.
OSDI.
認識倍數(一) 設計者:建功國小 盧建宏.
陳維魁 博士 儒林圖書公司 第九章 資料抽象化 陳維魁 博士 儒林圖書公司.
Chapter 6 同步 (Synchronization)
TQC+ JAVA全國教師研習會 PLWeb 程式設計練習平台 簡介.
Operating System Process Management - 4 Monday, August 11, 2008.
主題五 CPU Learning Lab.
Chapter 5 迴圈.
程式語言的基礎 Input Output Program 世代 程式語言 第一世代 Machine language 第二世代
程式設計概論 1.1 程式設計概論 程式語言的演進 物件導向程式 程式開發流程 1.2 C++開發工具
Chapter 1 Introduction.
第一篇 Unix/Linux 操作介面 第 1 章 Unix/Linux 系統概論 第 2 章 開始使用 Unix/Linux
第1章 認識Arduino.
101北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
经典同步问题.
SQL Stored Procedure SQL 預存程序.
R教學 安裝RStudio 羅琪老師.
ASP.NET基本設計與操作 建國科技大學 資管系 饒瑞佶 2007年.
安裝JDK 安裝Eclipse Eclipse 中文化
临界区软件互斥软件实现算法.
第1章 單晶片微電腦概論.
程式設計專題.
Java 程式設計 講師:FrankLin.
FTP檔案上傳下載 實務與運用.
私立南山高中 信息組 電腦研習 電腦資料的備份 中華民國 99年4月20日 星期二.
临界区软件互斥软件实现算法 主讲教师:夏莹杰
網路安全技術 OSI七層 學生:A 郭瀝婷 指導教授:梁明章.
Topic Introduction—RMI
第一單元 建立java 程式.
第2章 进程和线程 内容提要: 2.1 进 程 概 念 2.2 进程的状态和组成 2.3 进 程 管 理 2.4 线 程.
數學 近似值 有效數值.
Operation System(OS).
青少年常見犯法行為.
網頁資料知多少? 事 實 ? 謠言?.
IIS Internet Information Services
緩衝區溢位攻擊 學生:A 羅以豪 教授:梁明章
數位學習社群講座 工設系講師:洪漢森 老師 漫談創意與電腦繪圖 軟體學習.
SAP 架構及前端軟體安裝 Logical View of the SAP System SAP Frontend 7.1安裝與登入
第7章 進階的同步 觀念與實務.
網際網路與電腦應用 林偉川 2001/10/18.
專題規劃-多功能搖桿 指導教授:李博明 組員:學號-姓名 4A239045-賴尚昱 4A239063-蔣秉錩 4A239064-郭冠志
六年級電腦科 KompoZer w3.dhps.tp.edu.tw.
電腦概論考題分析 佛學資訊組 碩一 張榮顯.
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
Pthread.
MiRanda Java Interface v1.0的使用方法
陣列與結構.
黃影雯副教授講授 E_Mail Address:
北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
工作上最常遇到的困難?.
一、簡介 電腦硬體設計:純硬體電路(hardware)及韌體電 路(firmware)兩種方式。
6.1 動畫檔案的格式 6.2 建立合適的動畫元素.
資料表示方法 資料儲存單位.
MultiThread Introduction
資料擷取與監控應用實務.
安裝JDK 配置windows win7 環境變數
Race Conditions and Semaphore
多站台網路預約系統之 AJAX即時資料更新機制
網路上免費使用的Medline PubMed-Medline.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
10303: How Many Trees? ★★☆☆☆ 題組:Contest Archive with Online Judge
Chapter 4 Multi-Threads (多執行緒).
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
Presentation transcript:

第5章 同步(Synchronization)

基本觀念 賽跑的時候會要求跑者起跑的時間一致,有人偷跑就要重新來過,同時起跑就是一種同步(synchronization)的概念 使用PDA的人有時候需要把PDA跟電腦連接在一起,從電腦下載資料到PDA上、或是從PDA將資料上傳到電腦上,讓PDA與電腦上的資料能夠同步 電腦作業系統探討的同步概念跟這些觀念很像

處理元與執行緒(thread)的管理 多工(multiprogramming) 多處理器(multiprocessing) 分散式的處理(distributed processing)

應用程式運用並行(concurrency) 的困難 並沒有普及的平行程式語言(parallel programming language)可用,Ada支援同時性卻不普及,常用的C/C++不支援同時性。 系統軟體的技術並未在同時性程式(concurrent program)的支援上有一致的發展。 由於同時性的解決方法分歧,作業系統只提供極少的同時性支援功能。

並行演算法(concurrent algorithm)發展上不利的因素 要設計一組可同時並合作執行的程式是很複雜的問題,原因是實作的方法太多了,另一個原因則是處理元間的交互作用(interaction)與相依性(dependencies)不易處理。 在網路與平行處理的架構下,交互作用的處理更複雜。 在設計具有同時執行能力的軟體時,常會衍生出其他的同步問題。

同步(synchronization) 同步的觀念不太容易理解,而且同步不是作業系統領域獨有的問題,其他的領域也有類似的問題 同步是指多個處理元同時在執行,輪流使用CPU 為什麼電腦系統會同時有多個處理元在執行呢 ? 多工的作業系統本來就容許多個處理元同時執行 在結構化的應用系統中,則是有多個處理元個別執行,即使作業系統本身也有結構化的現象,由數個處理元合作完成複雜的系統功能,這都會造成多個處理元同時執行

作業系統中處理元同步的問題 作業系統在同步問題上的考量 處理元之間的互動(process interaction)

臨界區域(critical section) 當兩個處理元共用一個變數(variable),我們說各處理元使用共用變數時進入了所謂的臨界區域 在沒有做任何控制的情況下,當這兩個處理元同時執行時,所得到的結果不是確定的(non-determinate),也就是說,同樣的程式每次執行時得到的結果可能都不一樣 我們希望避免這樣的狀況,基本的解決方式是要求任一處理元進入臨界區域時,另外一個處理元就不能同時進入其臨界區域

支援互斥的方法應該滿足的要求 同樣的資源或共享的物件由多個處理元在互斥的情況下使用,則一次只有一個處理元能進入其臨界區域。 處理元在臨界區域以外暫停時,不能因而干擾其他處理元。 要求進入臨界區域的處理元不應該被無限期地拖延。 沒有處理元在臨界區域的時候,任何要求進入臨界區域的處理元都應該被允許進入。 不需要對處理器的數目或是處理元的執行時間有任何假設。 處理元在臨界區域中只停留有限的時間。

同時更改餘額的問題

交錯執行的狀況

錯誤發生的原因

使用共同變數的解法

處理元執行的情形

典型的互斥機制

透過軟體方法來達到互斥(mutual exclusion) 軟體解決同步的方法可以運用於單處理器的環境,假如要使用於多單處理器的環境,必須有共享的主記憶體 這些方法都假設記憶體層次的存取(memory access level)有基本的互斥機制,也就是說,對同一個記憶體位置的讀(read)與寫(write)的動作會序列化,依序進行

第1種解決辦法 (參考資料: (Stallings 2001))

第2種解決辦法 (參考資料: (Stallings 2001))

第3種解決辦法 (參考資料: (Stallings 2001))

第4種解決辦法 (參考資料: (Stallings 2001))

同步問題解決方法的整理 典型的互斥機制 透過軟體方法來達到互斥(mutual exclusion) Dekker’s演算法 Peterson的演算法

處理元之間的協調

號誌(semaphore) 號誌是一種作業系統提供的抽象資料型式(abstract data type) ,執行的功能有點像enter與exit 的系統呼叫,簡單地說,semaphore包括兩個主要的操作 : V(s) : [ s = s+1 ] P(s) : [ while (s==0) {wait}; s = s - 1]   semaphore本身只是一個正整數值,其值的改變得經由上述的兩種操作。方括弧內的操作必須是單元化的(atomic) ,V(s)是不能被中斷的,P(s)在執行wait時可以被中斷

semaphore解決同步的方法

常見的同步問題 基本的臨界區域問題 基本的同步問題 生產者-消費者問題(producer-consumer problem) 讀取與寫入的問題(readers-writers problem) 哲學家用餐問題(The Dining-Philosophers Problem) 理髮店的問題(Barbershop problem)

基本的臨界區域問題

基本的同步問題

生產者-消費者問題(producer-consumer problem)

讀取與寫入的問題(readers-writers problem)

哲學家用餐問題(The Dining-Philosophers Problem)

理髮店的問題(Barbershop problem)