筆記 《作業系統精髓與設計原理》 4 併發

2021-08-07 22:15:55 字數 1692 閱讀 9936

併發原理

訊號量管程

訊息生產者/消費者

讀者/寫者

死鎖的條件

互斥:乙個資源一次只能給乙個程序使用。其他程序不能訪問已分配給其他程序的資源。

占有且等待:乙個程序等待其他程序時,繼續占有已經分配的資源。

不可搶占:不能強行搶占程序已占有的資源。

迴圈等待。

1-3條件是死鎖存在的必要條件。加上條件4才是充分必要條件。

死鎖預防

死鎖避免

程序啟動拒絕

只有當前執行程序的最大請求量+新程序請求 <= 系統對應資源總量,才啟動。

很難最優,假設最壞情況。

資源分配拒絕(銀行家演算法)

死鎖檢測檢測

查詢1個程序,使可用資源滿足該程序的需求,標記該程序。

假設同意資源,執行結束釋放資源。重複1,沒有則終止

有未標記的程序則死鎖。 恢復

5個哲學系、5個叉子,吃麵需要2個叉子。

訊號量解決方案

方案1,先拿起左邊的叉子,然後拿右邊的叉子。

問題:都拿起左邊的叉子,沒有右邊的叉子,發生飢餓。

方案2,加入服務員,只允許4個哲學家同時進餐。

管程解決方案

如果至少有1吧叉子不可用,那麼哲學家就會在條件變數的佇列中等待,可讓其他哲學家進入管程。

與訊號量不同,管程不會發生死鎖,同一時刻只有1個程序進入管程。

第一位哲學家進入管程保證了只要拿左邊叉子,一定可以拿到右邊的叉子。

管道 先進先出佇列(fifo),乙個程序寫,乙個程序讀。

• 管道在建立時獲得乙個固定大小的位元組數。

• 當1個程序往管道寫時,如有足夠空間,則立即執行,否則阻塞。

• 乙個程序讀取位元組多於當前管道中的位元組,也被阻塞,否則立即執行

• 作業系統強制實施互斥。

包括:命名管道、匿名管道。

訊息共享記憶體

訊號量訊號

訊號的傳遞是通過修改訊號要傳送到程序所對應的程序表中的乙個域來完成。

訊號只儲存1位,不能對給定型別的訊號進行排隊。

原子操作

自旋鎖訊號量屏障

《作業系統 精髓與設計原理》 作業系統概述

作業系統為應用程式提供與硬體互動的介面,它的主要功能是為執行中的程式動態地分配可共享的系統資源,與之相關的研究主要涉及記憶體 程序及外設的管理和排程。相鄰層次間的介面不斷改變。一方面,原來由作業系統負責的功能被遷移到硬體中,另一方面,一些與應用程式解決的問題無關的程式化函式也被加入作業系統中 作業系...

作業系統精髓與設計原理學習筆記

1.3指令的執行 1.4中斷 1.5儲存器的層次結構 計算機基本構成 處理器 儲存器 輸入 輸出部件 處理器 邏輯處理單元,控制計算機的操作,執行資料處理功能,cpu 記憶體 儲存資料和程式。特點是易失性,關機後,儲存器的內容就會丟失,通常被稱為實儲存器或主儲存器。輸入 輸出模組 在計算機和外部環境...

作業系統精髓與設計原理 二 作業系統概述

1.序列處理 使用者預訂機器時間,在分配時間內進行工作,每個程式執行中間需要大量準備時間,不同程式使用時間不確定,同時容易造成計算機閒置,浪費.2.簡單批處理系統 使用乙個監控程式的軟體,計算機操作員把程式按順序組織成批,批量放在輸入裝置上,每個程式完成後返回到監控程式,同時監控程式自動載入下乙個程...