python之併發程式設計儲備知識

2021-10-23 12:42:00 字數 2100 閱讀 9704

1.3、作業系統的作用

2、多道技術

1.1、定義

作業系統就是乙個協調、管理和控制計算機硬體資源和軟體資源的控制程式

作業系統位於計算機硬體與應用軟體之間,本質也是乙個軟體。作業系統由作業系統的核心(執行於核心態,管理硬體資源)以及系統呼叫(執行於使用者態,為應用程式設計師寫的應用程式提供系統呼叫介面)兩部分組成,所以,單純的說作業系統是執行於核心態的,是不準確的

1.2、作業系統主要組成部分

1.2.1、驅動程式

最底層的、直接控制和監視各類硬體的部分,它們的職責是隱藏硬體的具體細節,並向其他部分提供乙個抽象的、通用的介面
1.2.2、核心
作業系統之最核心部分,通常執行在最高特權級,負責提供基礎性、結構性的功能
1.2.3、支承庫(亦作「介面庫」)
是一系列特殊的程式庫,它們職責在於把系統所提供的基本服務包裝成應用程式所能夠使用的程式設計介面(api),是最靠近應用程式的部分。例如,gnu c執行期庫就屬於此類,它把各種作業系統的內部程式設計介面包裝成ansi c和posix程式設計介面的形式
1.2.4、外圍
所謂外圍,是指作業系統中除以上三類以外的所有其他部分,通常是用於提供特定高階服務的部件。例如,在微核心結構中,大部分系統服務,以及unix/linux中各種守護程序都通常被劃歸此列
1.3、作業系統的作用
1、隱藏醜陋複雜的硬體介面,提供良好的抽象介面

2、管理、排程程序,並且將多個程序對硬體的競爭變得有序

2.1、定義
多道技術中的多道指的是多個程式,多道技術的實現是為了解決多個程式競爭或者說共享同乙個資源(比如cpu)的有序排程問題,解決方式即多路復用,多路復用分為時間上的復用和空間上的復用。

現在的主機一般是多核,那麼每個核都會利用多道技術

有4個cpu,執行於cpu1的某個程式遇到io阻塞,會等到io結束再重新排程,會被排程到4個cpu中的任意乙個,具體由作業系統排程演算法決定

2.2、空間上的復用
空間上的復用: 復用記憶體的空間

1、多道/個程式的**都存入記憶體

2、記憶體空間是物理隔離的

將記憶體分為幾部分,每個部分放入乙個程式,這樣,同一時間記憶體中就有了多道程式

如記憶體中同時有多道程式

2.3、時間上的復用

時間上的復用: 復用cpu的時間

cpu的切換

1、任務的執行遇到io阻塞 =

> 提公升效率

2、任務占用cpu時間過長 =

> 降低效率

復用乙個cpu的時間片

當乙個程式在等待i/o時,另乙個程式可以使用cpu,如果記憶體中可以同時存放足夠多的作業,則cpu的利用率可以接近100

%,類似於我們小學數學所學的統籌方法。(作業系統採用了多道技術後,可以控制程序的切換,或者說程序之間去爭搶cpu的執行許可權。這種切換不僅會在乙個程序遇到io時進行,乙個程序占用cpu時間過長也會切換,或者說被作業系統奪走cpu的執行許可權)

強調: 遇到io切,占用cpu時間過長也切,核心在於切之前將程序的狀態儲存下來,這樣才能保證下次切換回來時,能基於上次切走的位置繼續執行

重點:

1、如果我們的核心目標是想讓多個任務併發起來:那麼無論是遇到io還是沒有遇到io都應該讓cpu在多個任務之間切換起來

2、如果我們的核心目標是想讓多個任務的執行效率提公升:我們應該只控制乙個任務在遇到io情況下切換到另外乙個任務

2.4、多道技術的總結

切換+儲存狀態

切換(cpu)分為兩種情況

1、當乙個程式遇到io操作的時候,作業系統會剝奪該程式的cpu執行許可權

作用:提高了cpu的利用率 並且也不影響程式的執行效率

2、當乙個程式長時間占用cpu的時候,作業系統也會剝奪該程式的cpu執行許可權

弊端:降低了程式的執行效率(原本時間+切換時間)

python之併發程式設計

1.什麼是程序?程序是指正在執行的乙個程式或任務,而負責執行任務的是cpu 2.程序和程式的區別 程式只是一段 程序是指程式執行的過程。3.並行與併發 併發 偽並行 看起來是同時執行。單個cpu 多道技術就可以實現併發。並行 同時允許,只有具備多個cpu才能實現並行。單核下,可以利用多道技術。多核下...

python 併發程式設計基礎之 程序

目錄多道技術 基於單核情況下研究 併發與並行 程序程序的三個狀態 同步和非同步 建立程序的兩種方式 乙個計算機機房,一次只能被乙個卡片使用。缺點 cpu利用率最低。支援多使用者去使用乙個計算機機房。高速磁碟 提高檔案的讀取速度。優點 提高cpu的利用率 多個程式使用cpu時是序列。必須讓乙個程式結束...

python之併發程式設計 理論部分

管理控制協調計算機中硬體與軟體的關係.作業系統的作用?第乙個作用 隱藏了醜陋的硬體呼叫介面,為應用程式設計師提供呼叫硬體資源的更好,更簡單,更清晰的模型 系統呼叫介面 第二個作用 將應用程式對硬體資源的靜態請求變得有序化 阻塞 input read write sleep recv accept s...