操作系統中多個易混淆的概念

線程和進程

進程 線程
根本區別 進程是操作系統資源分配的基本單位 線程是任務調度和執行的基本單位
開銷方面 每個進程都有獨立的代碼和數據空間(程序上下文),程序之間的切換會有較大的開銷 線程可以看做輕量級的進程,同一類線程共享代碼和數據空間,每個線程都有自己獨立的運行棧和程序計數器(PC),線程之間切換的開銷小
內存分配方面 系統在運行的時候會爲每個進程分配不同的內存空間 除了CPU外,系統不會爲線程分配內存(線程所使用的資源來自其所屬進程的資源),線程組之間只能共享資源
所處環境 操作系統中能同時運行多個進程(程序) 在同一個進程(程序)中有多個線程同時執行(通過CPU調度,在每個時間片中只有一個線程執行)
包含關係 沒有線程的進程可以看做是單線程的,如果一個進程內有多個線程,則執行過程不是一條線的,而是多條線(線程)共同完成的 線程是進程的一部分,所以線程也被稱爲輕權進程或者輕量級進程

線程之間在數據空間、代碼和內存空間方面都是共享的。

中斷與異常

程序的執行往往不只是按順序執行那麼簡單,一些異常和中斷則會打斷順序執行的程序流,轉而進入一條完全不同的執行路徑。

中斷 異常
來源 由外部設備產生 異常由CPU內部產生,與指令有關
原因 有設備要爲CPU提供服務 異常根據產生的原因和嚴重性可以分爲如下三類,錯誤(Fault):由某種錯誤情況引起,一般可以被錯誤處理程序糾正。 陷阱(Trap):指在執行了一條特殊指令後引起的異常。陷阱是有意的異常,陷阱最重要的用途是在用戶和內核之間提供一個像過程一樣的接口(即系統調用)。 終止(Abort):指嚴重的不可恢復的錯誤,將導致程序終止。
特點 會保留現場

在這裏插入圖片描述

同步和異步

同步和異步是描述網絡中通信模式的概念。

同步:進行交互的雙方步調必須一致,即發送方發送數據A給接收方後,必須收到來自接收方對數據A的確認之後,纔會再發送數據B。
異步:進行交互的雙方步調不是必須-致,即發送方發送數據A給接收方後,不必收到接收方對數據A的確認即可發送數據B。

可見異步通信的效率要高於同步通信,因爲異步通信的發送方端不需要等待確認之後再發送後續數據。

阻塞和非阻塞

阻塞和非阻塞用來描述進程處理調用的方式,在網絡通信中主要指網絡套接字Socket的阻塞和非阻塞方式,而Socket的實質也就是I/O操作。

阻塞:就是線程在執行IO操作獲取數據時,這個IO可能會需要一定的時間才能等到數據返回,然後才能接着執行下面的命令。那麼,此時,這個線程的等待狀態我們就把它稱爲阻塞。沒有充分利用起cpu的資源。
什麼是非塞:還是這個線程在進行IO操作時,無需等待數據的返回,可以接着往下執行代碼命令。cpu資源充分利用。

Socket阻塞調用方式:調用結果返回之前,當前線程從運行狀態被掛起(掛起,這個線程就沒法用了),一直到調用結果返回之後,才進入就緒狀態,獲取CPU後進入執行態執行。
Socket非阻塞調用方式:如果調用結果不能馬上返回,當前線程也不會掛起,而是立即返回執行下一個調用。

併發和並行

併發指的是程序的結構,“並行指的是程序運行時的狀態。

並行(aralle):指在同一時刻,有多條指令在多個處理器上同時執行。所以無論從微觀還是從宏觀來看,二者都是一起執行的。單線程永遠無法達到並行狀態。要達到並行狀態,最簡單的就是利用多線程和多進程。
在這裏插入圖片描述
併發(concurrency):指在同一時刻只能有一指令執行, 多個進程指令被快速的輪換執行,使
得在宏觀具有多個進程同時執行的效果,但在微觀上並不是同時執行的,只是把時間分成若干段,使多個進程快速交替的執行。
當我們說這個程序是併發(concurrency) 的,實際上,這句話應當表述成“這個程序採用了支持併發的設計。正確的併發設計的標準是:使多個操作可以在重香的時間段內進行。比如兩個函數(例如一個是處理行情的函數,一個是處理交易的函數)從始至終,在任何一個時間點上都只有一段代碼在執行,但是,由於taskl和task2在重疊的時間段內執行,所以這是一個支持併發的設計。與並行不同,單核單線程能支持併發。

在這裏插入圖片描述

其他概念

多核(Multi-Core):是指在一片處理器中包含兩個或兩個以上的獨立的內核,可以在單位時間內同時處理多個線程。

超線程:每個單位時間內,CPU只能處理一個線程(Thread)。除非有兩個核心處理單元,否則要想在單位時間內處理超過一個的線程是不可能的。
超線程HT(Hyper-Threading)技術是在單個核心處理單元中集成兩個邏輯處理單元,也就是一個實體內核(共享的運算單元),兩個邏輯內核(有各自獨立的處理器狀態),從而可以在單位時間內處理兩個分別進行整數和浮點運算的線程,模擬雙內核運作。

通信:是指進程之間的信息交換。 程間通信的方式 :信號(signal)通信機制、管道(pipeline)通信機制、消息傳遞(message passing)通信機制、信號量(semaphore)通信機制、共享主存(shared memory)通信機制

死鎖:在一組進程中,每個進程都等待被該組進程中其他進程所佔有的資源,從而無限期陷入僵持的局面,這種現象稱爲死鎖。(ps:產生死鎖的必要條件,處理死鎖的基本方法)。

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