天天看點

《Cisco IOS XR技術精要》一1.3 作業系統概念

本節書摘來自異步社群《cisco ios xr技術精要》一書中的第1章,第1.3節,作者 【美】mobeen tahir , mark ghattas , dawit birhanu , syed natif nawaz,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

cisco ios xr技術精要

計算機系統,包括路由器之類的嵌入式系統,都會帶有一個負責向應用提供服務的作業系統。作業系統還提供了協調程序活動和通路硬體資源(如記憶體、網絡接口、硬碟)等重要功能。圖1-1給出了作業系統、應用,以及硬體資源之間的邏輯關系圖。

《Cisco IOS XR技術精要》一1.3 作業系統概念

作業系統基本功能

作業系統為應用提供了多種多樣的服務。可提供的基本功能包括程序排程、中斷處理、記憶體管理、程序間通信,以及常見例行程式(常見庫)。本節将對作業系統的這些基本功能做更詳細的介紹。

1.程序排程

所謂程序(process),是指在具有執行多程式執行個體能力的系統上運作的軟體程式執行執行個體。一個程式可并發生出多個程序。在一個多任務處理的作業系統上,多個程序可以分時請求cpu資源,使使用者感覺多個程序是同時進行處理的。在多任務處理系統中,程序很可能需要在完成其目前任務之前交出對cpu的控制。

在協同多任務處理(cooperative multitasking)系統中,程序隻有在完成執行任務或等待任務事件時才會主動地交出cpu控制權。這可能會導緻其他程序在等待目前程序執行完畢的期間造成cpu餓死。

另一方面,搶占多任務處理(preemptive multitasking)系統中,目前運作的程序有可能會被強制交出cpu控制權。這種行為被稱為搶占(preemption),有可能發生在高優先級程序準備就緒或目前程序已經運作滿一定的時長的情況下。

當作業系統對程序進行搶占時,在向其他程序交出控制權之前保留程序狀态是非常重要的,這樣可以保證程序在重獲cpu控制權時可以恢複之前的操作。内容交換(context switching)機制可以使程序在被搶占和重獲控制的時候執行儲存和恢複操作。

大多數今天的作業系統支援并發運作同一程序的多個執行個體,這種類型的作業系統被稱為多線程(multithread)系統。線程是程序中的最小執行單元。

2.中斷處理

中斷(interrupt)是一種從硬體或軟體發出的信号,用來訓示cpu必須立刻進行處理。中斷行為會導緻作業系統挂起目前運作程序,轉而去處理新的例行程式或程序。運作着的程序同樣可以執行一個中斷指令并觸發中斷處理例行程式的内容交換行為。當運作重要例行程式時,作業系統會阻止某些中斷操作直至重要例行程式處理完畢。這種功能叫做中斷屏蔽(interrupt masking)。

3.記憶體管理

作業系統負責管理全部的系統記憶體,包括對程序的記憶體配置設定,以及確定程序不會損壞配置設定給其他程序的記憶體資料。記憶體保護(memory protection)機制用來阻止程序去通路未配置設定給自身的記憶體空間。使用記憶體保護功能,每個程序各自運作在自身的記憶體空間中。某個程序的缺陷或針對某個程序的惡意攻擊不會影響到其他程序。

在支援記憶體保護功能的作業系統中,程序間某些形式的通信可以使用共享記憶體(shared memory)來得到更好的處理。所謂共享記憶體,指的是可以由多個程序通路的記憶體資源。作業系統在共享記憶體區域執行讀或寫操作的程序之間提供了差異同步機制。

在單片式作業系統(monolithic operating system)中,所有程序共享相同的位址空間,而且不提供程序間的故障隔離機制。單片式系統具有更短的cpu周期,這是因為在記憶體通路、程序間通信、内容交換方面,單片式系統具有更低的負載,這适用于cpu資源密集和帶有少量代碼的簡單系統場景中。

在支援記憶體保護功能的作業系統中,os程序負責管理其他程序、記憶體以及其他被稱為核心(kernel)的系統資源,是以這種os也常被叫做基于核心的作業系統(kernel-based os)。核心也可以包含其他服務,取決于其實作方式。核心運作在系統外的單獨記憶體空間中,并且保護其不受核心外的其他程序引起的記憶體資料損壞。

非核心程序中的故障不會影響到核心以及其他程序。不過,核心程序中的故障将會影響所有應用。在微核心(microkernel)系統中,僅有關鍵性的核心os服務被放置在核心中。所有其他服務,包括裝置驅動器和網絡驅動器,都被放置在自身所屬的位址空間中。這種系統具有優秀的彈性,因為裝置或網絡驅動器内的故障将會自行控制而不會影響到核心或其他應用。裝置和網絡驅動器也可以在不重新開機整個系統的條件下完成單獨重新開機。

4.同步

當多個應用同時運作并試圖通路某個資源(例如硬碟)時,確定維護資料的完整性和資源的公平配置設定是非常重要的。網絡作業系統可提供多種機制來同步事件和資源通路。

5.程序間通信

由于許多程序不能使用記憶體來交換資料,是以運作在獨立的的位址空間中。作業系統為這些程序提供了程序間通信(ipc)機制。ipc通信同樣可以在運作于主rp上的程序和運作于裝置不同元件中的程序之間使用,包括線卡和電源。

6.動态連結庫

多個應用使用一組常用例行程式的例子是很常見的。當這些應用各自運作在受保護的記憶體位址空間中時,常用例行程式将在每個位址空間中被複制一次,這将造成記憶體空間的浪費。為了避免這種問題的發生,作業系統提供了一種共享常用例行程式的機制,稱作動态連結庫(dll)或libc(c标準庫)。該機制允許os僅将活動庫加載進裝置記憶體,并啟動不同的程序來共享相同的庫。這是一種健壯的錯誤控制和軟體子產品化機制。該機制還可允許常用代碼在不同應用之間進行共享。

7.可移植作業系統接口

可移植作業系統接口(posix)是一套用來規定核心api、線程接口、核心應用等技術的ieee規範。posix還定義了一緻性測試程式組。通過了測試程式的作業系統将被稱為posix一緻os。遵循posix規範的os被認為具有高度的靈活性,并可以為日後的特性或應用部署提供最大的可移植性。一款基于posix os規範開發的應用程式可以友善、輕松地移植到另一台符合posix規範的os上。

繼續閱讀