《Windows DIY》第一章 概述

2021-06-19 13:58:25 字數 3355 閱讀 4835

作業系統(英文:operating system,縮寫:os)是管理計算機硬體與軟體資源的電腦程式,同時也是計算機系統的核心與基石。作業系統需要處理如管理與配置記憶體、決定系統資源供需的優先次序、控制輸入與輸出裝置、操作網路與管理檔案系統等基本事務。[1]

1.1什麼是作業系統

1.1.1沒有作業系統的時代

在介紹什麼是作業系統前,先來看一下沒有作業系統時的情形。

假如我們希望從硬碟上讀取乙個檔案(路徑已經指定),首先要通過查分割槽表和檔案表得到檔案所在扇區,然後控制硬碟去訪問指定的扇區將資料讀取到記憶體,當然這些表也在硬碟中,首先得按照檔案系統的約定去操作硬碟讀取相應扇區以訪問這些表。這一過程繁瑣而又無聊,並且帶來了許多不必要的麻煩:首先程式設計師需要了解各種硬體是如何工作的,還要編寫**去控制它們,另外,不是所有硬體都像硬碟那樣遵循一定的標準,這種情況下等於在一定程度上軟體"綁架"了硬體--程式只能在符合自己要求的硬體上工作。

沒有作業系統的時候,計算機通常處於被軟體「霸佔」的狀態:乙個程式佔據著計算機的所有資源,如果想要執行另外的程式,除非兩個程式間存在事先約定好的介面,不然只能由人工操作。這在幾十年前計算機十分昂貴僅用於特定任務並有專人維護時並無大礙。但在計算機已經微型化的今天是完全不可想象的。

1.1.2作業系統的任務和功能

在上一章中,我們已經看到了缺乏作業系統時的困境。在沒有作業系統的時候,所有軟體都必須和硬體直接打交道,這導致了一系列的問題。因此,人們設計了一種叫作業系統的軟體,由它負責管理各類硬體,使得其它程式從這些繁重的任務中解脫出來(這時程式執行在作業系統上,只要程式符合作業系統的規範即可正常執行,無需過於在意硬體)。後來,作業系統的功能逐漸拓展,擁有了任務排程功能,可以管理執行在作業系統中的程式,最終實現「多工」(多個程同時在乙個作業系統上執行)。

對於現代的pc或者伺服器上的作業系統,通常具備以下任務和功能:

a.硬體管理:

a1記憶體管理

a2中斷管理

a3外部裝置(音效卡、顯示卡、網絡卡、硬碟等「不屬於cpu本身的硬體資源,通常通過驅動程式擴充套件)

b.任務管理

b1任務排程

