多道程序系統
3.1 前置知識
- 並發:是偽並行,即看起來是同時運行就是並發。單個cpu+多道技術就可以實現並發,(並行也屬於並發)
- 並行:真正意義的同時運行
PS: 1. 並行肯定可以算作並發 2. 單核的計算機肯定不能實現並行,但是可以實現並發!
補充:我們假設單核就是一個核的CPU,同一時間只能進行一個任務操作,不需要計算CPU里面的內核數
3.2 多道程序設計技術
多道技術的目的就是單核實現並發效果
3.2.1 單道技術
單道技術,也可以稱之為串行
所謂多道程序設計技術,就是指允許多個程序同時進入內存並運行。即同時把多個程序放入內存,並允許它們交替在CPU中運行,它們共享系統中的各種硬、軟件資源。當一道程序因I/O請求而暫停運行時,CPU便立即轉去運行另一道程序。

在A程序計算時,I/O空閑, A程序I/O操作時,CPU空閑(B程序也是同樣);必須A工作完成后,B才能進入內存中開始工作,兩者是串行的,全部完成共需時間=T1+T2。
3.2.2 多道技術

將A、B兩道程序同時存放在內存中,它們在系統的控制下,可相互穿插、交替地在CPU上運行:當A程序因請求I/O操作而放棄CPU時,B程序就可占用CPU運行,這樣 CPU不再空閑,而正進行A I/O操作的I/O設備也不空閑,顯然,CPU和I/O設備都處於“忙”狀態,大大提高了資源的利用率,從而也提高了系統的效率,A、B全部完成所需時間<<T1+T2。
多道程序設計技術不僅使CPU得到充分利用,同時改善I/O設備和內存的利用率,從而提高了整個系統的資源利用率和系統吞吐量(單位時間內處理作業(程序)的個數),最終提高了整個系統的效率。
單處理機系統中多道程序運行時的特點:
(1)多道:計算機內存中同時存放幾道相互獨立的程序;
(2)宏觀上並行:同時進入系統的幾道程序都處於運行過程中,即它們先后開始了各自的運行,但都未運行完畢;
(3)微觀上串行:實際上,各道程序輪流地用CPU,並交替運行。
多道程序系統的出現,標志着操作系統漸趨成熟的階段,先后出現了作業調度管理、處理機管理、存儲器管理、外部設備管理、文件系統管理等功能。
由於多個程序同時在計算機中運行,開始有了空間隔離的概念,只有內存空間的隔離,才能讓數據更加安全、穩定。
除了空間隔離之外,多道技術還第一次體現了時空復用的特點,遇到IO操作就切換程序,使得cpu的利用率提高了,計算機的工作效率也隨之提高。
-
空間上的復用:
- 多個程序共用一套計算機硬件
-
時間上的復用:
- 利用其他任務的I/O操作帶來的CPU閑置時間來執行另一個任務,實現時間上的合理安排
- 在進行CPU切換的時候,都會將上一個未完成的任務狀態保存,方便下次執行時完美銜接
-
切換+保存狀態
'''
CPU切換分為兩種情況:
1. 當一個程序遇到I/O操作時,操作系統會剝奪該程序的CPU執行權限
案例:比如執行一個程序,當該程序遇到了I/O操作時,就會將CPU分配給另一個程序執行,在I/O操作完成后,又將CPU分配回去
作用:提高CPU利用率,並且也不影響程序的執行效率
2. 當一個程序長時間占用CPU的時候,操作系統也會剝奪該程序的CPU執行權限
案例:比如微信需要運行一個小時,用戶點擊了QQ,那么這個時候,CPU就會立即剝離微信的執行權限,轉而去執行QQ,當QQ執行完畢后,再將CPU分配給微信
作用:降低了程序的執行效率(原本時間+切換時間)
切換時間=獲取CPU資源程序執行時間+切換CPU資源時間
'''
3.3 多道批處理系統
20世紀60年代中期,在前述的批處理系統中,引入多道程序設計技術后形成多道批處理系統(簡稱:批處理系統)。
它有兩個特點:
(1)多道:系統內可同時容納多個作業。這些作業放在外存中,組成一個后備隊列,系統按一定的調度原則每次從后備作業隊列中選取一個或多個作業進入內存運行,運行作業結束、退出運行和后備作業進入運行均由系統自動實現,從而在系統中形成一個自動轉接的、連續的作業流。
(2)成批:在系統運行過程中,不允許用戶與其作業發生交互作用,即:作業一旦進入系統,用戶就不能直接干預其作業的運行。
批處理系統的追求目標:提高系統資源利用率和系統吞吐量,以及作業流程的自動化。
批處理系統的一個重要缺點:不提供人機交互能力,給用戶使用計算機帶來不便。
雖然用戶獨占全機資源,並且直接控制程序的運行,可以隨時了解程序運行情況。但這種工作方式因獨占全機造成資源效率極低。
一種新的追求目標:既能保證計算機效率,又能方便用戶使用計算機。 20世紀60年代中期,計算機技術和軟件技術的發展使這種追求成為可能。
