回覆列表
-
1 # 使用者1928003363818
-
2 # 使用者7928449235116
程序有三個狀態,1就緒態2等待狀態3使用狀態,程序之間必須滿足三個狀態一次只能有一個執行。執行緒有程序產生在程序中受到保護,兩者之間有區別。
程序有三個狀態,1就緒態2等待狀態3使用狀態,程序之間必須滿足三個狀態一次只能有一個執行。執行緒有程序產生在程序中受到保護,兩者之間有區別。
程序間切換的步驟:
1,儲存程式計數其以及其他暫存器。
2,更新當前處於“執行態”的程序的程序控制塊,把程序狀態改為相應狀態,更新其他相關域3,把被切換程序的程序控制塊移到相關狀態的佇列4,選擇另外一個程序開始執行,把該程序程序控制塊的狀態改為“執行態”5,恢復被選擇程序的處理器在最近一次被切換出執行態時的上下文,比如載入程式計數器以及其他處理器的值程序間切換伴隨著兩次模式切換(使用者--核心,核心--使用者)。(同一程序內)執行緒間切換的步驟:執行緒分兩種,使用者級執行緒和核心級執行緒在使用者級執行緒中,有關執行緒管理的所有工作都由應用程式完成,核心沒有意識到執行緒的存在。(同一程序內)使用者級執行緒間切換時,只需要儲存使用者暫存器的內容,程式計數器,棧指標,不需要模式切換。缺點:1,在程序的某個執行緒執行系統呼叫時,不僅該執行緒被阻塞,該執行緒所在程序的所有執行緒都被阻塞2,無法利用多處理器在核心級執行緒中,有關執行緒的管理工作都是由核心完成的,應用程式部分沒有執行緒管理的許可權,只有一個介面(API)(同一程序內)核心級執行緒間切換時,除了儲存上下文,還要進行模式切換。優點:1,可以利用多處理器2,執行緒阻塞不會導致程序阻塞