2014-11-05 82 views
0

我的課本提到了下面的句子:CPU調度和內核級線程

在支持它們的操作系統,它是內核級線程 - 而不是進程 - 正在由操作系統調度。

我理解CPU調度,但這句話沒有意義。這是否意味着調度程序根據特定的算法將CPU分配給內核級線程?

是否還安排了內核級進程?或者它們不存在於支持內核級線程的操作系統中?

+1

請參閱http://stackoverflow.com/questions/9305992/linux-threads-and-process/9306150#9306150 – paxdiablo 2014-11-05 12:16:39

回答

2

正如您引用的文本所暗示的,對此的答案取決於具體的操作系統。但是,對這些術語的一點定義可能有助於使事情變得更清楚。

程序 程序是執行特定作業的指令序列。這經常遇到一個或多個可執行文件,包括主應用程序和它使用的任何庫。

在嵌入式系統中,當設備製造時,程序將「嵌入」在電子器件中,例如, ASIC,微控制器,FPGA和otehr設備。

處理 進程是程序的執行實例。可能同時運行一個程序的多個實例,例如使用相同的文字處理程序打開多個文檔時。

每個進程都有自己的內存和至少一個執行線程。當你啓動一個進程時,該進程的主線程在程序加載時啓動。

線程 線程(或任務)是處理器必須執行的指令序列,以實現程序的特定目標。

在多任務操作系統中,一個進程可能有許多任務正在運行。所有任務與父進程共享相同的內存。一個進程內的任務間的切換是相當容易的,與流程之間的切換相比(這可能涉及通過一個交換文件在磁盤上的交換過程的記憶!)

調度 根據需要做什麼,操作系統將安排需要或等待需要的線程。這可能涉及改變當前的過程,但通常(希望)它不會。因此,線程被調度,進程不是。

*一些嵌入式設備包括一個'Bootloader',它允許程序在製造後被更改。

2

當涉及操作系統上下文中的線程和進程時,進程意味着一個擁有自己的內存空間的線程,線程表示一個線程與其他線程共享內存空間。

因此,進程上下文切換的成本比線程上下文切換更高,因爲在切換進程上下文時存在更高的開銷。