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