2009年6月9日 星期二

OS心得系列 Process & Thread--PART 2

在第一篇大致上釐清process與thread的分別後,今天要來針對process作探討,可以先將process分成四個部份:

一.core image:
core image是一個程式之執行檔被載入到記憶體開始執行後的內容,其內容會隨著process的執行而改變。

二.Address space:
Address space(地址空間)為一個process可存取的地址所形成的集合體,在有支援虛擬記憶體(virtual memory)管理之系統中,常被稱為virtual address space。

三.Hardware context:
一個process在執行時一定會用到CPU之暫存器(register),一個process在執行時之CPU暫存器內容即是此process之Hardware Context。

四.Software context:
當作業系統產生一個process時會附於此process一些屬性 ,亦會在作業系統內部紀錄一些有關此process使用之資源,這些屬性及所有記錄的訊息即可視為此process之Software context 。舉例而言, Process之屬性有priority 、owner (擁有此 process之使用者) ,執行時之特權等。作業系統所記錄一個process之訊息包括佔用之記憶體、所開的檔案、通訊的資源等。

再來是process的狀態,一個行程(process)從開始執行到結束,會有幾種執行狀態的變化。每一個行程可能會處於以下數種狀態之一:

新產生(new) :
  該行程正在產生中。(當使用者發出一個請求,要系統執行某個命令,或某個批次檔時,作業系統開始為此要求產生一個行程,此行程此時尚未進入memory,尚未有機會搶用CPU,此狀態對 interactive job 而言,一般是極短暫的(只要當時有足夠的 memory, 馬上會成為 ready state process)。但對Batch Job而言,此狀態則有時可能存在很久。

執行(running) :
  process正在執行(擁有CPU)。

等待(waiting) :
 process等待某件事件的發生(譬如等 I / O 完成,等時間終了,等訊息來到)。

就緒(ready) :
  該行程在記憶體中等待被分配一個處理器。

結束(terminated) :
  該行程完成執行。

如下圖所示:










以上大致為我對process的了解,不過這也只是簡單的概念,比較詳細內部的資料可能要等到往後進行較高深進階的學術研究才可得知。

沒有留言:

張貼留言