作業系統 程序

2022-05-01 04:54:11 字數 3110 閱讀 3514

為了實現程式的併發執行,才引入程序

程式的順序執行: (順序性,封閉性,可再現性)

程式的並行執行,提高cpu的效率和系統吞吐率:(間斷性,失去封閉性,不可再現性)

① 結構特性,為使程式能夠獨立執行,應為之配置一程序控制塊,即pcb(process control block)。而程式段、相關的資料段和pcb三部分構成程序實體。所謂建立程序,實質上是建立程序實體中的pcb,撤銷程序也是撤銷程序中的pcb。

② 動態性,進行的實質是程序實體的一次執行過程,因此,動態性是程序最基本的特性,程序實體是有乙個的生命週期,而程式則只是一組有序指令的集合,並存放在某種介質上(如硬碟),其本身不具有運動的含義,因而是靜態的。

③ 併發性,多個程序實體同存於記憶體中,並且能夠在一段時間內同時執行。併發性是程序的重要特徵, 同時也成為os的重要特徵。

④ 獨立性,程序實體是乙個能獨立執行、獨立分配資源和獨立接受排程的基本單位。凡未建立pcb的程式都不能作為乙個獨立的單位參與執行。

⑤ 非同步性,程序按各自獨立的、不可預知的速度向前推進,或者說程序實體按照非同步方式執行。

程序的狀態:

① 就緒狀態,當程序已分配到除cpu以外的所有必要資源後,只要再獲得cpu,就可以立即執行,程序這時的狀態稱為就緒狀態。在乙個系統中可能多個程序處於就緒狀態,通常將它們排成乙個佇列,稱為就緒佇列。

② 執行狀態,程序已獲得cpu,其程式正在執行。在單處理機系統中,只有乙個程序處於執行狀態,在多處理機系統中,則有多個程序處於執行狀態。

③ 阻塞狀態,處於執行狀態的執行緒由於發生某事件而暫停無法繼續執行時,便放棄處理機而處於暫停狀態,此時程序的狀態稱為阻塞狀態,或等待狀態或封鎖狀態。如io請求,申請快取空間等,處於阻塞狀態的程序也會排成乙個佇列,可能還會根據不同的阻塞原因排成多個佇列。

除了上述三種基本狀態外,在一些系統中,新增了掛起狀態,引入掛起狀態的原因如下

① 終端使用者的請求,當終端使用者在自己的程式執行期間發現有可疑問題時,希望暫時使自己的程式靜止下來,即使正在執行的程序暫停執行;若此時使用者程序正處於就緒狀態而未執行,則該程序暫不接受排程,以便使用者研究其執**況或對程式進行修改,這種狀態就稱為掛起狀態。

② 父程序請求,有時父程序希望掛起自己的某個子程序,以便考查和修改該子程序,或者協調各子程序間的活動。

③ 負荷調節的需要,當實時系統中的工作負荷較重,已可能影響到對實時任務的控制時,可由系統把一些不重要的程序掛起,以保證系統能夠正常執行。

④ 作業系統的需要,作業系統有時希望掛起某些程序,以便檢查執行中的資源使用情況或進行記賬。

引入了掛起狀態後,又增加了如下幾種狀態的轉化

① 活動就緒->靜止就緒,當程序處於未被掛起的就緒狀態時,稱為活動就緒狀態;當掛起時,變為靜止就緒狀態,處於靜止就緒狀態的程序不接受排程。

② 活動阻塞->靜止阻塞,當程序處於未被掛起的阻塞狀態時,稱為活動阻塞狀態;當掛起時,變為靜止阻塞狀態,處於該狀態的程序在其所期待的事件發生後,將從靜止阻塞變為靜止就緒。

③ 靜止就緒->活動就緒,使用啟用原語啟用。

④ 靜止阻塞->活動阻塞,使用啟用原語啟用。

為了程序的管理,還存在著兩種常見的狀態,即建立狀態和終止狀態。

程序控制塊:

為了描述和控制程序的執行,系統為每個程序定義了乙個資料結構,程序控制塊pcb,它是程序實體的一部分,是作業系統中最重要的記錄型資料結構,pcb中記錄了作業系統所需的,用於描述程序當前情況以及控制程序執行的全部資訊。程序控制塊的作用是使乙個在多道程式環境下能獨立執行的程式,成為乙個能獨立執行的基本單位,乙個能與其他程序併發執行的程序。或者說,os是根據pcb來對併發執行的程序進行控制和管理的。pcb是程序存在的唯一標識。

