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