目錄執行緒(thread)
上下文切換
定義:乙個具有一定獨立功能的程式在乙個資料集合上的動態執行過程
組成:
程式 vs 程序
區別:動態性:程序可動態的建立和結束
併發性:程序可獨立地被排程執行並占用處理機
獨立性:不同程序間的工作互不影響(每次執行的結果應該都是正確的)
制約性:因訪問共享資料/資源或程序間同步而產生制約性
pcb組成
程序控制資訊
pcb組織過程
程序生命週期管理
程序開始(狀態:start ⇒ ready)
程序執行(狀態:ready ⇒ running)
程序等待(阻塞)(狀態:running ⇒ blocked)
程序等待只能由程序自身發起,因為只有程序自身知道何時需要等待
程序喚醒(狀態:blocked ⇒ ready)
程序自身處於等待狀態,所以只能由其他程序或os喚醒
程序結束(狀態:running ⇒ done)
程序狀態變化模型
三種基本狀態:程序在生命結束前的三種基本狀態
其他基本狀態
狀態轉換圖
幾種狀態轉換
程序掛起
含義:程序處於掛起狀態時,不占用物理記憶體。程序映像(通過swap out)存放在外存。
掛起狀態
狀態轉換
外存中的狀態轉換
解掛/啟用(activate):乙個掛起的程序從外存回到記憶體
狀態佇列
問題:os 如何通過pcb和程序狀態管理程序?os系統維護一組佇列,用來表示系統當中所有程序的當前狀態
不同狀態用不同佇列表示,如阻塞佇列、就緒佇列等(可能還會按優先順序細分)
不同佇列存放到不同程序的pcb;當程序狀態改變時,則將其pcb從原佇列取出放到相應的佇列中
為什麼需要執行緒?
單程序的順序執行可能導致程式效能受限於程序中的某個部分(如檔案讀寫)
將單程序拆解為多程序,則需要考慮 ①程序間的通訊、資源共享;②os維護程序的開銷增大(建立程序需要分配資源、建立pcb;結束程序需釋放資源、清除pcb;程序切換需要儲存程序狀態資訊)
什麼是執行緒?
執行緒是程序中的一條執行流程
程序 = 資源管理 + 執行緒
優點:(效能)
缺點:(安全)
執行緒與程序的比較
執行緒的實現
使用者執行緒(在使用者空間實現)
缺點:核心執行緒(在核心中實現)
輕量級執行緒(核心中實現,支援使用者執行緒)
使用者執行緒與核心執行緒對應關係
含義:停止當前執行的程序,暫時切換到其他程序的過程
需要儲存的資訊:pc(程式計數器)、sp(棧指標)、cpu狀態等
程序管理 程序排程
一 概念 1 處理機管理是作業系統的主要功能之一。處理機管理的實現策略決定了作業系統的型別,其演算法好壞直接影響整個系統的效能 2 程序排程 通過某種規則或演算法從就緒 等待 程序佇列中選出乙個程序投入執行 3 排程是乙個基本的作業系統功能。cpu排程是作業系統設計的核心問題 二 cpu排程程式 1...
Linux 程序管理動態程序管理 詳解
訊號種類 kill l列出所有支援的訊號 kill使用訊號控制程序kill 訊號名編號程序優先順序nice linux程序排程及多工 每個cpu在乙個時間點上只能處理乙個程序,通過時間片技術,來同時執行多個程式。pr 系統內定的優先順序值比ni大20 99 39 ni nice優先值可人為變動 20...
程序管理七(程序通訊)
程序通訊,是指併發程序之間相互交換資訊。這種資訊交換的量可大可小。作業系統提供了多種程序間的通訊機制,可分別適用於不同的場合。從某種意義上來說,前面所討論的程序之間的互斥與同步就是一種通訊,只不過交換的資訊量很小,因此這種程序通訊方式稱為低階程序通訊方式。接下來介紹的是程序之間有較大資訊量的交換,例...