任務(wù)是代碼運行的一個映象,從系統(tǒng)的角度看,任務(wù)是競爭系統(tǒng)資源的最小運行單元。任務(wù)可以使用或等待CPU、I/O設(shè)備及內(nèi)存空間等系統(tǒng)資源,并獨立于其它任務(wù),與它們一起并發(fā)運行(宏觀上如此)。VxWorks內(nèi)核使任務(wù)能快速共享系統(tǒng)的絕大部分資源。
在VxWorks6.4中,進程是指Rtp,進程包含任務(wù),任務(wù)是調(diào)度的最小單元。
進程(有時被稱為重量級進程)是程序的一次執(zhí)行。每個進程都有自己的地址空間,內(nèi)存,數(shù)據(jù)棧以及其它記錄其運行軌跡的輔助數(shù)據(jù)。操作系
統(tǒng)管理在其上運行的所有進程,并為這些進程公平地分配時間。
不過各個進程有自己的內(nèi)存空間,數(shù)據(jù)棧等,所以只能使用進程間通訊(IPC),而不能直接共享信息。
線程,有時被稱為輕量級進程(Lightweight Process,LWP),是程序執(zhí)行流的最小單元。一個標(biāo)準(zhǔn)的線程由線程ID,當(dāng)前指令指針(PC),寄存器集合和堆棧組成。另外,線程是進程中的一個實體,是被系統(tǒng)獨立調(diào)度和分派的基本單位,線程自己不擁有系統(tǒng)資源,只擁有一點在運行中必不可少的資源,但它可與同屬一個進程的其它線程共享進程所擁有的全部資源。一個線程可以創(chuàng)建和撤消另一個線程,同一進程中的多個線程之間可以并發(fā)執(zhí)行。由于線程之間的相互制約,致使線程在運行中呈現(xiàn)出間斷性。線程也有就緒、阻塞和運行三種基本狀態(tài)。每一個程序都至少有一個線程,那就是程序本身。
線程是程序中一個單一的順序控制流程。在單個程序中同時運行多個線程完成不同的工作,稱為多線程。
線程和進程的區(qū)別在于,子進程和父進程有不同的代碼和數(shù)據(jù)空間,而多個線程則共享數(shù)據(jù)空間,每個線程有自己的執(zhí)行堆棧和程序計數(shù)器為其執(zhí)行上下文。多線程主要是為了節(jié)約CPU時間,發(fā)揮利用,根據(jù)具體情況而定。線程的運行中需要使用計算機的內(nèi)存資源和CPU。
通常在一個進程中可以包含若干個線程,它們可以利用進程所擁有的資源。在引入線程的操作系統(tǒng)中,通常都是把進程作為分配資源的基本單位,而把線程作為獨立運行和獨立調(diào)度的基本單位。由于線程比進程更小,基本上不擁有系統(tǒng)資源,故對它的調(diào)度所付出的開銷就會小得多,能更高效的提高系統(tǒng)內(nèi)多個程序間并發(fā)執(zhí)行的程度,從而顯著提高系統(tǒng)資源的利用率和吞吐量。
因而近年來推出的通用操作系統(tǒng)都引入了線程,以便進一步提高系統(tǒng)的并發(fā)性,并把它視為現(xiàn)代操作系統(tǒng)的一個重要指標(biāo)。
線程與進程的區(qū)別可以歸納為以下幾點:
1)地址空間和其它資源(如打開文件):進程間相互獨立,同一進程的各線程間共享。某進程內(nèi)的線程在其它進程不可見。
2)通信:進程間通信IPC,線程間可以直接讀寫進程數(shù)據(jù)段(如全局變量)來進行通信——需要進程同步和互斥手段的輔助,以保證數(shù)據(jù)的一致性。
3)調(diào)度和切換:線程上下文切換比進程上下文切換要快得多。
4)在多線程OS中,進程不是一個可執(zhí)行的實體。
程序(program)是為實現(xiàn)特定目標(biāo)或解決特定問題而用計算機語言編寫的命令序列的集合。為實現(xiàn)預(yù)期目的而進行操作的一系列語句和指令。一般分為系統(tǒng)程序和應(yīng)用程序兩大類。計算機中的程序在港澳臺地區(qū)稱為程式。程序就是為使電子計算機執(zhí)行一個或多個操作,或執(zhí)行某一任務(wù),按序設(shè)計的計算機指令的集合