程序描述和控制

2021-09-01 15:54:07 字數 3770 閱讀 1958

程序描述和控制

什麼是程序

有以下幾個定義:

1:乙個正在執行中的程式。

2:乙個正在計算機上執行的程式例項。

3:能分配給處理器並由處理器執行的實體。

4:乙個具有以下特徵的活動單元:一組指令序列的執行、乙個當前狀態和相關的系統資源集。

也可以把程序視為由一組元素組成的實體,程序的兩個基本元素是程式**和**相關聯的資料集。假設處理器開始執行這個程式**,且我們把這個執行實體稱為程序。在程序執行時,任意給定乙個時間,程序都可以唯一的表徵為以下元素:

1:識別符號:跟這個程序相關的唯一識別符號,用來區別其他程序。

2:狀態:如果程序正在執行,那麼程序處於執行態。

3:優先順序:相對於其他程序的優先順序。

4:程式計數器:程式中即將被執行的下一條指令的位址。

5:記憶體指標:包括程式**和程序相關資料的指標,還有和其他程序共享記憶體塊的指標。

6:上下文資料:程序執行時處理器的暫存器中的資料。

7:io狀態資訊:包括顯示的

io請求、分配給程序的

io裝置和被程序使用的檔案列表等。

8:記帳資訊:可能包括處理器時間總和、使用的時鐘總和、時間限制、記帳等。

前術的列表資訊被存放在乙個稱為程序控制塊的資料結構中,該控制塊由作業系統建立和管理。比較有意義的一點是,程序控制塊抱住了充分的資訊,這樣就可以中斷乙個程序的執行,並且在後來恢復執行程序時就好像程序未被中斷過一樣。程序控制塊是作業系統能夠支援多程序和提供多重處理技術的關鍵工具。

因此,可以說程序是由程式**和相關資料還有程序控制塊組成的。對於乙個單處理器計算機,在任何時間最多只有乙個程序在執行,正在執行的這個程序的狀態為執行態。

被掛起的程序

交換的需要

三個基本狀態(就緒態、執行態和阻塞態)提供了一種為程序行為建立模型的系統方法,並指導作業系統的實現。許多實際的作業系統都是按照這樣的三種狀態進行具體構造的。

但是,可以證明往模型中增加其他狀態也是合理的。為了說明加入新狀態的好處,考慮乙個沒有使用虛擬記憶體的系統,每個被執行的程序必須完全載入記憶體,因此,所有佇列中的所有程序必須駐留記憶體中。記憶體中儲存有多個程序,當乙個程序正在等待時,處理器可以轉移到另乙個程序,但是處理器比io

要快得多,以至於記憶體中所有的程序都在等待

io的情況很常見(記憶體不足,程序按需載入,執行時載入),因此,即使是多道程式設計,大多數時候處理器仍然可能處於空閒狀態。

一種解決方法是記憶體可以被擴充以適應更多的程序,但是這種方法有兩個缺陷。首先是記憶體的**問題,當記憶體大小增加時,**也會隨之增加;再者,程式對記憶體空間的增長速度比記憶體**下降的速度快。因此,更大的記憶體往往導致更大的程序 ,而不是更多的程序。

另一種解決方案是交換,包括把記憶體中某個程序的一部分或全部移到磁碟中。當記憶體中沒有

處於就緒狀態的程序時,作業系統就把被阻塞的程序換出到磁碟中的「掛起佇列」,即暫時儲存從記憶體中被「驅逐」出來的程序佇列,或者說是被掛起的程序佇列 。作業系統在此之後取出掛起佇列中的另乙個程序,或者接受乙個新程序的請求,將其納入記憶體執行。

「交換」是乙個io

操作,因而也可能使問題更加惡化。但是由於磁碟

io一般是系統中最快的

io(相對於磁帶或印表機

io),所以交換通常會提高效能。

為使用前面描述的交換,在程序的行為模型中必須增加另乙個狀態:掛起態。

當記憶體中的所有程序都處於阻塞態時,作業系統可以把其中的乙個程序置於掛起態,並將它轉移到磁碟中,記憶體中釋放的空間可被調入另乙個程序使用。

2.3程序描述

作業系統控制計算機系統內部的事件,它為處理器執行程序而進行排程和分派,給程序分配資源,並響應使用者程式的基本服務請求。因此,我們可以把作業系統視為管理系統資源的實體。

作業系統為了控制程序和管理資源需要哪些資訊?

3.3.1作業系統的控制結構

作業系統為了管理程序和資源,必須掌握關於每個程序和資源當前狀態的資訊。普遍使用的方法是:作業系統構造並維護它所管理的每個實體的資訊表。作業系統維護著四種不同型別的表:記憶體、io

、檔案和程序。儘管不同的作業系統中的實現細節不同,但基本上所有作業系統維護的資訊都可以分為這四類。

