2010年11月28日 星期日

多執行緒 ( Multi - threading ) 先佔式多工 ( Preemptive Multitasking )

【多執行緒 ( Multi - threading ) 】 又稱為 Light - Weighted Process ,它與傳統的行程 ( Process ) 非常類似,只不過一個行程中可能會包含數個Threads ,同屬某個行程的各 Threads 會共用某塊共同記憶體,以降低彼此間控制權轉移時的負擔。Process與 Thread 兩者間的異同可用下表來說明: 

 

ProcessThreads
相同點
1、每一個 Process ( Thread ) 依序執行。
2、每一個 Process ( Thread ) 有自己的程式計數器 ( Program Counter ) ,可以用來記錄、追
  蹤執行的狀態。
3、所有的 Process ( Thread ) 共同分享 CPU 資源。
相異點
1、Processes 間彼此為獨立的個體。
2、Processes 間彼此各自擁有自己的位址空
間。
3、作業系統會提供 Processes 彼此之間的保
  護措施,使彼此間不會互相衝突。
1、一個 Process 可能包含許多的 Threads。
2、同屬一個 Process 的 Threads 會共用同樣
的位址空間。
3、對於同屬一個 Process 的 Threads 來說,
  作業系統並不提供 Threads 彼此間的保
  護措施,程式設計師必須要自行控制。
 【多工 ( Multi - tasking ) 】  通常一個具有多工處理能力的作業系統是表是這個作業系統可以同時執行兩個以上的「行程 ( Process ) 」。多工作業系統可分成先佔式多工 ( Preemptive Multitasking ) 與非先佔式多工 ( Non - Preemptive Multitasking )兩大類。  

1、先佔式多工 ( Preemptive Multitasking )  

作業系統可以讓系統正在執行中的行程公平使用電腦系統的 CPU 以及其它資源。
只要執行中的行程超過作業系統所配置給此行程的 CPU 時段時,作業系統會立刻中斷這個行程並將控制權交給另一個正在等待的行程。  

2、非先佔式多工 ( Non - Preemptive Multitasking )  

又稱為協同式多工 ( Cooperative Multitasking ) ,在此作業系統下,CPU 的控制權有可能被一個行程所佔用,除非該行程主動交出 CPU 的控制權,否則別的行程是沒有機會取得 CPU 的控制權。

1 則留言:

匿名 提到...

非先佔和先佔寫錯了吧