作業系統 程序控制(二)

2021-07-27 21:46:30 字數 2596 閱讀 8279

程序控制一般是由原語來實現的,原語是由若干指令組成,原語是「原子操作」,原子操作在管態下執行,常駐記憶體。

管態就是特權態,cpu執行狀態有管態和目態兩種,當cpu處理系統程式的時候,cpu會轉為管態,cpu在管態下可以執行指令系統的全集(包括特權指令與非特權指令)。可以這樣理解:當乙個使用者程序在執行過程中,它一直是目態,當需要系統服務時,就必須從當前pc執行的使用者位址空間轉移到核心**位址空間,這個轉移可以通過exception來完成,這個過程是這樣的syscall——> exception triggered —> exception handler –> kernel function最終的kernel function是處於管態的,具體細節如圖:

系統呼叫是使用者態到核心態唯一的入口。

程序的建立:

程序樹:程序a建立程序b,a是b的父程序,b是a的子程序。子程序可以繼承父程序所擁有的資源,例如,繼承父程序開啟的檔案,繼承父程序所分配到的緩衝區等。當子程序被撤消時,應將其從父程序那裡獲得的資源歸還給父程序。此外,在撤消父程序時,也必須同時撤消其所有的子程序。 pcb 中都設定了家族關係表項,以標明自己的父程序及所有的子程序。

引起程序建立的事件:

(1) 使用者登入。在分時系統中,使用者在終端鍵入登入命令後,如果是合法使用者,系統將為該終端建立乙個程序,並把它插入就緒佇列中。

(2) 作業排程。在批處理系統中,當作業排程程式按一定的演算法排程到某作業時,便將該作業裝入記憶體,為它分配必要的資源,並立即為它建立程序,再插入就緒佇列中。

(3) 提供服務。當執行中的使用者程式提出某種請求後,系統將專門建立乙個程序來提供使用者所需要的服務,例如,使用者程式要求進行檔案列印,作業系統將為它建立乙個列印程序,這樣,不僅可使列印程序與該使用者程序併發執行,而且還便於計算出為完成列印任務所花費的時間。

(4) 應用請求。在上述三種情況下,都是由系統核心為它建立乙個新程序;而第 4 類事件則是基於應用程序的需求,由它自己建立乙個新程序,以便使新程序以併發執行方式完成特定任務。

程序的建立:一旦作業系統發現了要求建立新程序的事件後,便呼叫程序建立原語 creat( )按下述步驟建立乙個新程序。

(1) 申請空白 pcb。為新程序申請獲得惟一的數字識別符號,並從 pcb 集合中索取乙個空白 pcb。

(2) 為新程序分配資源。為新程序的程式和資料以及使用者棧分配必要的記憶體空間。顯然,此時作業系統必須知道新程序所需記憶體的大小。對於批處理作業,其大小可在使用者提出建立程序要求時提供。若是為應用程序建立子程序,也應是在該程序提出建立程序的請求中給出所需記憶體的大小。對於互動型作業,使用者可以不給出記憶體要求而由系統分配一定的空間。如果新程序要共享某個已在記憶體的位址空間(即已裝入記憶體的共享段),則必須建立相應的鏈結。

(3) 初始化程序控制塊。pcb 的初始化包括:① 初始化標識資訊,將系統分配的識別符號和父程序識別符號填入新 pcb 中;② 初始化處理機狀態資訊,使程式計數器指向程式的入口位址,使棧指標指向棧頂;③ 初始化處理機控制資訊,將程序的狀態設定為就緒狀態或靜止就緒狀態,對於優先順序,通常是將它設定為最低優先順序,除非使用者以顯式方式提出高

優先順序要求。

(4) 將新程序插入就緒佇列,如果程序就緒佇列能夠接納新程序,便將新程序插入就緒佇列。

程序的終止:

引起程序終止的事件:

<1,正常結束:在任何計算機系統中,都應有乙個用於表示程序已經執行完成的指示。

<2,異常結束:

(1) 越界錯誤。這是指程式所訪問的儲存區已越出該程序的區域。

(2) 保護錯誤。這是指程序試圖去訪問乙個不允許訪問的資源或檔案,或者以不適當的方式進行訪問。

(3) 非法指令。這是指程式試圖去執行一條不存在的指令。

(4) 特權指令錯。這是指使用者程序試圖去執行一條只允許 os 執行的指令。

(5) 執行超時。這是指程序的執行時間超過了指定的最大值。

(6) 等待超時。這是指程序等待某事件的時間超過了規定的最大值。

(7) 算術運算錯。這是指程序試圖去執行乙個被禁止的運算,例如被 0 除。

(8) i/o 故障。這是指在 i/o 過程中發生了錯誤等。

<3,外界干預

(1) 操作員或作業系統干預。由於某種原因,例如,發生了死鎖,由操作員或作業系統終止該程序。

(2) 父程序請求。由於父程序具有終止自己的任何子孫程序的權力,因而當父程序提出請求時,系統將終止該程序。

(3) 父程序終止。當父程序終止時,os 也將它的所有子孫程序終止。

程序終止過程:

(1) 根據被終止程序的識別符號,從 pcb 集合中檢索出該程序的 pcb,從中讀出該程序的狀態。

(2) 若被終止程序正處於執行狀態,應立即終止該程序的執行,並置排程標誌為真,用於指示該程序被終止後應重新進行排程。

(3) 若該程序還有子孫程序,還應將其所有子孫程序予以終止,以防它們成為不可控的程序。

(4) 將被終止程序所擁有的全部資源,或者歸還給其父程序,或者歸還給系統。

(5) 將被終止程序(pcb)從所在佇列(或鍊錶)中移出,等待其他程式來蒐集資訊。

作業系統 程序控制

附錄 1.程序的建立 include includemain 2.程序的互斥 1 同步 include includemain else else 2 互斥 include includemain else else 3.程序的軟中斷通訊 include include includevoid wa...

作業系統 程序控制

知識總結 目錄 程序控制 1.程序建立 使用者登入,作業排程,列印等會導致新程序的建立 原語 原語 作業系統或 計算機網路用語範疇。是由若干條指令組成的,用於完成一定功能的乙個過程。是由若干個 機器指令 構成的完成某種特定功能的一段程式,具有不可分割性 即原語的執行必須是連續的,在執行過程中不允許被...

作業系統 程序控制

程序控制的主要功能是對系統中的所有程序實施有效的管理,它具有建立新程序 撤銷已有程序 實現程序狀態轉換等功能。簡化理解 程序控制就是要實現程序狀態的轉換。用原語實現程序控制。原語的特點是執行期間不允許中斷,只能一氣呵成。這種不可中斷的操作即原子操作。原語採用 關中斷 指令和 開中斷指令 實現。關中斷...