01、進程和線程的區別 1、進程 進程是資源分配的基本單位。 進程式控制制塊 (Process Control Block, PCB) 描述進程的基本信息和運行狀態,所謂的創建進程和撤銷進程,都是指對 PCB 的操作。 下圖顯示了 4 個程式創建了 4 個進程,這 4 個進程可以併發地執行。 2、線程 ...
01、進程和線程的區別
1、進程
進程是資源分配的基本單位。
進程式控制制塊 (Process Control Block, PCB) 描述進程的基本信息和運行狀態,所謂的創建進程和撤銷進程,都是指對 PCB 的操作。
下圖顯示了 4 個程式創建了 4 個進程,這 4 個進程可以併發地執行。
2、線程
線程是獨立調度的基本單位。
一個進程中可以有多個線程,它們共用進程資源。
QQ 和瀏覽器是兩個進程,瀏覽器進程裡面有很多線程,例如 HTTP 請求線程、事件響應線程、渲染線程等等,線程的併發執行使得在瀏覽器中點擊一個新鏈接從而發起 HTTP 請求時,瀏覽器還可以響應用戶的其它事件。
3、區別
1. 擁有資源:進程是資源分配的基本單位,但是線程不擁有資源,線程可以訪問隸屬進程的資源。
2. 調度:線程是獨立調度的基本單位,在同一進程中,線程的切換不會引起進程切換,從一個進程中的線程切換到另一個進程中的線程時,會引起進程切換。
3. 系統開銷:由於創建或撤銷進程時,系統都要為之分配或回收資源,如記憶體空間、I/O 設備等,所付出的開銷遠大於創建或撤銷線程時的開銷。類似地,在進行進程切換時,涉及當前執行進程 CPU 環境的保存及新調度進程 CPU 環境的設置,而線程切換時只需保存和設置少量寄存器內容,開銷很小。
4. 通信方面:線程間可以通過直接讀寫同一進程中的數據進行通信,但是進程通信需要藉助 IPC。
4、模擬面試題(簡單)
進程和線程的區別?
答:
- 一個進程可以包含多個線程;
- 進程間不共用資源,有獨立代碼和數據空間(程式上下文),由系統直接分發,開銷大。同一進程的不同線程共用空間,線程只獨立擁有程式計數器、寄存器、堆棧、狀態。