線程1--線程和進程的區(qū)別和其他術語

進程(process)和線程(thread)是操作系統(tǒng)的基本概念。
進程和線程都是CPU工作時間段的描述。

背景:由于CPU與其他PC資源之間速度的不協(xié)調,人們想提高資源利用率,所以提出了多任務系統(tǒng)。得益于CPU的計算速度,我們可以“同時”運行多個任務,實質上是多個任務之間輪流使用CPU資源,由于速度超快,給用戶的感覺就是連續(xù)的。

如何實現:任務的執(zhí)行需要依賴各個PC資源,我們可以稱為計算機執(zhí)行的上下文環(huán)境。要實現“同時執(zhí)行”,就需要不斷輪換,為了下一次繼續(xù)從當前狀態(tài)執(zhí)行下去,計算機需要保存切換前的程序上下文。所以有了進程:用進程去描述程序當前上下文的狀態(tài)信息----內存位置、變量值、任務ID……所以,進程是資源分配的單位。一般來說宏觀上可以看做是一個軟件的運行,例如一個word文檔的打開。

多個任務之間切換因為要保存上下文、調入上下文,一旦多了的時候,還是有一定的時間消耗。為了進一步提高資源利用率,人們在進程中,引入了線程,線程只是CPU輪流調度的單位,其他上下文信息用所在進程中的。這樣上下文切換的耗時就降了下來。同樣的,宏觀上來可以看做是一個軟件中的多個處理功能,例如上述打開word中拼寫檢查功能、字體加粗……

區(qū)別:
進程:
進程是具有獨立功能的程序關于某個數據集合上的一次運行活動,是系統(tǒng)進行資源分配的獨立單位。
進程之間的地址空間是相互獨立的,每個進程都是用虛擬地址空間,每個進程都以為整個地址空間只有自已在運行。操作系統(tǒng)在進行進程切換時,要把每個進程的上下文保存完整;
進程之間不能共享資源;
進程切換的開銷較大。

線程:
線程是進程中的一個執(zhí)行路徑。(進程可以創(chuàng)建多個線程);
線程是CPU調度的單位;
線程共享所在進程的地址空間和其它資源。同時線程還有自己的棧和棧指針,程序計數器等寄存器;
線程沒有自己獨立的地址空間,線程必須依賴于進程而存在;
線程切換的開銷相對較小。

其他術語:
并發(fā):
Concurrency,是并發(fā)的意思。并發(fā)的實質是一個物理CPU(也可以多個物理CPU) 在若干道程序(或線程)之間多路復用,并發(fā)性是對有限物理資源強制行使多用戶共享以提高效率。
從微觀角度看,所有的并發(fā)處理都有排隊等候、喚醒、執(zhí)行等這樣的步驟,在微觀上他們都是序列被處理的,如果是同一時刻到達的請求(或線程)也會根據優(yōu)先級的不同,而先后進入隊列排隊等候執(zhí)行。
從宏觀角度看,多個幾乎同時到達的請求(或線程)在宏觀上看就像是同時在被處理。

并行:
Parallelism,即并行,指兩個或兩個以上事件(或線程)在同一時刻發(fā)生,是真正意義上的不同事件或線程在同一時刻,在不同CPU資源呢上(多核),同時執(zhí)行。并行,不存在像并發(fā)那樣競爭,等待的概念。

通過多線程實現并發(fā),并行:
1.java中的Thread類定義了多線程,通過多線程可以實現并發(fā)或并行。
2.在CPU比較繁忙,資源不足的時候(開啟了很多進程),操作系統(tǒng)只為一個含有多線程的進程分配僅有的CPU資源,這些線程就會為自己盡量多搶時間片,這就是通過多線程實現并發(fā),線程之間會競爭CPU資源爭取執(zhí)行機會。
3.在CPU資源比較充足的時候,一個進程內的多線程,可以被分配到不同的CPU資源,這就是通過多線程實現并行。
4.至于多線程實現的是并發(fā)還是并行?上面所說,所寫多線程可能被分配到一個CPU內核中執(zhí)行,也可能被分配到不同CPU執(zhí)行,分配過程是操作系統(tǒng)所為,不可人為控制。所有,如果有人問我我所寫的多線程是并發(fā)還是并行的?我會說,都有可能。
5.不管并發(fā)還是并行,都提高了程序對CPU資源的利用率,最大限度地利用CPU資源。

串行、并行:
并行和串行指的是任務的執(zhí)行方式。串行是指多個任務時,各個任務按順序執(zhí)行,完成一個之后才能進行下一個。并行指的是多個任務可以同時執(zhí)行,異步是多個任務并行的前提條件。

異步和同步
異步和同步是相對的,同步就是順序執(zhí)行,執(zhí)行完一個再執(zhí)行下一個,需要等待、協(xié)調運行。異步就是彼此獨立,在等待某事件的過程中繼續(xù)做自己的事,不需要等待這一事件完成后再工作。線程就是實現異步的一個方式。異步是讓調用方法的主線程不需要同步等待另一線程的完成,從而可以讓主線程干其它的事情。

并發(fā)編程又叫多線程編程
并發(fā)的實質是一個物理CPU(也可以多個物理CPU) 在若干道程序之間多路復用,并發(fā)性是對有限物理資源強制行使多用戶共享以提高效率。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 1.內存的頁面置換算法 (1)最佳置換算法(OPT)(理想置換算法):從主存中移出永遠不再需要的頁面;如無這樣的...
    杰倫哎呦哎呦閱讀 3,588評論 1 9
  • 一. 操作系統(tǒng)概念 操作系統(tǒng)位于底層硬件與應用軟件之間的一層.工作方式: 向下管理硬件,向上提供接口.操作系統(tǒng)進行...
    月亮是我踢彎得閱讀 6,153評論 3 28
  • 又來到了一個老生常談的問題,應用層軟件開發(fā)的程序員要不要了解和深入學習操作系統(tǒng)呢? 今天就這個問題開始,來談談操...
    tangsl閱讀 4,317評論 0 23
  • 7月18日具身認知 4:55-5:08聽 5:08-6:10第一遍寫-脫稿 6:15-6:42第二遍寫-邊聽邊記錄...
    zazabo閱讀 829評論 0 0
  • 她三十歲,人俏,白白的皮膚,細細的腰。不過,她命不好,先是生下傻閨女,再就是,二十九歲那年,丈夫死了。 后來,她選...
    Allie__閱讀 653評論 2 8

友情鏈接更多精彩內容