標籤:
微核心的概念與單一核心的概念是相互對立的。單一核心,一般是將系統的主要核心組件全部在核心實現。例如,記憶體管理器、進程管理器和I/O管理器等。可以想象,這樣設計的核心各組件之間的關聯很大,也就是常說的耦合性很大,不利於模組化設計。但優點也顯而易見,就是速度快。各組件之間的通訊全部在核心模式下完成,沒有進程間的切換,也沒有從使用者模式到核心模式的切換。典型的單一核心的作業系統就是Linux作業系統。
和單一核心相反,微核心定義,作業系統的主要組件(例如,記憶體管理器、進程管理器和I/O管理器)運行在獨立的進程中,它們有自己私人的地址空間,在組件之上是微核心提供的一組服務原語。原語是通過處理序間通訊組成的,頻繁的進程間通訊需要以消耗昂貴的CPU時間為代價。而這種代價,換來的是作業系統核心模組的耦合性降低。例如,如果想改變進程模組中進程調度的演算法,只需更換進程調度模組,保持原有的原語介面。而在單一核心的作業系統中,各個模組的資料結構緊密結合,牽一髮而動全身,即有一個地方稍有改動,則需要進行較大的改動。
Windows NT在設計之初,曾考慮設計成為一個純粹的微核心作業系統。Windows的所有程式,全部依賴於Win32核心子系統的3大模組,即Kernel32.dll、User32.dll、Gdi32.dll。其中,User32.dll負責對視窗訊息的分發處理等,GDI32.dll負責對視窗的圖形操作。以前這部分的實現完全是在使用者模式下實現的,而在Windows NT 4.0之後,這兩個dll的核心代碼被放進核心模式下的Win32k.sys,同時也保留了使用者模式下的原有的dll。這使得User32.dll和Gdi32.dll變得很小,它們只是負責調用核心模式下的Win32k.sys。這樣提高了Windows的繪製圖形的效率。因此,Windows能在眾多作業系統中,圖形能力表現得非常出色。
由此可以看出,Windows不是純粹的微核心系統,但它在核心的各個組件,達到了相對小的耦合性,同時在效率上克服了微核心效率低的特點。
windows與核心