IT鐵人
Process就是前面提到的Job跟Task,Process是執行中的程式。
當Process被建立時,主要組成包括下列:
Section | 內容 |
---|---|
Code Section(Text Section) | 就是Program code部分。 |
Data Section | Containing the global variables。 |
Stack | 包含temporary data(例如Function Parameters、Local variables、return address)。 |
Heap | 包含Memory dynamically allocated during run time(例如pointer變數的需求空間)。 |
Programming counter & other registers | 會有下一條指令的所在位置。 |
Process的內容在Memory中如下:
Memory會分配一塊區間給Process,而最低的放Code Section跟Data Section,之後heap往上長而Stack由上往下長。
PCB的全名是Process Control Block,就是在Process被建立時,kernel會建立一個表格,紀錄有關該Process的資訊,以便之後切換不同process時還可以正常運作。
PCB主要紀錄的資訊有:
項目 | 內容 |
---|---|
Process NO. | unique Process ID. |
Process State | ready, new, running, wait state,etc. |
CPU Register | accumulator, Stack Top pointer, Index register,etc. |
CPU Scheduling Info | process優先權值, PCB pointer,etc. |
Memory Management Info | Base limit register值 or page Table or Segment Table, base on OS memory management. |
Program Counter | Next instruction address. |
Accounting Info | Process使用CPU Time的最大值, 目前使用了多少CPU Time, 多少資源, etc. |
I/O-Status Info | 目前配給process之I/O-Device為何,已發出哪些I/O-request,完成多少I/O-request,etc. |
前面說紀錄PCB的目的就是為了能夠切換不同的process,所以每個Process都會需要在不同的state中切換,就有了以下的State Transition Diagram:
建立好Process後,分配完Memory後進入ready state,拿到CPU後進入running state,中間會來回切換執行別的process,執行完成之後就terminated,如果執行中間需要進行I/O或是意外狀況,則進入waiting state等待完成。
這種類型的State Transition Diagram是考慮了Memory不夠的狀況,這時候有些process會swap進入disk,等到Memory夠用或是該輪到他的時候再從disk移出來。
提到了process會輪流執行,那麼就要介紹有甚麼挑選process的方式,以下會介紹三種Scheduler:
種類 | 內容 |
---|---|
Long-Term Scheduler | 又稱為Job Scheduler,目的在於從Job Queue中抓Job進入Memory中以便執行。因為執行的頻率最低,所以稱為Long-Term。 |
Short-Term Scheduler | 又叫做CPU Scheduler或Process Scheduler。目的在於從Ready Queue中抓Process給CPU執行。因為執行頻率最高,所以稱為Short-Term。 |
Medium-Term Scheduler | 當Memory空間不夠時,要把Process swap out到disk中,直到空間足夠時再將Process swap in到Memory。因為執行頻率在中間,所以稱為Medium-Term。 |
這邊介紹了PCB以及會有不同的State,後面會介紹在切換不同的process時會發生甚麼事情,以及一些酷東西XDD
上一篇 | 下一篇 |
---|---|
System Call & OS架構 | Child Process |