進程式控制制在進程管理中的作用

來源:互聯網
上載者:User

標籤:style   color   os   strong   檔案   資料   ar   div   

進程式控制制是進程管理中最基本的功能。它用於建立一個新進程,終止一個已完成的進程,或者去終止一個因出現某事件而使其無法運行下去的進程,還可負責進程運行中的狀態轉換。一、建立進程1.引起建立進程的事件在多道程式環境中,只有(作為)進程(時)才能在系統中運行。因此,為使程式能運行,就必須為它建立進程。導致一個進程去建立另一個進程的典型事件,可以有以下四類:1) 使用者登入在分時系統中,使用者在終端鍵入登入命令後,如果是合法使用者,系統將為該終端建立一個進程,並把它插入到就緒隊列中。2)作業調度在批處理系統中,當作業發送器按照一定的演算法調度到某作業時,便將該作業裝入到記憶體,為它分配必要的資源,並立即為它建立進程,再插入到就緒隊列中。3) 提供服務當運行中的使用者程式提出某種請求後,系統將專門建立一個進程來提供使用者所需要的服務,例如,使用者程式要求進行檔案列印,作業系統將為它建立一個列印進程,這樣,不僅可以使列印進程與該使用者進程並發執行,而且還便於計算出為完成列印任務所花費的時間。4) 應用請求在上述三種情況中,都是由系統核心為它建立一個新進程,而這一類事件則是基於應用進程的需求,由它建立一個新的進程,以便使新進程以並發的運行方式完成特定任務。2.進程的建立過程一旦作業系統發現了要求建立新進程的事件後,便調用進程建立原語Creat()按下述步驟建立一個新進程。1) 申請空白PCB。為新進程申請獲得唯一的數位識別碼符,並從PCB集合中索取一個空白PCB。2) 為新進程分配資源。為新進程的程式和資料以及使用者棧分配必要的記憶體空間。顯然,此時作業系統必須知道新進程所需要的記憶體大小。3) 初始化進程式控制制塊。PCB的初始化包括:①初始化標識資訊,將系統分配的標識符和父進程標識符,填入新的PCB中。②初始化處理機狀態資訊,使程式計數器指向程式的入口地址,使棧指標指向棧頂。③初始化處理機控制資訊,將進程的狀態設定為就緒狀態或靜止就緒狀態,對於優先順序,通常是將它設定為最低優先順序,除非使用者以顯式的方式提出高優先順序要求。4) 將新進程插入就緒隊列,如果進程就緒隊列能夠接納新進程,便將新進程插入到就緒隊列中。二、進程終止1.引起進程終止的事件1)正常結束在任何電腦系統中,都應該有一個表示進程已經運行完成的指示。例如,在批處理系統中,通常在程式的最後安排一條Hold指令或終止的系統調用。當程式運行到Hold指令時,將產生一個中斷,去通知OS本進程已經完成。2)異常結束在進程運行期間,由於出現某些錯誤和故障而迫使進程終止。這類例外狀況事件很多,常見的有:越界錯誤,保護錯,非法指令,特權指令錯,運行逾時,等待逾時,算術運算錯,I/O故障。3)外界幹預外界幹預並非指在本進程運行中出現了例外狀況事件,而是指進程應外界的請求而終止運行。這些幹預有:操作員或作業系統幹預,父進程請求,父進程終止。2. 進程的終止過程如果系統發生了上述要求終止進程的某事件後,OS便調用進程終止原語,按下述過程去終止指定的進程。1)根據被終止進程的標識符,從PCB集合中檢索出該進程的PCB,從中讀出該進程狀態。2)若被終止進程正處於執行狀態,應立即終止該進程的執行,共置調度標誌為真。用於指示該進程被終止後應重新進行調度。3)若該進程還有子孫進程,還應將其所有子孫進程予以終止,以防他們成為不可控的進程。4)將被終止的進程所擁有的全部資源,或者歸還給其父進程,或者歸還給系統。5)將被終止進程(它的PCB)從所在隊列(或鏈表)中移出,等待其它程式來搜集資訊。三、阻塞喚醒1.引起進程阻塞和喚醒的事件1)請求系統服務當正在執行的進程請求作業系統提供服務時,由於某種原因,作業系統並不立即滿足該進程的要求時,該進程只能轉變為阻塞狀態來等待,一旦要求得到滿足後,進程被喚醒。2)啟動某種操作當進程啟動某種操作後,如果該進程必須在該操作完成之後才能繼續執行,則必須先使該進程阻塞,以等待該操作完成,該操作完成後,將該進程喚醒。3)新資料尚未到達對於相互合作的進程,如果其中一個進程需要先獲得另一(合作)進程提供的資料才能運行以對資料進行處理,則是要其所需資料尚未到達,該進程只有(等待)阻塞,等到資料到達後,該進程被喚醒。4)無新工作可做系統往往設定一些具有某特定功能的系統進程,每當這種進程完成任務後,便把自己阻塞起來以等待新任務到來,新任務到達後,該進程被喚醒。2.進程阻塞過程正在執行的進程,當發現上述某事件後,由於無法繼續執行,於是進程便通過調用阻塞原語block把自己阻塞。可見,進程的阻塞是進程自身的一種主動行為。進入block過程後,由於此時該進程還處於執行狀態,所以應先立即停止執行,把進程式控制制塊中的現行狀態由執行改為阻塞,並將PCB插入阻塞隊列。如果系統中設定了因不同事件而阻塞的多個阻塞隊列,則應將本進程插入到具有相同事件的阻塞(等待)隊列。最後,轉發送器進行重新調度,將處理機分配給另一就緒進程,並進行切換,亦即,保留被阻塞進程的處理機狀態(在PCB中),再按新進程的PCB中的處理機狀態設定CPU環境。3. 進程喚醒過程當被阻塞的進程所期待的事件出現時,如I/O完成或者其所期待的資料已經到達,則由有關進程(比如,用完並釋放了該I/O裝置的進程)調用喚醒原語wakeup(),將等待該事件的進程喚醒。喚醒原語執行的過程是:首先把被阻塞的進程從等待該事件的阻塞隊列中移出,將其PCB中的現行狀態由阻塞改為就緒,然後再將該PCB插入到就緒隊列中。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.