進程與線程都是cpu運行的時間片,只是兩個的時間片大小不一樣。
一個程序在運行的時候是分成很多個時間的,但由於cpu運行的速度很快,所以我們感覺不到他們之間的切換,以爲他們是在連續運行的。像在拍電影一樣,電影是由一張張的膠捲組成的,當切換的速度快到一定程度時,我們的眼睛就感受他們之間的切換了。
一個進程可以擁有至少一個線程,一個進程運行的時間片=cpu加載上下文+cpu運行時間+cpu保存上下文。當cpu加載完上下文之後,線程a就會使用進程的上下文來運行,線程b也可以使用同一個進程的上下文來運行,所以說很多線程都是共用一片內存空間,線程的運行時間就會比進程短,而且速度快。
當進程的時間片用完的時候,屬於這個進程的cpu空間也就用完了,進程就需要等待下一次的臨幸了
當將進程和線程運用到服務器中,當一個服務器遇到比較高的併發量時,就會需要用到多進程管理。
舉個通俗點的例字就是,比如開個QQ,開了一個進程;開了迅雷,開了一個進程。在QQ的這個進程裏,傳輸文字開一個線程、傳輸語音開了一個線程、彈出對話框又開了一個線程。所以運行某個軟件,相當於開了一個進程。在這個軟件運行的過程裏(在這個進程裏),多個工作支撐的完成QQ的運行,那麼這“多個工作”分別有一個線程。所以一個進程管着多個線程。
進程和線程
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
android的線程和進程
尋夢緣2008
2019-02-23 13:56:51
系統常見系統進程文件
soda119
2019-02-23 13:17:01
關於暴風影音
51CTOYoung
2019-02-23 13:00:58
php-cgi進程佔用cpu資源過多負載高的原因分析及解決步驟
joyfulboy
2019-02-23 00:32:07
利用管道實現進程間通信
龍躍十二
2019-02-23 00:03:59
殺死locked的mysql進程shell腳本
qk1987925
2019-02-23 00:02:06