進程和線程

進程與線程都是cpu運行的時間片,只是兩個的時間片大小不一樣。
一個程序在運行的時候是分成很多個時間的,但由於cpu運行的速度很快,所以我們感覺不到他們之間的切換,以爲他們是在連續運行的。像在拍電影一樣,電影是由一張張的膠捲組成的,當切換的速度快到一定程度時,我們的眼睛就感受他們之間的切換了。
一個進程可以擁有至少一個線程,一個進程運行的時間片=cpu加載上下文+cpu運行時間+cpu保存上下文。當cpu加載完上下文之後,線程a就會使用進程的上下文來運行,線程b也可以使用同一個進程的上下文來運行,所以說很多線程都是共用一片內存空間,線程的運行時間就會比進程短,而且速度快。
當進程的時間片用完的時候,屬於這個進程的cpu空間也就用完了,進程就需要等待下一次的臨幸了
當將進程和線程運用到服務器中,當一個服務器遇到比較高的併發量時,就會需要用到多進程管理。
舉個通俗點的例字就是,比如開個QQ,開了一個進程;開了迅雷,開了一個進程。在QQ的這個進程裏,傳輸文字開一個線程、傳輸語音開了一個線程、彈出對話框又開了一個線程。所以運行某個軟件,相當於開了一個進程。在這個軟件運行的過程裏(在這個進程裏),多個工作支撐的完成QQ的運行,那麼這“多個工作”分別有一個線程。所以一個進程管着多個線程。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章