2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab9 1.

Slides:



Advertisements
Similar presentations
商业主体的设立 商业主体的设立. 学习重点 1. 公司的设立方式 商个人的设立 个人独资企业 一. 设立依据 《中华人民共和国个人独资企 业法》1999年8月通过, 自2000年1月1日起施 行 二. 设立条件 1. 投资人为一个自然人; 2. 有合法的企业名称; 3. 有投资人申报的出资; 4.
Advertisements

第一單元 建立java 程式.
計算機程式語言實習課.
纳税人学堂课件天地第201509期 高新技术产业税收优惠政策培训 授课老师:周晶 上海市嘉定区国家税务局
專題報告製作 胡舉軍 助理教授 資訊管理學系 樹德科技大學
OSDI.
2010年,全世界约有盲人4000万到4500万,低视力者是盲人的3倍,约1.4亿人
中交天津航道局有限公司 党委工作部 陈晓敏 2012年11月5日
陳維魁 博士 儒林圖書公司 第九章 資料抽象化 陳維魁 博士 儒林圖書公司.
Visual C++ introduction
簡易C++除錯技巧 長庚大學機械系
第1章 認識Arduino.
Google Data API Spreadsheet
在NS-2上模擬多個FTP連線,觀察頻寬的變化
類別(class) 類別class與物件object.
SQL Stored Procedure SQL 預存程序.
ASP.NET基本設計與操作 建國科技大學 資管系 饒瑞佶 2007年.
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab8 1.
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab10 1.
安裝JDK 安裝Eclipse Eclipse 中文化
Quiz6 繳交期限: 12/14(四) 23:59前.
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A.
Java 程式設計 講師:FrankLin.
私立南山高中 信息組 電腦研習 電腦資料的備份 中華民國 99年4月20日 星期二.
Topic Introduction—RMI
第一單元 建立java 程式.
VS.NET 2003 IDE.
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab3.
音乐学科简报 第二期 编辑:范正明 杨芳 安徽省中小学幼儿园教师信息技术应用能力提升培训项目 延时符.
Linux作業系統 電腦教室Linux使用說明.
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab6.
第七單元 正反器 (教科書第四章) 數位系統實驗
2018 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A Lab3.
CH1 我的第一個App與變數宣告.
IIS Internet Information Services
CH05. 選擇敘述.
第7章 進階的同步 觀念與實務.
LINQ資料查詢技術.
Class & Object 靜宜大學資工系 蔡奇偉副教授 ©2011.
Video 影像 (VideoPlayer 影像播放器、Camcorder 錄影機) 靜宜大學資管系 楊子青
Pthread.
教育部及其他單位專案計畫經費報支作業.
函數應用(二)與自定函數.
陣列與結構.
序言 報告內容: 你對父母的感覺 你與父母的關係 你是否與父母同居 你與父母見面的時間 每天與父母的談話時間 與父母談話的內容 結論 感想.
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab7.
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab11 1.
Scratch: 動畫或遊戲編程 任務10:尋找小鬼.
教育部及其他單位專案計畫經費報支作業.
2018 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A.
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab4.
MultiThread Introduction
请添加标题 请添加作者.
第四章 陣列、指標與參考 4-1 物件陣列 4-2 使用物件指標 4-3 this指標 4-4 new 與 delete
Race Conditions and Semaphore
作業系統實習課(二) -Scheduler-Related System Calls-
2019 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A Lab10 1.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
Scratch: 動畫或遊戲編程 任務3:海洋世界.
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
NFC (近場通訊, Near Field Communication) 靜宜大學資管系 楊子青
2018 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A Lab2.
2019 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A Lab11 1.
10303: How Many Trees? ★★☆☆☆ 題組:Contest Archive with Online Judge
Chapter 4 Multi-Threads (多執行緒).
C語言程式設計 老師:謝孟諺 助教:楊斯竣.
2019 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A Lab7.
新生床位選填 作業流程說明.
JUDGE GIRL 使用介紹 & 常見問題 TAs :
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
Presentation transcript:

2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab9 1

samaphore範例 samaphore 介紹 實作 目錄 Contents Beaglebone Beaglebone 2

1-1 semaphore 介紹 信號(semaphore) Semaphore是一個variable (變數)或是abstract data type (抽象資料型別),提供平行運算環境中,控制多個process (程序)或thread(執行緒)存取共享資源的能力,Semaphore可以用於紀錄某一特定資源剩下多少數目可使用;process或thread透過semaphore可以安全的使用共享資源,若特定資源已使用完時,會需要等待資源被釋放。雖然semaphore在防止deadlock或race condition方面是一個很有用的工具,但是程式使用semaphore運作上並無法保證一定不會遇到這些問題。 Ex: 類似圖書館的研究室使用,假設有10間研究室(SEM_VALUE_MAX=10),若學生要使用研究室便需要向櫃檯申請,櫃檯會記錄有多少間研究室使用中,若10間研究室都被申請使用後,且仍有學生要申請使用,該學生必須等待有其他學生離開,空出研究室後,才能進入使用,該櫃檯就扮演semaphore的角色。 3

1-2 semaphore 介紹 信號(semaphore) Semaphore包含兩種: binary semaphore(二進位信號) binary semaphore值只能是0或1,在邏輯上相當於一個mutex(互斥鎖)。mutex使用上與binary semaphore具有相同功能,但是,mutex主要設計是防止兩個process同時間執行相同的一段code或存取同一資料,而binary semaphore設計上則是限制同時間存取同一資源;很多應用上mutex具有owner(擁有者)的概念,只有鎖住mutex的process,才具有解鎖的權限;相對的,semaphore並無此限制 counting semaphore(計數信號) counting semaphore值依據semaphore.h的SEM_VALUE_MAX (semvmx)定義。也有作業系統稱作general semaphore。 4

2-1 Semaphore範例 函式宣告: 標頭檔: #include <semaphore.h> int sem_init(sem_t *sem, int pshared, unsigned int val); 第一個參數為semaphore的位址,第二個參數為設定semaphore是否可讓不同process使用,第三個參數為semaphore初始值。 說明: 一個semaphore並非被單一thread所擁有,亦即一個thread對semaphore執行sem_wait()時,另一thread可以執行sem_post()。但是作業系統在實作時,同一時間點僅能執行其中一個指令,以維持semaphore的一致性。 int sem_wait(sem_t *sem); 減少semaphore值(減1) int sem_post(sem_t *sem); 增加semaphore值(加1) 傳回值: int sem_destory(sem_t *sem); 銷毀semaphore Semaphore動作執行成功會回傳0,失敗會回傳 -1 http://www.syscom.com.tw/ePaper_Content_EPArticledetail.aspx?id=213&EPID=176&j=5&HeaderName=%E6%8A%80%E8%A1%93%E5%88%86%E4%BA%AB 5

Semaphore 範例 2-2 Semaphore 程式碼 gcc test1.c –lpthread –o test1 6

2-2 Semaphore 範例 Semaphore 程式碼    sem_t empty:信號量empty控制盤子可放水果數,初始為3,因為開始盤子為空可放水果數為3。 sem_t  apple ;信號量apple控制兒子可吃的蘋果數,初始為0,因為開始盤子裡沒蘋果。 3.sem_t orange;信號量orange控製女兒可吃的橙子是,初始為0,因為開始盤子裡沒橙子。 7

實作課本第六章的project1和project3,並抽問問題 (使用附件程式) 完成test2.c生產者與消費者的程式碼,並執行編譯 8

Thanks 作業系統實習 Operating Systems