一、進程與線程之間的關係 1、線程是屬於進程的,線程運行在進程空間內,同一進程所產生的線程共用同一記憶體空間,當進程退出時該進程所產生的線程都會被強制退出並清除。 2、線程可與屬於同一進程的其它線程共用進程所擁有的全部資源,但是其本身基本上不擁有系統資源,只擁有一點在運行中必不可少的信息(如程式計數器 ...
一、進程與線程之間的關係
1、線程是屬於進程的,線程運行在進程空間內,同一進程所產生的線程共用同一記憶體空間,當進程退出時該進程所產生的線程都會被強制退出並清除。
2、線程可與屬於同一進程的其它線程共用進程所擁有的全部資源,但是其本身基本上不擁有系統資源,只擁有一點在運行中必不可少的信息(如程式計數器、一組寄存器和棧)。
二、進程、線程的優缺點
進程:
優點:同時利用多個cpu,能夠同時進行多個操作
缺點:耗費資源(重新開劈記憶體空間)
線程:
優點:共用記憶體,IO操作時候,創造併發操作
1、易於調度。
2、提高併發性。通過線程可方便有效地實現併發性。進程可創建多個線程來執行同一程式的不同部分。
3、開銷少。創建線程比創建進程要快,所需開銷很少
缺點:搶占資源
結論:
1、進程不是越多越好,理想的是cpu個數=進程個數;線程也不是越多越好,具體案例具體分析,請求上下文切換耗時。
2、電腦中執行任務的最小單元:線程
3、IO密集型:多線程
4、計算密集型:多進程
5、GIL :全局解釋器鎖
三、進程的基本狀態及狀態之間的關係
狀態:運行、阻塞、掛起阻塞、就緒、掛起就緒
狀態之間的轉換:
(1)準備就緒的進程,被CPU調度執行,變成運行態;
(2)運行中的進程,進行I/O請求或者不能得到所請求的資源,變成阻塞態;
(3)運行中的進程,進程執行完畢(或時間片已到),變成就緒態;
(4)將阻塞態的進程掛起,變成掛起阻塞態,當導致進程阻塞的I/O操作在用戶重啟進程前完成(稱之為喚醒),掛起阻塞態變成掛起就緒態,當用戶在I/O操作結束之前重啟進程,掛起阻塞態變成阻塞態;
(5)將就緒(或運行)中的進程掛起,變成掛起就緒態,當該進程恢復之後,掛起就緒態變成就緒態;