6 程序管理

2022-09-21 15:27:11 字數 2331 閱讀 2166

目錄執行緒(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...

程序管理七(程序通訊)

程序通訊,是指併發程序之間相互交換資訊。這種資訊交換的量可大可小。作業系統提供了多種程序間的通訊機制,可分別適用於不同的場合。從某種意義上來說,前面所討論的程序之間的互斥與同步就是一種通訊,只不過交換的資訊量很小,因此這種程序通訊方式稱為低階程序通訊方式。接下來介紹的是程序之間有較大資訊量的交換,例...