# Process ###### tags: `IT鐵人` ## Process ![](https://i.imgur.com/xsbgZy9.png) 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中如下: ![](https://i.imgur.com/FOCcw92.png) Memory會分配一塊區間給Process,而最低的放Code Section跟Data Section,之後heap往上長而Stack由上往下長。 ## PCB 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.| ## State Transition ![](https://i.imgur.com/x1dkKBE.png) 前面說紀錄PCB的目的就是為了能夠切換不同的process,所以每個Process都會需要在不同的state中切換,就有了以下的State Transition Diagram: ![](https://i.imgur.com/O36PAUf.png) 建立好Process後,分配完Memory後進入ready state,拿到CPU後進入running state,中間會來回切換執行別的process,執行完成之後就terminated,如果執行中間需要進行I/O或是意外狀況,則進入waiting state等待完成。 ![](https://i.imgur.com/qQkFZtn.png) 這種類型的State Transition Diagram是考慮了Memory不夠的狀況,這時候有些process會swap進入disk,等到Memory夠用或是該輪到他的時候再從disk移出來。 ## Scheduler 提到了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。| ![](https://i.imgur.com/l9lxAli.png) ## What's Next? 這邊介紹了PCB以及會有不同的State,後面會介紹在切換不同的process時會發生甚麼事情,以及一些酷東西XDD | 上一篇 | 下一篇 | |-|-| |[System Call & OS架構](https://hackmd.io/@dZfCcN4hT8aUuDPv3B8CWQ/Hk99oy0-F)|[Child Process](https://hackmd.io/@dZfCcN4hT8aUuDPv3B8CWQ/SyQiqR8zF) ![](https://i.imgur.com/pxAYcTg.png)