多道程式設計指的是允許多個程式同時進入一個計算機系統的主存儲器并啟動進行計算的方法。也就是說,計算機記憶體中可以同時存放多道(兩個以上互相獨立的)程式,它們都處于開始和結束之間。隻要有一個程式或任務可以執行,cpu就不會空閑。
但是不能提供與計算機系統直接互動的能力。
分時系統(多任務)是多道程式設計的延伸,在分時系統中,雖然cpu還是通過在作業之間的切換來執行多個作業,但是由于切換頻率很高,使用者可以在程式運作期間與之進行互動。
分時是指多個使用者分享使用同一台計算機。多個程式分時共享硬體和軟體資源。分時作業系統是指在一台主機上連接配接多個帶有顯示器和鍵盤的終端,允許多個使用者通過主機的終端以互動方式使用計算機,共享主機中的資源。
共享需要一種互動式計算機系統,它能提供使用者和系統之間的直接通信。
分時允許許多使用者同時共享計算機,每個使用者隻要少量cpu時間,随着系統從一個使用者切換到另一個使用者,每個使用者會感覺到整個系統隻為自己所用。
裝到記憶體并執行的程式通常被稱為程序(process),當程序執行時,通常他隻執行較短的一段時間,,此時他并未完成或者需要進行IO操作。由于互動IO通常按人的速度來運作,會運作很長時間,例如每秒5個字元的輸入速度對計算機相當的慢了。使用者互動輸入時,系統為了不讓cpu空閑,會将cpu 切換到其他使用者的程式。
分時和多道程式設計需要在存儲器中同時儲存有幾個作業。由于主存較小,通常在開始将作業存儲在磁盤的作業池中。作業排程(job scheduling)按照一定的算法,從作業池或後備隊列中選取某些作業調入記憶體,并為它們建立程序、配置設定必要的資源。
在分時作業系統中,作業系統必須保證合理的響應時間,這需要交換即程序在記憶體與磁盤之間的來回轉移來實作。更常用的方法是使用虛拟記憶體(virtual memory),虛拟記憶體允許将一個執行的作業不完全放在記憶體裡,且他可以比實體記憶體大。還有,虛拟記憶體将記憶體抽象成一個 龐大且統一的存儲數組,将使用者索了解的邏輯記憶體(logical memory)與真正的實體記憶體差別開來。
現代作業系統是中斷驅動的。如果沒有程序可執行,沒有I/O裝置可服務,沒有使用者可響應,那麼作業系統就會安靜的等待事件的發生。事件總是由中斷或陷阱引起。陷阱或異常是一種軟體中斷,由于出錯比如除數為零或者源于使用者程式的一個特别請求(完成作業系統服務)。對每一種中斷,作業系統中不同的代碼段決定将要采取的動作。
采用共享,許多程序可能會受到一個程式的漏洞的不利影響,是以作業系統的設計必須保證一個錯誤的程式不會造成其他程式執行錯誤。
為保證作業系統的正常執行,必須區分作業系統代碼和使用者定義的代碼。可以采用的方法是提供硬體支援以允許區分各種執行模式。
計算機硬體中增加一個稱為模式位(mode bit) 的位以表示目前模式:監督程式模式0和使用者模式1.有了模式位就可以區分作業系統和使用者分别執行的任務。
雙重模式作業系統為保護作業系統和使用者程式不受錯誤使用者程式影響的手段。實作方法是:将能引起損害機器的指令設為特權指令(privileged instruction),使用者模式執行這些指令是非法的,并将其以陷阱的形式通知作業系統。
切換到使用者模式就是一個特權指令,其他的例子包括I/O控制、定時器管理,中斷管理。
當CPU運作于核心模式時,一切程式都可運作.任務可以執行特權級指令,對任何I/O裝置有全部的通路權,還能夠通路任何虛位址和控制虛拟記憶體硬體.這種模式對應80×86的ring0層,作業系統的核心部分,包括裝置驅動程式都運作在該模式.
系統調用把應用程式的請求傳給核心,調用相應的的核心函數完成所需的處理,将處理結果傳回給應用程式。系統調用通常采用陷阱到中斷向量的一個指定位置的方式。
為確定系統對cpu的控制、防止程式進入死循環或不調用系統服務,并且不将控制全傳回到作業系統。為實作之一目标,可使用定時器。系統在将控制權交給使用者之前,應確定設定好計時器以便産生中斷。計時器産生中斷,控制權自動交給作業系統。