一些Windows系統的知識(未完待續)

來源:互聯網
上載者:User

這是最近看到的關於Windows系統的一些知識:

 

為了實現可移植性,Windows在設計時被設計為軟體分層的體繫結構,除了硬體抽象層(HAL),作業系統中的其他組件幾乎和硬體沒有關聯性。在移植過程中,只需要修改相關的硬體抽象層以迎合新硬體即可。

 

Windows一直以來都有著一致的Win32 API介面,儘管各版本Windows的API實現 方法有所不同,但它們都保持著一貫的名稱和調用介面。體現了Windows的相容性。

 

使用者模式和核心模式的劃分設計,使得Windows擁有良好的健壯性和可靠性。所有使用者程式只能運行在特權層級低的使用者模式,所有錯誤操作都會被作業系統檢測到,並給出相應提示與建議。作業系統的核心代碼均運行與特區層級高的核心模式下。值得一提的是,任何涉及操作硬體的操作,應用程式都無法在使用者模式下完成。API是作業系統提供給應用程式的唯一介面,當應用程式想要訪問硬體裝置時,必須通過API向作業系統提出申請,只有當校正參數合法時,作業系統才會通過應用程式的請求許可。

 

作業系統核心只負責關於線程調度的工作,而系統的其他諸如記憶體管理組件、進程管理組件等其他獨立於核心的,我們稱之為執行程式組件,他們都是獨立於核心而工作的組件。

 

Windows的I/O操作是基於非同步設計的,線程在發起一個I/O請求時,可以不等待這個I/O操作結束,就發起另外的I/O請求,最大限度的利用CPU的時間資源;同時也是基於多進程和多線程的,並且儘可能使多個任務並存執行,當核心進行線程調度時儘可能多的讓個線程保持看上去同時運行,而不是出於等待狀態,這樣可以將處理器的等待時間最小化,最大限度的發揮CPU的功能。

 

Intel x86架構的CPU分為4個特權層,Ring 0層到Ring 3層,其中,Ring 0層的特權最高,可以執行任意代碼,而Ring 3層只能執行有限的代碼。在Windows系統中,核心模式運行在Ring 0層,使用者模式運行在Ring 3層。這樣一來,核心代碼運行在核心模式下,可最大限度防止系統核心組件受到惡意攻擊。

 

和大多數現代作業系統一樣,Windows作業系統的總體設計也是居於分層設計思路的,每層由若干個組件組成,。作業系統作為一個整體,依賴於上層組件對下層組件向下一層組件的調用,而且不同的組件都有其固定的的介面,靠近上層的組件將任務轉化成對底層組件的調用,因為底層組件具有更高的操作許可權。系統的各個組件或者模組是通過訊息進行通訊的。

 

Windows系統採用了微核心操作以系統結構,它基於C/S模式,採用物件導向技術,應用“機制與策略分離原理”,擁有足夠小的核心。能有效實現進程(線程)管理,低級儲存空間管理和中斷與陷入處理等功能,在提高系統可擴充性,增強系統可靠性,可移植性,融入了物件導向技術,同時還提供了對分布式系統的支援。

 

是Windows作業系統的簡化結構:

 

 

可以看出,在使用者模式下,應用程式調用各個子系統的API介面,而其他子系統通過Win32 子系統的介面來實現。Win32子系統將API函數轉化為Native API函數,由Native API介面將這種調用轉化為系統服務函數的調用,穿過了使用者模式和核心模式的介面,將操作(調用)請求通過系統服務函數(位於ntdll.dll中)傳遞到系統核心,在通過系統核心向硬體發生相關指令完成操作。

每當應用程式需要用到核心或核心的擴充模組所提供的的服務時,應用程式通過硬體指令從使用者模式切換到核心模式中,當系統核心完成了所請求的服務以後,控制權又回到了使用者模式。

 

核心模式下,由I/O管理器,對象管理器,進程管理器,虛擬記憶體管理器,隨插即用管理器,安全引用管理器,組態管理員(註冊表)緩衝管理器,本地程序呼叫(LPC),檔案系統以及其他組件組成的執行體組件,提供了大量的核心功能提供驅動程式調用。核心組要負責進程和線程的調度,中斷和異常處理,同步對象以及各種同步機制。而驅動程式通過硬體抽象層(HAL)簡介與硬體進行相關操作。

執行體組件和和核心層位於同一個二進位模組,稱為ntoskrnl.exe,是核心的基本模組。核心層實現作業系統的基本機制,所有的策略決定留給執行體。應用程式通過ntdll.dll切換到核心模式下的執行體API函數中,以調用內系統中的服務。Ntdll.dll是串連使用者模式代碼和核心模式系統服務的橋樑。

 

在Win32 系統中,核心代碼可以完全訪問當前進程的4GB虛擬位址空間(0X00000000~0XFFFFFFFF),而使用者代碼只能訪問地段的2GB虛擬位址(0X00000000~0X7FFFFFFF,若啟動核心開關的話可訪問3GB)。其中,2GB以下稱為進程地址空間,2GB以上稱為系統地址空間。而實際上,在兩者之間有一快特殊的64KB地址空間,位於0X7FFF0000~0X7FFFFFFF之間,在兩種模式下均不可訪問。

 

Windows的微核心位於核心模組ntknrl.exe中的下層部分(上層部分為執行體),最接近於HAL層。除了負責進程、線程的調度,中斷與異常處理外,它還負責同步處理器之間的行為,讓系統中的處理器儘可能的忙和高效,以最佳化系統的效能。

Windows的核心實現了搶佔式線程調度機制,按照優先順序順序將線程分配到處理器上,並且允許高優先順序的線程中斷或者搶佔低優先順序的線程。

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.