1. 程式人生 > 實用技巧 >併發程式設計之基本理論

併發程式設計之基本理論

多道技術

cpu在執行一個任務過程中,若需要操作硬碟的指令,指令一旦發出,硬碟上的機械手臂滑動讀取資料到記憶體中,這一段時間,cpu需要等待,時間可能很短,但對於cpu來說已經很長很長,長到可以讓cpu做很多其他的任務,如果我們讓cpu在這段時間內切到去做其他任務,這樣cpu不就充分利用了嗎?這正是多道技術產生的技術背景.

將一個CPU變成多個虛擬的CPU的技術就稱之為多道技術。而多道技術又分為時間多路複用和空間多路複用

空間多路複用

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

時間多路複用

當一個程式在等待I/O,另一個程式可以使用cpu,如果記憶體中可以同時存放足夠多的作業,則cpu的利用率可以接近100%.(作業系統採用了多道技術後,可以控制程序的切換,或者說程序之間去爭搶cpu的執行許可權.這種切換不僅會在一個程序遇到io時進行,若一個程序佔用cpu時間過程也會切換,或者說被作業系統奪走cpu的執行許可權)

所以說, 多路複用最重要的是切換的狀態, 而切換的狀態又分為兩種情況

切換(CPU)分為兩種情況:
    1. 當一個程式遇到IO操作的時候, 作業系統會剝奪該程式的CPU執行許可權
        作用: 提高了CPU的利用率, 並且也不影響程式的執行效率

    2. 當一個程式長時間佔用CPU的時候, 作業系統也會剝奪該程式的CPU執行許可權
        作用: 降低了程式的執行效率(原本時間 + 切換時間)