任務是代碼運行的一個映象,從系統的角度看,任務是競爭系統資源的最小運行單元。任務可以使用或等待CPU、I/O設備及內存空間等系統資源,並獨立於其它任務,與它們一起併發運行(宏觀上如此)。VxWorks內核使任務能快速共享系統的絕大部分資源。

在VxWorks6.4中,進程是指Rtp,進程包含任務,任務是調度的最小單元。

進程(有時被稱爲重量級進程)是程序的一次執行。每個進程都有自己的地址空間,內存,數據棧以及其它記錄其運行軌跡的輔助數據。操作系統管理在其上運行的所有進程,併爲這些進程公平地分配時間。

不過各個進程有自己的內存空間,數據棧等,所以只能使用進程間通訊(IPC),而不能直接共享信息。

線程,有時被稱爲輕量級進程(Lightweight Process,LWP),是程序執行流的最小單元。一個標準的線程由線程ID,當前指令指針(PC),寄存器集合和堆棧組成。另外,線程是進程中的一個實體,是被系統獨立調度和分派的基本單位,線程自己不擁有系統資源,只擁有一點在運行中必不可少的資源,但它可與同屬一個進程的其它線程共享進程所擁有的全部資源。一個線程可以創建和撤消另一個線程,同一進程中的多個線程之間可以併發執行。由於線程之間的相互制約,致使線程在運行中呈現出間斷性。線程也有就緒、阻塞和運行三種基本狀態。每一個程序都至少有一個線程,那就是程序本身。

線程是程序中一個單一的順序控制流程。在單個程序中同時運行多個線程完成不同的工作,稱爲多線程。

線程和進程的區別在於,子進程和父進程有不同的代碼和數據空間,而多個線程則共享數據空間,每個線程有自己的執行堆棧和程序計數器爲其執行上下文。多線程主要是爲了節約CPU時間,發揮利用,根據具體情況而定。線程的運行中需要使用計算機的內存資源和CPU。

通常在一個進程中可以包含若干個線程,它們可以利用進程所擁有的資源。在引入線程的操作系統中,通常都是把進程作爲分配資源的基本單位,而把線程作爲獨立運行和獨立調度的基本單位。由於線程比進程更小,基本上不擁有系統資源,故對它的調度所付出的開銷就會小得多,能更高效的提高系統內多個程序間併發執行的程度,從而顯著提高系統資源的利用率和吞吐量。

因而近年來推出的通用操作系統都引入了線程,以便進一步提高系統的併發性,並把它視爲現代操作系統的一個重要指標。

線程與進程的區別可以歸納爲以下幾點:

1)地址空間和其它資源(如打開文件):進程間相互獨立,同一進程的各線程間共享。某進程內的線程在其它進程不可見。

2)通信:進程間通信IPC,線程間可以直接讀寫進程數據段(如全局變量)來進行通信——需要進程同步和互斥手段的輔助,以保證數據的一致性。

3)調度和切換:線程上下文切換比進程上下文切換要快得多。

4)在多線程OS中,進程不是一個可執行的實體。

程序(program)是爲實現特定目標或解決特定問題而用計算機語言編寫的命令序列的集合。爲實現預期目的而進行操作的一系列語句和指令。一般分爲系統程序和應用程序兩大類。計算機中的程序在港澳臺地區稱爲程式。程序就是爲使電子計算機執行一個或多個操作,或執行某一任務,按序設計的計算機指令的集合。

相關文章