技術文章
技術問答
My Project
iT 徵才
聊天室
2026 鐵人賽
登入/註冊
文章
問答
Tag
邦友
鐵人賽
搜尋
0
作業系統L6-同步
作業系統
蔡基
2022-01-06 00:21:01
‧
4393 瀏覽
分享至
作業系統L6-同步
臨界區間(critical section)
每一行程中的部分程式碼,可以共同改變變數,更新表格,寫入檔案
區間結構
入口區段(entry section):臨界區間入口
出口區段(exit section):臨界區間出口
剩餘區段(remainder section)
臨界區間問題
條件
互斥(Mutual Exclusion)
:若有行程已在
臨界區間
執行,其他行程不能再同區間執行
進行(Progress)
:被選擇的行程不得被無限延遲下去
限制性等待(Bounded Waiting)
:一個行程被要求進入
臨界區間
答應前,允許其他一個行程進入
問題解答
可搶先核心(preemptive kernels)
:
核心模式
執行時可搶先
不可搶先核心(nonpreemptive kernels)
:離開
核心模式
或自動交出CPU時才可搶先
同步硬體
鎖(locking)
用於保護
臨界區間
單一處理器可停止中斷,多處理器較沒效率
同步軟體
互斥鎖(Mutex Lock)
acquire():取得鎖
release():釋放鎖
忙碌等待(busy waiting)
自旋鎖(spinlock)
號誌(Semaphore)
不需要忙碌等待的同步工具
計數號誌(Counting semaphore)
:不受限制的整數值
二元號誌(Binary semaphore)
:數值可以是0,1,可用來取代
互斥鎖
無忙碌等待的號誌
每個號誌都有一個相關聯的
等待佇列
數值(整數型態)
指向串列的下一筆紀錄
操作
block:把呼叫操作的行程放到適當的等候佇列
wakeup:移除等候佇列的一個行程,放到就緒佇列
死結和飢餓
死結(Dead Lock)
:兩個以上的行程等待一個只能被等待的行程
飢餓(Starvation)
:無限期阻隔
優先權倒置(Priority Inversion)
:高優先權行程被低優先權行程鎖把持造成排班問題,需用**優先權繼承協定(priority-inheritance protocol)**解決
典型的同步問題
有限緩衝區問題
n個緩衝區,每一個緩衝區保存一項資料
讀取者-寫入者問題
讀取者
:只能讀取資料集;它們不能執行資料集
寫入者
:可以讀和寫資料集
允許許多
讀取者
同時去讀取共用資料
同一時間只有一個
寫入者
可以存取資料
讀取者-寫入者問題的變形
除非有寫入者已獲得允許去使用共用資料,否則讀取者不需保持等候狀態
只要寫入者準備好之後,需要盡快的撰寫共用資料
哲學家進餐的問題(Dining-philosophers Problem)
需兩枝筷子才能吃,吃完同時放下兩枝筷子
監督程式
一種對於行程同步提供方便和有效機制的高階使用一組操作資料的函數來封裝資料
抽象資料型態(abstract data type,ADT):只能由程序內執行碼存取的內部變數
條件變數
condition x, y;
x.wait () :使用後的行程會被暫停,直到x.signal ()發生
x.signal ():恢復因為x.wait ()而被暫停的行程
留言
追蹤
檢舉
熱門推薦
{{ item.subject }}
{{ item.channelVendor }}
|
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
929
組
團體組數
32
組
累計文章數
11704
篇
完賽人數
147
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
17th鐵人賽
12th鐵人賽
11th鐵人賽
18th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
linux
windows server
css
熱門問題
關於做股票盤後分析工具的問題,每筆時間交易會做進來嗎?(9/19更新說明)
六個語言的 README,要一比一翻完整,還是只寫到「裝得起來」就好?
熱門回答
六個語言的 README,要一比一翻完整,還是只寫到「裝得起來」就好?
關於做股票盤後分析工具的問題,每筆時間交易會做進來嗎?(9/19更新說明)
熱門文章
紅隊攻一條線,藍隊守一整面:「大哥沒有輸」
不同公司、不同 ERP、不同來源開立的發票,要怎麼整合?
VS Code 會定時叫醒 Agent,但不會替你的任務保證冪等
排錯報告 Hyper-V VM因磁碟空間耗盡處於Paused-Critical狀態
JS - 非同步機制
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}