c.系統呼叫(將涉及底層硬體交由作業系統實現的功能通過系統呼叫的形式提供給第三方應用程式使用

1.2windows nt

windows是目前主流的pc和中小型伺服器作業系統,市場占有率超過95%,自從windows xp之後,pc與伺服器版本均基於windows nt核心。核心是作業系統的核心元件,負責實現作業系統最核心的功能。windows nt 提供了上一節所述的全部功能,以及一套影象使用者介面(gui),一套檔案系統(fs),其將任務抽象為程序和執行緒來管理,並且提供了一套應用程式程式設計介面(api,其本質就是系統呼叫)**用程式使用。

更重要的是,windows利用處理器的許可權管理、虛擬記憶體實現了一套安全機制,以實現對單一應用程式的控制,使其無法直接控制硬體或是干擾其它程式的執行。

上個世紀,microsoft windows nt被定義為伺服器和工作站使用的系統,而pc使用的系統則為基於dos演化而來的另乙個系列(大家熟悉的windows 95、98皆屬於此)。進入21世紀後,兩個系列合二為一。大多數熟知的windows版本和「nt版本號」對應關係如下:

版本                                        版本號                            發布時間 

windows xp                           5.1                                   2023年

windows server 2003            5.2                                   2023年

windows vista/server 2008   6.0                                   2023年/2023年

windows 7/server2008r2     6.1                                   2023年

windows 8/server2012          6.2                                   2023年

windows 8.1/server2012r2  6.3                                   2023年

1.3windows nt的系統架構

這一節簡單介紹windows nt的系統架構和組成,其基本架構如圖【1-1】所示:

【圖1-1】

從圖中不難看出,windows nt系統首先可以被分為兩部分:工作在使用者層的一系列dll和工作在核心層的系統核心以及其它元件。前者向使用者應用程式提供了一套統一的文件化的應用程式程式設計介面(api)來呼叫系統功能,其執行在cpu的非特權模式下(無法執行特權指令)。後者則工作在cpu的特權模式下(可以執行特權指令)。

從整個系統來看,系統核心(

硬體抽象層(hal.dll)負責將一些硬體「抽象地」提供給核心,以遮蔽不同硬體間的差異,它也會直接控制某些硬體。

大部分與硬體相關的管理工作則由裝置驅動程式完成,裝置驅動程式在工作的時候與核心的裝置管理器(未列出)協同,windows nt實現了一套裝置驅動程式程式設計框架和模型,並且提供了大量與基礎硬體相關的裝置驅動程式。

在核心層之上,則是一系列的系統dll(動態鏈結庫),其中最「底層」的是ntdll.dll和user32.dll,它們的任務是直接將請求通過系統服務呼叫-分發機制傳遞給核心,其中後者只是負責實現和gui相關的功能。這兩個dll通過匯出函式的形式向外界提供了一系列的功能,但是這些函式是未文件化的,被稱為native api(原生api),未文件化的意思即為這些api不可在程式設計時直接呼叫(未在windows sdk的標頭檔案中定義),並且無法保證這些api不會隨著系統的變化而發生改變。

最後位於最上層的是user32.dll和comctl32.dll,它們向使用者應用程式提供統一的程式設計介面(api),當然這些api是文件化的,前者提供的是那些基礎的api(如記憶體管理、檔案管理),後者則和gui相關。

(ps:其實這些dll間的呼叫關係比圖中更加複雜,並且為了簡化邏輯這裡還省略了gid32.dll)。

通過本節可以了解到,當乙個使用者應用程式呼叫api請求系統為其實現某個功能後,首先它們根據功能需求呼叫了native api,natibe api將請求**給系統核心,系統核心則負責將請求直接完成或交給某個核心中的元件去實現。

通過這套機制,應用程式無法直接控制硬體,並且在請求的路徑上會經過多次安全檢查,這是windows nt系統安全的基石。

另外,並不是所有的api都會最終通過native api呼叫核心中的功能,當這個api只需要返回位於使用者程序空間記憶體中的某些資料時,它就不會這樣做。

引用:1.中文維基百科:作業系統 



第一章 概述

1.模擬量輸入,輸出,開關量 閃爍 輸入,輸出及資料通訊 2.模擬量大多為開關量 3.mcu前做為前端採集器,mcu 感測器 4.開發步驟 1 i o分析 2 mcu造型 3 評估系統及相關硬體 4 設計硬體系統 5 硬體系統模組測試 6 軟體系統設計 7 系統測試 8 進一步工作 5.交叉編譯 6...

第一章 概述

modelsim電子系統分析與 于斌,公尺秀傑主編 電子工業出版社 本章內容 1,ic設計流程 2,modelsim的功能和作用 3,modelsim基本流程 1.1ic設計與modelsim ic設計流程包括兩類 正向設計 top down 和反向設計 bottom up 前者指的是從最高層的功能...

第一章 概述

網路協議通常分為不同層次進行開發,tcp ip一般認為有四層,從上到下分別是 應用層 處理應用程式,一般tcp ip提供的通用的應用程式有telnet 遠端登入 ftp 檔案傳輸協議 smtp 簡單郵件傳輸協議 snmp 簡單網路管理協議 運輸層 為兩台主機上的應用程式提供端到端的通訊,在運輸層主要...