快取程序死鎖
非同步是指程序不需要一直等下去,而是繼續執行下面的操作,不管其他程序的狀態。當有訊息返回時系統會通知程序進行處理,這樣可以提高執行的效率。
並行(parallel):當系統有乙個以上cpu時,當乙個cpu執行乙個程序時,另乙個cpu可以執行另乙個程序,兩個程序互不搶占cpu資源,可以同時進行,這種方式我們稱之為並行(parallel)。
執行緒就是程式的執行路線,即程序內部的控制序列,或者說是程序的子任務。乙個程序中可以有多個執行緒併發地執行。它們可以執行相同的**,也可以執行不同的**,但至少要有乙個主線程。同乙個程序的多個執行緒都在同乙個位址空間內活動,因此相對於程序,執行緒的系統開銷小,任務切換快。執行緒不擁有自己的資源,只擁有從屬於程序的全部資源,所有的資源分配都是面向程序的。
pv操作與訊號量的處理相關,p操作表示申請乙個資源、v操作表示釋放乙個資源。
pv操作對於每乙個程序來說,都只能進行一次,而且必須成對使用。在pv原語執行期間不允許有中斷發生。原語不能被中斷執行,因為原語對變數的操作過程如果被打斷,可能會去執行另乙個對同一變數的操作過程,從而出現臨界段問題。如果能夠找到一種解決臨界段問題的元方法,就可以實現對共享變數操作的原子性。
①s減1;
②若s減1後仍大於或等於0,則程序繼續執行;
③若s減1後小於0,則該程序被阻塞後放入等待該訊號量的等待佇列中,然後轉程序排程。
①s加1;
②若相加後結果大於0,則程序繼續執行;
③若相加後結果小於或等於0,則從該訊號的等待佇列中釋放乙個等待程序,然後再返回原程序繼續執行****或轉程序排程。
s1:是否允許司機啟動汽車的變數
s2:是否允許售票員開門的變數
driver()//司機程序
}busman()//售票員程序
}
注意:busman() driver() 兩個不停迴圈的函式
所謂程序就是系統中正在執行的程式,程序是作業系統的概念,每當我們執行乙個程式時,對於作業系統來講就是建立了乙個程序,在這個過程中作業系統對程序資源的分配和釋放,可以認為程序就是乙個程式的一次執行過程。
linux下有三個特殊的程序:idle程序(pid=0),init程序(pid=1),和kthreadd(pid=2)
競爭不可剝奪資源(例如:系統中只有一台印表機,可供程序p1使用,假定p1已占用了印表機,若p2繼續要求印表機列印將阻塞)
競爭臨時資源(臨時資源包括硬體中斷、訊號、訊息、緩衝區內的訊息等),通常訊息通訊順序進行不當,則會產生死鎖
程序間推進順序非法
撤銷程序法
程序回退法
作業系統 作業系統介面
介面表現為函式呼叫,由作業系統提供,連線作業系統和應用軟體。出於安全性考慮,應用程式不能直接在記憶體中任意訪問 將核心程式和使用者程式隔離 通過比較訪問資料段cpl和rpl的特權級和當前段dpl的特權級之間的關係 應用程式呼叫庫函式printf printf呼叫庫中的write函式 write將函式...
作業系統(作業系統引論)
方便性 方便使用者進行操作計算機 有效性提高系統資源的利用率 提高系統的吞吐量,加速程式的執行 可擴充性 方便地增添新的模組和功能,以及對原有的功能模組進行修改 開放性能夠遵循世界標準規範 os作為使用者和計算機硬體系統之間的介面 使用者能夠通過作業系統來使用計算機系統 os作為計算機資源的管理者 ...
作業系統 作業系統 一 作業系統概述
好好學習,天天向上本文已收錄至我的github倉庫daydayup 歡迎star 之前一直沒有系統地學過作業系統,感覺自己在平時的學習過程中對於某些概念理解得一塌糊塗,比如中斷 記憶體 程序和執行緒等。所以打算系統的學習一下作業系統。一開始我是在b站看哈工大的李治軍老師講的,但是一上來就開始從彙編 ...