(1)程式計數器,用來記錄接著要執行哪一條指令。(2)暫存器,用來儲存執行緒當前的工作變數。
(3)堆疊,用來記錄執行歷史,其中每一幀儲存了乙個已呼叫的但是未返回的過程。
在使用者級執行緒中,有關執行緒管理的所有工作都由應用程式完成,意味著核心意識不到執行緒的存在。(1)執行緒管理不需要到核心中進行處理,避免了由使用者態轉向核心態,節省了系統開銷。
(2)允許程序有自己定製的排程演算法。
(3)具有較好的可擴充套件性,因為在核心空間中核心執行緒需要一些固定**空間和堆疊空間。
[關鍵字] 高階同步原語 /程式語言概念 /互斥[定義]管程是由一組資料以及定義在這組資料之上的對這組資料的操作組成的軟體模組,這組操作能初始化並改變管程中的資料和同步程序。
如果你要使用管程來進行互斥操作,所使用的編譯器必須要識別管程並用某種方式對其互斥做出安排。
引入管程機制的目的?
(1)把分散在各程序中的臨界區集中起來進行管理。
(2)防止程序有意或無意的違法同步操作。
管程的組成?
(1)區域性於管程的共享結構資料說明。
(2)對該資料結構進行操作的一組過程。
(3)對區域性於管程的共享資料設定初始值的語句。
管程的屬性?
(1)共享性:管程可被系統範圍內的程序互斥訪問,屬於共享資源。
(2)安全性:管程的區域性變數只能由管程的過程訪問,不允許程序或其他管程直接訪問,管程也不能訪問非區域性於它的變數。
(3)互斥性:多個程序對管程的訪問是互斥的,即任一時刻,管程中只能有乙個活躍程序。
(4)封裝性:管程內的資料結構是私有的,只能在管程內使用,管程內的過程也只能使用管程內的資料結構。
乙個例子
eg.當乙個程序呼叫管程過程時,該程序中的前幾條指令將檢查在管程中是否有其他的活躍程序。
如果有,呼叫程序將被掛起,直到另乙個程序離開管程將其喚醒。
如果沒有活躍程序在使用管程,則該呼叫程序可以進入。
[死鎖定義] 如果乙個程序集合中的每個程序都在等待只能由該程序集合中的其他程序才能引發的事件,那麼該程序集合就是死鎖的。死鎖存在的條件?(四個條件缺一不可)
(1)互斥條件,乙個資源在某一時刻只能分配給乙個程序。
(2)占有和等待條件,已經得到了某個資源的程序可以再請求新的資源。
(3)不可搶占條件,已經分配給乙個程序的資源不能強制性地被搶占,只有由占有程序顯式地釋放。
(4)迴圈等待條件,死鎖發生時,系統中一定有由兩個或兩個以上的程序組成的一條環路,該環路中的每個程序都在等待著下乙個程序所占有的資源。
如果死鎖已經產生如何恢復?
(1)利用搶占恢復,臨時將某個資源從它的當前所有者那轉移給另乙個程序。
(2)利用回滾恢復,周期性地對程序程序檢查點檢查,即將程序的狀態寫入乙個檔案以備以後重啟,該檢查點中不僅包括儲存映像,還包括了資源狀態。一旦檢測到死鎖,將該程序復位到乙個更早的正確狀態。
(3)通過殺死程序恢復。
避免死鎖的方法?
(1)利用資源軌跡圖。
(2)檢測安全狀態和不安全狀態。
[活鎖定義] 任務或者執行者沒有被阻塞,但由於某些條件沒有滿足,導致一直重複嘗試,失敗,嘗試,失敗。
處於活鎖的實體是在不斷地改變狀態,所以活鎖有可能自行解開。
OS零碎知識整理 1
1.流式檔案,屬於邏輯結構的檔案。2.通道 i o處理機 能夠完成主存與外設之間的資訊傳輸。3.作業系統的主要設計目標是 1 方便使用者 2 提高系統效率。4.死鎖的四個必要條件 1 互斥條件 2 請求和保持條件 3 不可剝奪條件 4 循壞等待條件 缺一不可 5.為了使使用者能夠透明地訪問檔案,檔案...
OS零碎知識整理 8
這個演算法較為公平,也比較好理解。基本思路 依照各作業或程序到來的順序組成佇列進行排程。不利於短作業或短程序,因為如果短作業前有很多長作業,那麼短作業必須等長作業都執行完成後才能執行,周轉時間太長。此排程演算法很少單獨使用,一般與其他演算法搭配使用。基本思路 將cpu的處理時間分成固定大小的時間片,...
OS零碎知識整理 9
虛擬儲存器不考慮物理儲存器黨的大小和資訊存放的實際位置,只規定每個程序中相互關聯資訊的相對位置。每個程序都有自己的虛擬儲存器,且虛擬儲存器的容量由計算機的位址結構和定址方式確定。記憶體位址 實體地址 1 靜態位址重定位 static address relocation 靜態重定位方法一旦將程式裝入...