線程,進程

以前學操作系統時候就瞭解一些,但是後來感覺漸漸忘了,現在總結一下子吧

    進程:系統進行資源分配和調度的基本單位,載入內存被cpu執行的了就是進程了

     線程:通常在一個進程中可以包含若干個線程,它們可以利用進程所擁有的資源,在引入線程操作系統中,通常都是把進程作爲分配資源的基本單位,而把線程作爲獨立運行和獨立調度的基本單位,由於線程比進程更小,基本上不擁有系統資源,故對它的調度所付出的開銷就會小得多,能更高效的提高系統內多個程序間併發執行的程度。

       

       比如:開個QQ,開了一個進程;開了迅雷,開了一個進程。
在QQ的這個進程裏,傳輸文字開一個線程、傳輸語音開了一個線程、彈出對話框又開了一個線程。

所以運行某個軟件,相當於開了一個進程。在這個軟件運行的過程裏(在這個進程裏),多個工作支撐的完成QQ的運行,那麼這“多個工作”分別有一個線程。

所以一個進程管着多個線程。

通俗的講:“進程是爹媽,管着衆多的線程兒子”...轉載至知乎https://www.zhihu.com/question/25532384

多進程,多線層:

1。單進程單線程:一個人在一個桌子上吃菜。
2。單進程多線程:多個人在同一個桌子上一起吃菜。
3。多進程單線程:多個人每個人在自己的桌子上吃菜。

多線程的問題是多個人同時吃一道菜的時候容易發生爭搶,例如兩個人同時夾一個菜,一個人剛伸出筷子,結果伸到的時候已經被夾走菜了。。。此時就必須等一個人夾一口之後,在還給另外一個人夾菜,也就是說資源共享就會發生衝突爭搶。

總結:轉載自知乎https://www.zhihu.com/question/19901763

進程是運行中的程序,線程是進程的內部的一個執行序列

進程是資源分配的單元,線程是執行行單元

進程間切換代價大,線程間切換代價小

進程擁有資源多,線程擁有資源少

多個線程共享進程的資源

 

 運行中的進程可能具有以下三種基本狀態:

          1)就緒狀態(Ready)

               進程已獲得除CPU外的所有必要資源,只等待CPU時的狀態。一個系統會將多個處於就緒狀態的進程排成一個就緒隊列。

          2)運行狀態(Running)

              進程已獲CPU,正在執行。單處理機系統中,處於執行狀態的進程只一個;多處理機系統中,有多個處於執行狀態的進程

          3)阻塞狀態(Blocked)

                  正在執行的進程由於某種原因而暫時無法繼續執行,便放棄處理機而處於暫停狀態,即進程執行受阻。(這種狀態又稱等待狀態或封鎖狀態),引起進程阻塞的事件有很多種,例如,等待I/O完成、申請緩衝區不能滿足、等待信號等。

進程三種狀態間的轉換
一個進程在運行期間,不斷地從一種狀態轉換到另一種狀態,它可以多次處於就緒狀態和執行狀態,也可以多次處於阻塞狀態。 
A. 就緒—>執行
處於就緒狀態的進程,當進程調度程序爲之分配好了處理機後,該進程便由就緒狀態轉換爲執行狀態;
B. 執行—>就緒 
處於執行狀態的進程在其執行過程中,因分配給它的一個時間片已經用完而不得不讓出處理機,於是進程從執行狀態轉換爲就緒狀態;
C. 執行—>阻塞
正在執行的進程因等待某種事件發生而無法繼續執行時,便從執行狀態變成阻塞狀態;
D. 阻塞—>就緒
處於阻塞狀態的進程,若其等待的事件已經發生,於是進程便從阻塞狀態轉變爲就緒狀態。

  

多進程優缺點

首先說下多線程出現的原因:

爲了解決負載均衡問題,充分利用CPU資源.爲了提高CPU的使用率,採用多線程的方式去同時完成幾件事情而不互相干擾.爲了處理大量的IO操作時或處理的情況需要花費大量的時間等等,比如:讀寫文件,視頻圖像的採集,處理,顯示,保存等

多線程的好處:

1.使用線程可以把佔據時間長的程序中的任務放到後臺去處理

2.用戶界面更加吸引人,這樣比如用戶點擊了一個按鈕去觸發某件事件的處理,可以彈出一個進度條來顯示處理的進度

3.程序的運行效率可能會提高

4.在一些等待的任務實現上如用戶輸入,文件讀取和網絡收發數據等,線程就比較有用了.

多線程的缺點:

1.如果有大量的線程,會影響性能,因爲操作系統需要在它們之間切換.

2.更多的線程需要更多的內存空間

3.線程中止需要考慮對程序運行的影響.

4.通常塊模型數據是在多個線程間共享的,需要防止線程死鎖情況的發生

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章