題外話,南部這一陣子一直下雨下下下
今天看的路邊長香菇的新聞,望著我家遲遲沒乾的衣服...J個雨,真的好了歐,好了就好了,真的
當我們使用游標對執行檔.exe點兩下後,系統會把這個程式載入到記憶體並執行。這一刻起,它就不再是硬碟上靜靜躺著的檔案,而是活生生、有生命週期、有資源的執行單位:Process。
Process 本身內容涵蓋:
Process 與 Program 的差異:
Program是我們寫好的程式碼,會靜靜的儲存的在硬碟中;Process則是執行中版本的程式,具有活躍狀態與系統資源。
一個Program可以對應多個 process(就像是開了兩個 Google Chrome 視窗,每個就是一個 process)。
Process本身結構如下圖所表示。結構可以分為:
對於每一個Process,OS都需要去紀錄每個Process的的詳細資訊,才能進行管理。而這些紀錄就會存在一份名為Process Control Block(PCB)的資料結構中。PCB內容包含:
一個 Process 不會永遠都在執行,它會根據當前情況切換狀態。以下是常見的五種狀態:
對於狀態轉換原因,這邊我就直接用一張圖來整理:
也因為CPU是要在完成這些Process,
為了讓每個 Process 都有機會執行,OS會針對Process進行排程(Scheduling)。其目標有兩個:
那Scheduling的運作方式大致如下:
那在Scheduling時,OS就會根據Process States,將它們放入不同的佇列中管理: