進程 線程 協程

 

黑書 計算機操做系統中說了不少。html

首先,在一個cpu的狀況下,進程是一個程序運行時的總和,一個時刻確定只有一個進程在執行,只是cpu會使用進程調度算法來回切換進程而已,就緒,運行,阻塞 三個狀態,通常交互式操做系統採用優先級 ,時間輪轉,多級反饋隊列調度算法等調度算法。python

每一個進程有一個執行線程,也能夠createThread 生成多線程,事實上一個時刻也只能有一個線程在cpu上運行,也是用過調度算法來進行,也是有 就緒,運行,阻塞 三個狀態,通常也是時間片輪轉算法,優先級算法mysql

 

進程可靠(由於是獨立的地址空間,fork生成新的進程),切換開銷大(進程表信息多)nginx

線程共享內存,開銷小,多個線程是在一個進程之中的算法

協程開銷更小, python和go都有sql

 

apache是多進程,prework模式是一個進程處理一個請求apache

 

nginx也是多進程模式,一個master,多個woker,可是加入了異步非阻塞模式多線程

 

mysql採用多線程,可是你ps看到的會有多個進程,是由於MySQL一直都是單進程、多線程的工做模式。只是,LinuxThreads並非真正的線程,所以,這些進程其實仍是採用系統調用 clone() 來共享一樣的地址空間的。儘管採用 ps 查看的結果看起來是多進程,其實mysqld真正的工做方式仍是多線程。異步

 

 

http://blog.csdn.net/davissuperman/article/details/40738507操作系統

 

http://www.cnblogs.com/lianzhilei/p/6029100.html

 

http://blog.csdn.net/lishenglong666/article/details/8557215

相關文章
相關標籤/搜索