Q1. 程式與進程的概念分別是什嗎?為什麼要引入“進程”的概念?
A:
1) 程式是一個普通檔案,是機器代碼指令和資料的集合,這些指令和資料存放區在磁碟上的一個可執行映像中,可執行映像(executable image)就是一個可執行檔的內容;
2) 進程代表程式的執行過程,它是一個動態實體,隨著程式中指令的執行而不斷地變化,在某個時刻進程的內容被稱為進程映像(process image);
3) 程式的執行過程可以說是一個執行環境的總和,這個執行環境除了包括程式中各種指令和資料外,還有一些額外資料;而執行環境的動態變化體現了程式的運行,為了對動態變化的過程進行描述,就引入了“進程”概念。
Q2. 什麼是進程式控制制塊?它包含哪些基本資料?
A:
1) Linux中把對進程的描述結構叫做task_struct,將這樣的資料結構稱作進程式控制制塊(PCB);
2) PCB是一個其域多達80多項的相當龐大的資料結構,按其功能將所有域劃分為:狀態資訊,連結資訊、各種標識符、處理序間通訊資訊、時間和定時器資訊、調度資訊、檔案系統資訊、虛擬記憶體資訊和處理器環境資訊。
Q3. Linux核心的狀態有哪些?
A:
1) Linux最基本的進程狀態有三種:運行態、就緒態和阻塞態(或等待態);這三種狀態之間有四種可能的轉換關係:運行態->阻塞態、運行態->就緒態、就緒態->運行態和阻塞態->就緒態;
2) 為了管理上的方便,將就緒態和運行態合并為一個狀態—可運行態,再包括其它方面的一些改變,將進程狀態劃分為:可運行態、睡眠(或等待)態(分為深度睡眠態和淺度睡眠態)、暫停狀態和僵死狀態。
Q4. PCB的組織方式有哪幾種?
A:PCB的組織方式有:進程鏈表、散列表、可運行隊列和等待隊列。
Q5. 主要的調度演算法包括哪些?一個好的調度演算法要考慮哪些方面?
A:
1) 主要的調度演算法包括:時間片輪轉調度演算法、優先順序調度演算法(非搶佔式優先順序演算法和搶佔式優先順序演算法)、多級反饋隊列調度演算法和即時調度演算法;
2) 一個好的調度演算法應該考慮五個方面:公平、高效、回應時間、周轉時間和輸送量。
摘自: