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