1.4.2 操作系統功能的實現模型
操作系統本身是一組程序,像其他程序一樣也在處理器上執行,那么,操作系統程序是否組織成進程?它是如何控制和怎樣執行的呢?下面來討論這個問題。從操作系統的執行方式來看,可以把它分成:非進程內核模型、OS功能(函數)在用戶進程內執行的模型和OS功能(函數)作為獨立進程執行的模型3種。
1.非進程內核模型
許多老式操作系統的實現采用非進程內核模型,即操作系統的功能都不組織成進程來實現,如 圖1-2所示,該模型包括一個較大的操作系統內核程序,進程的執行在內核之外。當中斷發生時,當前運行進程的上下文現場信息將被保存,并把控制權傳遞給操作系統內核。操作系統具有自己的內存區和系統堆棧區,用于控制過程調用和返回。它將在核心態執行相應的操作,并根據中斷的類型和具體的情況,或者是恢復被中斷進程的現場并讓它繼續執行,或是轉向進程調度指派另一個就緒進程運行。
圖1-2 非內核進程模型
2.OS功能在用戶進程內執行的模型
小型機和工作站操作系統(如UNIX等)往往采用OS的所有功能在用戶進程內執行的模型,如圖1-3所示,在這種實現模型中,大部分操作系統功能組織成一組例行程序供用戶程序調用,認為操作系統例程與用戶進程是上下文相關的,操作系統的地址空間被包含在用戶進程的地址空間中;因而,操作系統例行程序也在用戶進程的上下文環境中執行。圖1-4給出了OS的所有功能在用戶進程內執行的模型中的進程映像,它既包含進程控制塊、用戶堆棧、容納用戶程序和數據的地址空間等,還包括操作系統內核的程序、數據和系統堆棧區。
當發生一次中斷或系統調用后,處理器狀態將被置成內核模式,控制從用戶進程手中被剝奪并傳遞給操作系統例行程序。此時,發生了模式切換,模式上下文(現場)信息被保存,但是進程上下文切換并沒有發生,操作系統仍在該用戶進程中執行,提供單獨的內核堆棧用于管理進程在核心態下執行時的調用和返回,操作系統例行程序和數據放在共享地址空間,且被所有用戶進程共享。
圖1-3 OS 的功能在用戶進程內執行的模型
圖1-4 OS 的所有功能在用戶進程內執行模型的進程映像
當操作系統例程完成了工作之后,如果讓當前進程繼續運行的話,就可以做一次模式切換來恢復執行原先被中斷的用戶進程。這種技術提供了不必要通過進程上下文切換就可以中斷用戶進程來調用操作系統例行程序的手段。如果發生進程切換,控制就被傳遞給操作系統的進程切換例行程序,由它來實現進程切換操作,把當前進程的狀態置為非運行狀態,而指派另一個就緒進程來占有處理器運行。需要指出的是,一些系統中進程切換例行程序是在當前進程中執行的,而另一些系統則不是。
3.OS功能作為獨立進程執行的模型
OS 功能作為獨立進程執行的模型把操作系統組織成一組系統進程、即操作系統功能是這些系統進程集合運行的結果,這些系統進程也稱為服務器或服務器進程,于是與用戶進程或其他服務器進程之間構成了Client/Server 關系,Windows 2000/XP采用了這種結構。如圖1-5所示,除了極少部分功能在內核模式下運行,大部分操作系統功能被組織在一組分離的獨立進程內實現,這組進程在用戶模式下運行,而進程切換例行程序的執行仍然在進程之外。
圖1-5 OS 功能作為獨立進程執行的模型
這一實現模型有很多優點。首先,它采用了模塊化的操作系統實現方法,模塊之間具有最少和簡潔的接口。其次,大多數操作系統功能被組織成獨立的進程,有利于操作系統的實現、配置和擴充,如性能監控程序用來記錄各種資源的利用率和系統中用戶進程的執行速度,由于這些程序并不提供給進程特別的服務,僅僅被操作系統調用,把它設計成一個服務器進程,便可賦予一定的優先級,夾在其他進程中運行。最后,這一結構在多處理器和多計算機的環境下非常有效,一些操作系統服務可指派到專門處理器上執行,有利于系統性能的改進。
· | 2022考研復試聯系導師有哪些注意事 | 04-28 |
· | 2022考研復試面試常見問題 | 04-28 |
· | 2022年考研復試面試回答提問方法有 | 04-28 |
· | 2022考研復試怎么緩解緩解焦慮心態 | 04-27 |
· | 2022年考研復試的訣竅介紹 | 04-27 |
· | 2022年考研復試英語如何準備 | 04-26 |
· | 2022年考研復試英語口語常見句式 | 04-26 |
· | 2022年考研復試的四個細節 | 04-26 |
· | 2022考研復試準備:與導師及時交流 | 04-26 |
· | 2022考研復試面試的綜合技巧 | 04-26 |