一、層次結構
windows從總體上分為核心模式(kernel model)和使用者模式(user model)。談到作業系統的核心模式和使用者模式,一般會和cpu的特權層聯絡起來。cpu有多個特權層,例如,intel的386cpu就有4個特權層,從第0層到第3層。其中第0層的特權最高,也就是可以執行任意**,第3層特權最低,只能執行有限**。
windows將核心模式執行在cpu的第0層,將使用者模式執行在cpu的第3層。核心模式下執行的都是核心**,這些**是安全的,且不會受到惡意的攻擊。而執行在使用者模式下的應用程式是最不安全且容易受到攻擊的,所以應用程式許可權是受到限制的。如果應用程式進行一些諸如直接訪問物理記憶體的動作,需要向核心模式下元件提出請求。
windows作業系統每層有若干元件組成,其作為乙個整體,它的執行高度依賴於上層元件對下層元件的呼叫。每層元件都有固定的介面供上層呼叫,高層如果要進行更改許可權操作需要向底層提出請求。結構如圖所示:
windows作業系統被劃分為使用者模式和核心模式兩個部分。使用者模式下,應用程式呼叫其對應的子系統中的api。這些子系統除了win32,還有posix、os/2等,它們為了相容16位應用程式或其他系統應用程式而設計,都是通過呼叫win32子系統來實現的,但很少被用到。win32子系統將api函式轉化為native api。系統版本的變化只是native api的改變,並沒有修改win32,即沒有改變win32 api函式的名稱和引數,實現了對應用程式的相容。在native api中的函式呼叫被轉化為系統服務函式呼叫並進入核心模式,並進一步向下傳遞實現相應功能。
二、從應用程式到驅動程式
根據上面所述windows操作性的分層特性可知,應用程式對硬體操作的請求是從上而下一層層被交給硬體的。windows的設計者為簡化對不同裝置的操作,將所有的裝置都當作普通檔案看待,用操作檔案的方法來操作裝置。這一點與linux有很大相似之處。
常用操作有creatfile(),closehandle(),readfile(),writefile(),deviceiocontrol()等。以creatfile()為例描述硬體操作過程。
應用程式呼叫createfile() api後,createfile()會在native api中呼叫ntcreatefile()。ntcreatefile()會進入核心模式呼叫系統服務函式,該函式通過i/o管理器建立i/o請求包(i/o request package,irp)並傳遞給驅動程式。irp為windows驅動中重要資料結構。驅動程式根據irp判斷操作型別並呼叫相應的派遣函式(同linux中的介面函式)針對硬體抽象層進行操作。由於硬體抽象層由windows作業系統實現且遮蔽了底層硬體的細節,驅動開發者無需關心硬體細節而只需清除如何與硬體抽象層互動即可。
作業系統 記憶體分層體系
站在計算機內部,作業系統把cpu 磁碟 記憶體這三部分物理資源抽象成程序 檔案 位址空間,來給我們的應用程式使用。作業系統層次結構 硬體之上,應用程式之下。kernel 作業系統內部元件 包括 os kernel的特徵 計算機基本硬體結構 cpu 完成對整個程式 軟體 執行的控制。記憶體 放置程式的...
windows作業系統
1.檢視埠 netstat ano netstat ano find 2檢視程序 tasklist 3.刪除程序 tskill 4.開啟程序管理器 taskmgr 5.ping 6.ipconfig all 7.f 8 cd cd.9.mkdir rmdir linux rm rf 10.dir 列...
歷代Windows作業系統
1985 年windows 1.0 正式推出,相信一些老一輩計算機使用者應該熟悉吧?1987年10 月推出windows 2.0 比windows 1.0 版有了不少進步,但自身不完善,效果不好。1990年5 月windows 3.0 版推出,期間微軟繼 2.0後還有代號為 286 386兩款系統,...