程序控制塊pcb主要包含如下資訊。

① 程序識別符號,用於唯一地標識乙個程序,有內部識別符號(由系統賦予的唯一乙個數字,通常為程序的序號,為方便系統使用)和外部識別符號(由建立者提供,可描述程序的家族關係)。

② 處理機的狀態,當處理機被中斷時,其暫存器的資訊都必須儲存在程序的pcb中,以便該程序重新執行時,能從斷點繼續執行。

③ 程序排程資訊,包括程序狀態(指明程序的當前狀態,作為程序排程和對換時的依據),程序優先順序(用於描述程序使用處理機的優先級別,優先順序高的程序應該優先獲取處理機),程序排程所需的其他資訊(與程序排程演算法有關,如程序已等待cpu的時間總和,程序已執行的時間總和等),事件(程序由執行狀態轉變為阻塞狀態所等待發生的事件,即阻塞原因)。

④ 程序控制資訊,包括程式和資料的位址(程序的程式和資料所在的記憶體或外存首址,以便在排程該程序時,能從pcb中找到其程式和資料),程序同步和通訊機制(實現程序同步和程序通訊時必需的機制,如訊息佇列指標,訊號量等),資源清單(除cpu以外的程序所需的全部資源以及已經分配到該程序的資源的清單),鏈結位址(本程序pcb所在佇列中的下乙個程序的pcb的首位址)。

執行緒: 

六、執行緒

6.1 執行緒與程序的比較

執行緒稱為輕型程序或程序元,在引入執行緒的作業系統,乙個程序往往都擁有多個執行緒,至少有乙個執行緒,下面從不同的方面將執行緒與程序進行比較(前提是作業系統引入了執行緒)。

① 排程

執行緒作為排程和分派的基本單位,而程序作為資源擁有的基本單位。同一程序中,執行緒的切換不會引起程序的切換,但從乙個程序中的執行緒切換到另外乙個程序中的執行緒時,將會引起程序切換。

② 併發性

不僅程序間可以併發執行,同乙個程序中的多個執行緒之間亦可併發執行,是的作業系統具有更好的併發性,從而能更加有效地提高系統資源利用率和系統吞吐率。

③ 擁有資源

執行緒一般不擁有系統資源(除少量必不可少的資源),但它可以訪問其隸屬的程序的資源,即乙個程序的**段,資料段以及擁有的系統資源,如已開啟的檔案、i/o裝置等。

④ 系統開銷

在建立和撤銷程序時,系統都要為之建立和**程序控制塊,分配或**資源,作業系統付出的開銷明顯大於執行緒建立或撤銷時的開銷,在程序切換時,涉及到當前程序cpu環境的儲存和新被排程執行程序的cpu環境的設定,而執行緒的切換則僅需儲存和設定少量暫存器內容,不涉及儲存器管理方面的操作,所以執行緒的切換開銷遠小於程序切換開銷,以外,由於乙個程序中的多個執行緒具有相同的位址空間,在同步和通訊的實現上也比較容易,在一些作業系統中,執行緒的切換,同步和通訊都無需作業系統核心的干預。

作業系統 程序

在作業系統中,作業系統將記憶體,網路,檔案系統抽象為資源的統一抽象表示。1 什麼是程序 程序就是進入記憶體中正在執行的程式。把程序當做一組元素組成的實體。程序包括兩個部分,一部分是 部分,另一部分是 相關的資料集合。程序控制塊 每乙個程序,在核心中都對應著乙個程序控制塊。程序控制塊中儲存著程序的所有...

作業系統 程序

程序是作業系統中的重要概念,描述了程式的執行資訊。乙個程序就是一次執行。可以把程式想象成類,程序就是例項。引入程序的概念有利於實現多程式並行的設計。每乙個程式執行的時候可以大致分為io任務和計算任務,如果乙個程序正在io,那麼應該把cpu讓給另乙個程序執行計算任務,這樣可以提公升cpu的利用率,這就...

作業系統程序

乙個程序就是乙個正在執行的程式。它包括 程序狀態。包括 每個程序在作業系統中用程序控制塊pcb來表示,用來儲存與該程序有關的各種狀態資訊。pcb只是基本原理中的說法,對於乙個真實的作業系統可能不叫pcb,比如linux中叫做任務結構體 task struct 分時系統是在程序之間快速切換,以便使用者...