進程:
進程就是處於執行期的程序。但進程並不僅僅侷限於一段可執行代碼(Unix稱其爲代碼段,text section)。實際上,進程就是正在執行的程序代碼的實時結果。
線程:
執行線程,是在進程中活動的對象,內核調度的對象是線程不是進程。
①:在現代操作系統中,進程提供兩種虛擬機制:虛擬處理器和虛擬內存。注意:在線程之間可以共享虛擬內存,但每個都擁有各自的虛擬處理器。
②:程序本身並不是進程,進程是處於執行期的程序以及相關的資源的總稱。實際上,完全可能存在兩個或多個不同的進程執行的是同一個程序。並且兩個或兩個以上並存的進程還可以共享許多諸如打開的文件,地址空間之類的資源。
在linux系統中,這通常是調用fork()系統的結果,該系統調用通過複製一個現有進程來創建一個全新的進程。
進程描述符及任務結構:內核把進程的列標存放在叫做任務隊列的雙向循環鏈表中。鏈表中的每一項都是類型爲task_struct,稱爲進程描述符的結構,該結構定義在<linux/sched.h>文件中。進程描述符中包含一個具體進程的所有信息。