程序控制的主要任務:
程序控制是對系統中所有程序從建立、執行到撤銷的全過程實行有效的管理和控制。
程序控制一般是由作業系統核心的相應程式(原語)來實現。通常,作業系統核心執行在系統態。
原語是由若干條指令組成的,用於完成特定功能的,具有原子性(不可分割)的子程式。它與一般過程的區別:它們是原子操作(action operation)為保證操作的正確性,原語在執行期間是不可被中斷的。因此,規定在執行原語操作時要遮蔽中斷,以保證原語操作的不可分割性。
通常將一些與硬體密切相關的模組、各種常用的裝置驅動程式以及執行頻率較高的模組安排在僅靠硬體的軟體層中,並常駐記憶體,這部分被稱為作業系統核心。
從程序管理的角度,作業系統核心主要實現對程序的建立、撤消以及通訊管理等功能。
核心是通過執行各種原語操作來實現對程序的各種控制和管理功能的。
程序圖是描述乙個程序的家族關係的有向樹,包括
下面給出乙個程序樹的例子:
導致程序的建立有以下四種典型的原因/事件:
使用者登入:使用者輸入登入命令,系統建立乙個程序並把它插入就緒佇列。
作業排程:排程作業後將該作業裝入記憶體,為之分配資源,並建立程序。
提供服務:使用者提出請求後,系統專門提供乙個程序供使用者使用。
應用請求:程序為自己那些能併發執行的操作建立新的子程序,使其能併發執行,進而使整個程序能快速完成。
123 根據需要由系統建立新的程序,4由程序自己建立的新程序。
程序的建立過程
分配資源
初始化pcb
插入就緒佇列
導致程序終止的典型原因/事件:
如果程序在執行的過程中,發生了以上異常現象中的任何一種,系統都會及時停止這個程序的執行,以防止出現嚴重的後果。
程序終止的過程:
處於執行狀態的程序,在其執行過程中期待某一事件發生,如等待鍵盤輸入、等待磁碟資料傳輸完成、等待其它程序傳送訊息,當被等待的事件未發生時,由程序自己執行阻塞原語block,使自己由執行態變為阻塞態。可見,程序的阻塞是程序自身的一種主動行為。
程序阻塞過程,如下圖:
當被阻塞程序所期待的事件出現時,例如,當程序提出i/o請求時,程序會進入到阻塞狀態,但是不能讓這個程序一直處於阻塞狀態,等到其i/o操作完成時,那麼系統就要採用喚醒原語wakeup喚醒這個處於阻塞的程序,以使它繼續執行。
程序喚醒阻塞過程,如下圖:
當有引起程序掛起的事件,系統利用掛起原語suspend()將指定程序或者處於阻塞狀態的程序掛起。
當有發生啟用程序的事件發生,若該程序在外存中已有足夠的空間時,可將在外存上處於靜止就緒的程序從外存調入記憶體,系統利用啟用原語active()將指定程序啟用。
程序控制原語與程序狀態轉換的對應,如下圖:
作業系統 程序控制
附錄 1.程序的建立 include includemain 2.程序的互斥 1 同步 include includemain else else 2 互斥 include includemain else else 3.程序的軟中斷通訊 include include includevoid wa...
作業系統 程序控制
知識總結 目錄 程序控制 1.程序建立 使用者登入,作業排程,列印等會導致新程序的建立 原語 原語 作業系統或 計算機網路用語範疇。是由若干條指令組成的,用於完成一定功能的乙個過程。是由若干個 機器指令 構成的完成某種特定功能的一段程式,具有不可分割性 即原語的執行必須是連續的,在執行過程中不允許被...
作業系統 程序控制
程序控制的主要功能是對系統中的所有程序實施有效的管理,它具有建立新程序 撤銷已有程序 實現程序狀態轉換等功能。簡化理解 程序控制就是要實現程序狀態的轉換。用原語實現程序控制。原語的特點是執行期間不允許中斷,只能一氣呵成。這種不可中斷的操作即原子操作。原語採用 關中斷 指令和 開中斷指令 實現。關中斷...