Mainframe的三個問題:
1.One job at a time
2.No interaction
3.CPU is often idle
首先要解決的問題自然是提升CPU的資源使用率,讓CPU在I/O的同時也不斷地在做計算,怎麼做?最直覺的方法自然是多放幾個program在系統裡,這樣當一個program在I/O的時候,其他的program就可以繼續的使用CPU,自然就提升了CPU的使用率,以這種概念設計的作業系統就稱為Multi-programming。
Multi-programming,意思是在系統中run多個program,為什麼要這麼做?因為可以把多個program之間的CPU跟I/O的時間overlap,理論上看起來很容易,但是要怎麼讓它overlap?電腦有I/O的device跟CPU,但是I/O device其實很單純,很被動,它需要CPU不斷地下指令跟監測它的狀況,才能完成一個I/O的動作,這樣還算多工嗎?
所以為了讓電腦系統能夠I/O跟CPU多工,第一個先決條件就是spooling,因為I/O很慢,假設要把1G的files從disk搬到memory中,這會花上很久的時間,但是這段時間CPU完全沒有involve在其中的必要性,這樣CPU才能真正的去進行其他的工作。
為了在計算過程中,CPU仍然能夠繼續做事情,CPU就必須要notified,也就是在搬完1G的files後,再去notified CPU,叫CPU回來完成剩下的事情,那要實現spooling,就需要interrupt這個機制。
Interrupt是作業系統中一個非常重要的term,它可以改變CPU執行的flow,也就是你可以隨時用interrupt打斷CPU正在執行的program。