1、進程:進程在操作系統中可以獨立運行,是操作系統進行資源分配和調度的基本單元。
2、線程:線程是進程中的一個實例,作為系統調度和分派的基本單位,是進程中的一段序列,能夠完成進程中的一個功能。
3、進程和線程的區別:
1)同一個進程可以包含多個線程,一個進程中至少包含一個線程,一個線程只能存在於一個進程中。
2)同一個進程下的所有線程能夠共享該進程下的資源。(系統運行時會為每個進程分配不同的內存區域,但不會為線程分配內存。線程只能共享它所屬進程的資源。)
3)進程結束后,該進程下的所有線程將銷毀,而一個線程的結束不會影響同一進程下的其他線程。
4)線程是輕量級的進程,它的創建和銷毀所需要的時間比進程小得多,所有操作系統的執行功能都是通過創建線程去完成的。
5)線程在執行時是同步和互斥的,因為他們共享同一個進程下的資源。
6)在操作系統中,進程是擁有系統資源的獨立單元,它可以擁有自己的資源。一般而言,線程不能擁有自己的資源,但是它能夠訪問其隸屬進程的資源。
一個進程可以定義程序的一個實例。在Win32中,進程並不執行什么,它只是占據應用程序所使用的地址空間。為了讓進程完成一定的工作,進程必須至少占有一個線程,正是這個線程負責包含進程地址空間中的代碼。實際上,一個進程可以包含幾個線程,它們可以同時執行進程地址空間中的代碼。為了做到這一點,每個線程有自己的一組CPU寄存器和堆棧。每個進程中至少有一個線程在執行其地址空間中的代碼。如果沒有線程執行進程地址空間中的代碼,進程也就沒有繼續存在的理由,系統將自動清除進程及其地址空間。
4、線程的數量會受到什么限制?
受內存限制。