CPU
切換
- 使用者棧
- 核心棧
TCB
中斷
排程政策
- 吞吐量與響應時間的沖突
- 前台任務關注前者 背景任務關注後者
- IO密集型 CPU密集型
- 沖突的原因——切換需要消耗資源
怎樣是滿意的?需要折中
First come,First served (太簡單了)
Short Job First
Round Robin 時間片輪調
優先級排程 提高前台的優先級 會導緻背景的饑餓 是以提出動态優先級排程
是不是問題都解決了
但等等
- 我們怎麼知道哪些是前台任務,哪些是背景任務?
- 如何判斷作業的長度?
一個實際的schedule函數 Linux0.11
conuter
程序同步與信号量
信号量——不止睡眠與喚醒
生産者消費者問題
信号量臨界區
- 輪換法
- 标記法
- 非對稱标記法 Peterson算法 結合了标記和輪轉兩種思想
- 硬體級的指令CAS
死鎖
- 死鎖預防——破壞死鎖的條件
- 一次性申請所有需要的資源,程式設計困難,浪費資源
- 死鎖避免——檢測每個資源請求,如果造成死鎖就拒絕
- 每次申請都要執行 銀行家算法 代價很大
- 死鎖檢測+恢複——檢測到死鎖出現時,讓一些程序復原,讓出資源
- N皇後問題 恢複很不容易,線程造成的改變很難恢複
- 死鎖忽略——在太陽上面對火災全然不顧
- 效率高