多進程,多線程,併發,並行,併發程序設計 概念

把多個程序同時裝入一個計算機系統的主存儲器並行執行,稱爲併發程序設計

1.併發:
在一段時間內,多個程序保持就緒態,隨時可以被CUP運行。單核處理器就可以做到。
在這裏插入圖片描述
多道環境下的程序設計叫做併發程序設計
2.並行:在同一時刻多個任務同時執行,或者說是在同一時刻可以執行多條程序指令,多核處理器纔可以做到。
3.多進程:每個進程都擁有自己獨立的資源,多個進程可在單核處理器上併發執行,在多核處理器上並行執行。
4.多線程:一個進程中擁有多個線程就叫多線程,一個進程只擁有一個線程叫單線程。多個線程可在單核處理器上併發執行,在多核處理器並行執行。

操作系統的設計,因此可以歸結爲三點:
(1)以多進程形式,允許多個任務同時運行;
(2)以多線程形式,允許單個任務分成不同的部分運行;
(3)提供協調機制,一方面防止進程之間和線程之間產生衝突,另一方面允許進程之間和線程之間共享資

併發程序設計概念

  1. 單道批處理系統:一次只能在主存中裝入1個程序, 該程序獨享所有資源(即使有些資源該程序不用),cpu處理完這個程序,下個程序才能進入內存。
    多道批處理系統:一次能在主存中裝入多個程序。
  2. 併發執行:(看多道程序執行示意圖)
    在一段時間內,有兩個或兩個以上的程序同時處於開始運行(已經在內存中了,就緒態)但尚未結束的狀態。
  3. 我們把多道環境下的程序設計叫做併發程序設計。
    在這裏插入圖片描述

例子:
人腦和計算機有好多相通之處,人腦一心二用和計算機的單核多線程幾乎是同樣的道理:通過快速切換時間片來模擬並行處理。
所以不要費勁心思想着突破人類的生理極限去做到“高併發”。
稍微有點經驗的程序員都知道,通過簡單的開進程、線程去實現高併發是非常愚蠢的行爲,因爲Context Switch的耗時在隨着併發度的提高會佔比越來越大,CPU會花費大量時間進行每個線程Context恢復&保存,高併發的不二法門一直是“異步非阻塞”。
同理,我們面對千頭萬緒的事情的時候需要做的是,記下需要做的事情,然後按照優先級,一件一件來做,如果遇到外部因素造成的“阻塞”,那就暫停任務,記錄進度,切換到下一個任務上去。
但由於我們的生理限制,我們的“內存”小得可憐,“硬盤”讀寫速度奇慢無比,還容易丟數據。

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