1:記憶體表:用於跟蹤內(實)存和外存(虛擬記憶體)。記憶體的某些部分為作業系統保留,剩餘部分是程序可以使用的,儲存在外存中的程序使用某種型別的虛擬記憶體或簡單的交換機制。記憶體表必須包括以下資訊:

1:分配給程序的記憶體。

2:分配給程序的外存。

3:記憶體塊或虛擬記憶體塊的任何保護屬性,如哪些程序可以訪問某些共享記憶體區域。

4:管理虛擬記憶體所需要的任何資訊。

2:io

表:管理計算機系統中的

io裝置和通道。在任何給定的時刻,乙個

io裝置或者是可用的,或者已分配給某個特定的程序,如果正在進行的

io操作,則作業系統需要知道

io操作的狀態和作為

io傳送的源與目標目標的記憶體單元。

3:檔案表:這些表提供關於檔案是否存在、檔案在外存中的位置、當前狀態和其他屬性的資訊。大部分資訊(不是全部資訊)可能由檔案管理系統維護和使用。在這種情況下,作業系統只有少許或者沒有關於檔案的資訊;在其他作業系統中,很多檔案管理的細節由作業系統自己管理。

4:程序表:作業系統維護的這幾種不同的表必須以某種方式鏈結起來或交叉引用。記憶體、

io和檔案是代表程序而被管理的,因此程序表中必須有對這些資源的直接或間接引用。檔案表中檔案可以通過

io裝置訪問,有時它們也位於記憶體中或虛擬記憶體中。這些表自身必須可以被作業系統訪問到,因此它們受制於記憶體管理。

3.3.3程序控制結構

作業系統在管理和控制程序時,首先必須知道程序的位置,然後,它必須知道在管理時所必需的程序屬性(如程序id

、程序狀態)。

1:程序位置

在處理程序定位問題和程序屬性問題之前,首先需要解決乙個更基本的問題:程序的物理表示是什麼?程序最少必須包括乙個或一組被執行的程式,與這些程式相關聯的是區域性變數、全域性變數和任何已定義常量的資料單元。因此,乙個程序至少包括足夠的記憶體空間,以儲存該程序的程式和資料;此外,程式的執行通常涉及用於跟蹤過程呼叫和過程引數傳遞的棧。最後,與每個程序相關聯的還有作業系統用於控制程序的許多屬性,通常,屬性的集合稱為程序控制塊。程式、資料、棧和屬性的集合稱為程序映像。

3.4程序控制

需要區分通常與作業系統相關聯的及與使用者程式相關聯的處理器執行模式。大多數處理器至少支援兩種執行模式。某些指令只能在特權態下執行,包括讀取或改變諸如程式狀態字之類控制暫存器的指令、原始io

指令和與記憶體管理相關的指令。另外,有部分記憶體區域僅在特權態下可以被訪問到。

使用兩種模式的原因是很顯然的,它可以保護作業系統和重要的作業系統表(如程序控制塊)不受使用者程式的干涉。在核心態下,軟體具有對處理器所有指令、暫存器和記憶體的控制能力,這一級的控制對使用者程式不是必需的,並且為了安全起見也不是使用者程式可訪問的。

3.5作業系統的執行

關於作業系統的兩個特殊事實:

1:作業系統與普通的計算機軟體以同樣的方式執行,也就是說,它也是由處理器執行的乙個程式。

2:作業系統經常釋放控制權,並且依賴於處理器恢復控制權。

如果作業系統僅僅是一組程式,並且像其他程式一樣由處理器執行,那麼作業系統是乙個程序嗎?如果是,如何控制它?這些有趣的問題列出了大量的設計方法

1:無程序的核心

2:在使用者程序中執行。

3:基於程序的作業系統。

程序描述控制

程式順序特徵 1.順序性 處理器嚴格按照程式所規定的順序執行,即每乙個操作必須在下乙個操作開始之前結束 2.封閉性 程式在封閉的環境中執行,程式執行時獨佔環境資源,資源狀態,只有本程式可以改變它,程式一旦開始執行,執行結果不受外界干擾 3.可再現性 只要程式執行時的環境和初始條件相同,重複執行的結果...

程序描述與控制隨筆

程序控制塊 識別符號,狀態,優先順序,程式計數器,記憶體指標,上下文資料,i o狀態資訊,記賬資訊 程序控制塊是作業系統能夠支援多程序和提供多處理的關鍵工具。可以說,程序是由程式 和相關資料還有程序控制塊組成。模式切換與程序切換不同,發生模式切換可以不改變正處於執行態的程序狀態,在這種情況下,儲存上...

作業系統原理 程序描述和控制

程序的出現,是為了作業系統可以以一種有序的方式管理應用的執行,以達到以下的目的 資源對多個應用程式是可用的。程序在多個應用程式之間的切換以保證多個應用程式都在執行中。處理器和i o裝置能夠得到充分利用。程序是一組元素組成的實體,他可以是乙個正在執行中的程式,也可以是乙個能分配處理器並由處理器執行的實...