青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 9, comments - 4, trackbacks - 0, articles - 9

windows內核初窺

Posted on 2008-05-19 20:44 xlz 閱讀(142) 評論(0)  編輯 收藏 引用

[日期:2007-10-06]  來源:25175教育信息平臺  作者:admin  閱讀:241 次  [字體: ]

windows內核初窺(一)--體系結構

windows是一個非常優秀的OS,從今天開始,我要和大家共同分享windows給我們帶來的快樂!本人只所以將自己的學習筆記與大家分享,一是讓自己更深入的理解windows,再就是有什么疏漏之處,望大家指正!!來吧,開始我們的windows之旅! powered by 25175.net

一,windows2000體系結構
(1)系統模型
   在大多數多用戶的OS中,用戶程序和系統程序是分開的---系統程序是一個比較高的優先級上運行(核心態),而用戶程序是在一個較低的等級上運行。系統程 序有對系統數據和硬件的操作權,而用戶程序要想操作系統數據或者硬件就只能通過系統程序。系統程序在windows2000中是以服務的形式給出。當一個 用戶程序要訪問系統數據時,通過向相應的服務發出請求而實現,而此時CPU通過一個陷阱來陷入到核心態來運行。當所要求的服務完成返回時, windows2000負責恢復用戶線程(windows2000中,CPU是以線程為單位來進行調度的)的寄存器狀態等,從而使得用戶線程得以繼續運 行。windows2000中,內核和設備驅動都是運行在核心態,它們使用同一段內存空間,這意味著屬于某個組成部分的數據有可能被其它的組成部分所修 改,有潛在的風險!各個組成部分之間又是可以相互協作的,為了完成一個任務,往往需要這些組成部分之間進行合作。有關系統模型在以后的日子我們會慢慢說
(2)可移植性
  windows2000被設計成能在多種硬件平臺上運行,我們可能會感到很奇怪,它是怎么實現其移植性的呢?我們知道每個平臺上的指令系統都不同,所以,不同平臺上的代碼肯定是不一樣的,所以實現移植性的手段也不是很神秘的,主要是以下兩點:
     1,windows2000是分層次的,底層部分是平臺相關的,而上層部分是平臺無關的。也就是說對于每個硬件平臺底層部分都要有一個實現,而底層對上層 的接口是統一的,所以上層就不用關心底層到底是怎么樣實現的,它關心的就是他們之間的接口。 在windows2000中,實現可移植性的兩個重要部分是內核(kenel)和硬件抽象層(HAL),這兩個部分我們以后會詳細說
     2,windows2000的大部分是用C寫的,也有一部分是用C++寫的,匯編語言只用在直接跟硬件打交道的地方和對性能要求教高的地方。

     上面這個系統結構圖在很多書上都有,它就是windows2000的結構圖,下面我們就來詳細說說各個部分的功能:

      從上圖我們可以看出,在用戶態,windows2000有三個子系統,分別為win32,posix,os/2.其中最重要的就是win32,它負責輸入 輸出管理,沒有它,系統將無法工作,其它兩個子系統需要配置才能啟動。我們主要精力放在win32上,因為這是我們用的最廣的。我們要特別注意以下三個關 鍵點:子系統進程,子系統動態鏈接庫,用戶進程。

   (1) 子系統進程:win32子系統在windows2000中是以一個進程的形式出現的(csrss.exe)。它負責所有win32用戶進程,線程的創建與撤消,建立與撤消臨時文件,以及控制臺的管理。

   (2)子系統動態鏈接庫:win32子系統用的動態鏈接庫,里面有子系統所需要的大部分功能。

    (3)用戶創建的運行于wn32子系統之上的應用程序。

   用戶進程并不直接地調用系統服務,它們直接調用子系統動態鏈接庫,當一個程序調用子系統動態鏈接庫的一個功能時,可能會發生以下三中情形之一:

   (1)所要求的功能全部是由子系統動態鏈接庫提供,也就是說程序完全運行于用戶態。

   (2)需要調用一個或者多個運行于核心態的服務。

   (3)需要子系統進程的協助才能完成,這時,用戶進程向子系統進程發送一C/S請求,具體工作由子系統進程來完成。

 特別說明,當用戶進程調用系統服務時實際上是通過設置一個陷阱陷入到核心態來運行,將運行權交給系統服務調度程序來調度,并不用通過創建新的進程,線程來實現。

ntdll.dll

子系統下面是 ntdll.dll,它提供了一些子系統動態鏈接庫所需要的功能。其實,NTDLL.DLL的最主要功能就是為它的下層---執行體提供一個文檔化接口,使得它以上的各個模塊可以調用執行體提供的服務。

執行體:

      這是令人激動的一層,因為從這層開始我們就進入了windows的核心態,雖然我們對核心態的具體含義不是太清楚,沒有關系,隨著我們研究的深入你就會慢慢發現這是最重要的一層,因為所有windows的主要功能都是在這里完成的,下面我們就一點一點剖開:

     這一層包含以下幾種重要函數(服務):

(1)可以從用戶態直接調用的函數,這些在NTDLL中文檔化(前面已說過),這些中大多數都可以調用某個WIN32 API來啟動所對應的服務。

(2)只能從核心態調用的函數,其中有一些在DDK中已文檔化,編寫windows上驅動程序的人員必須熟悉的

(3)沒有文檔化的函數,供執行體內部使用

執行體從總體上可以分為以下幾個模塊:

(1)配置管理器:負責管理注冊表,我們以后會詳解

(2)進程、線程管理器:負責創建和終止進程、線程。

(3)安全引用監視器:在本地計算機上執行安全策略,保護計算機的資源

(4)I/O管理器:實現I/O的設備無關性,并負責把I/O請求分配給相應的設備驅動程序以進一步處理

(5)即插即用管理器(PNP):確定設備應該由哪個驅動程序來支持并負責加載相應驅動。在啟動時的枚舉過程中,它收集每個設備所需要的硬件資源, 并根據設備的需要來分配合適的硬件資源如I/O端口,IRQ,DMA通道之類,當系統中的設備發生變化時它負責向系統和應用程序發送通知消息。

(6)電源管理:協調電源時間,通過合理的配置,使得CPU降低電源消耗

(7)緩沖管理器:將最近使用過的數據留在CACHE中來提高系統的整體性能

(8)虛擬內存管理:這是最為讓人激動的地方,對于這個部分的理解會影響我們對整個系統結構的理解,我們會在以后詳細解說

(9)WDM管理方法例程:可以讓設備驅動程序發布性能和配置信息以及從用戶態的WMI服務接受命令

         在WINDOWS平臺上有過編程經歷的人一定對句柄(handle)不陌生,句柄到底是什么樣的東東呢??這往往給一些初學者帶來一些迷惑。其實要真正理 解句柄就要從windows的設計理念上來解決這個問題,那就是wndows是面向對象的,它把系統的一些資源,進程,文件等都看成對象,用對象管理器對 這些對象統一管理。對于用戶來說是通過句柄來操作響應對象的,可以看成是對象的一個引用。

內核:
     內核是執行體的下一個層次,它為執行體提供一些最基本的功能,簡單的對象,而執行體就通過在這些簡單對象上加上一些安全屬性,控制屬性等來完成更為復雜的功能。它重要提供以下四種函數:
(1)線程調度
(2)陷阱處理和異步調度
(3)中斷處理和調度
(4)多處理器同步

   內核提供了一個低層次的系統原語和機制供執行體來調用以實現其功能。內核只是提供了底層的機制,而不做任何策略性的事務。但線程的調度和異常處理是在內核中實現的,內核永遠都運行在核心態。
   一類對象叫做控制對象,包括APC,DPC對象以及I/O要用到的對象,如中斷對象。
   一類對象叫做調度對象,用于線程調度。這些對象包括線程,互斥體,事件,內核事件對,信號量,定時器,可等待定時器。

   硬件支持:
   內核的另一主要功能是使得執行體和設備驅動獨立于硬件,這個工作包含處理多個方面的差異:中斷處理,異常處理,多處理器同步方式的差異

硬件抽象層(HAL):
   這是windows2000實現其可移植性最重要的組成部分,HAL是一個可加載的核心態模塊(HAL.DLL),它提供了windows2000所運行 的硬件平臺的底層接口,HAL隱藏了各種與硬件有關的細節,比如I/O接口、中斷控制器、多處理通信機制等----這些都是平臺相關的。當需要平臺相關的 信息時,windows2000的內部模塊或者用戶程序通過HAL來實現。

設備驅動程序:
   
    設備驅動程序是核心態可加載模塊(以.SYS為擴展名),它們是I/O管理器和相關硬件設備的接口。它們運行于以下三種環境之一:
    (1) 在一個初始化了I/O函數的用戶線程環境中
    (2) 在內核模式的系統線程中
    (3) 中斷發生后(不在任何進程和線程中運行,中斷發生時哪一個進程或者線程正在運行)
    如前所述,windows2000的設備驅動程序并不直接操作硬件,而是調用HAL中的函數作為與硬件的接口。驅動程序通常用C語言寫(有時用C++)。因此,設備驅動程序通過使用HAL可以實現平臺無關性。
     有以下幾中設備驅動程序:
    (1)硬件驅動程序:實現對物理硬件的讀寫(通過使用HAL)。
    (2)文件系統驅動程序:是面向文件I/O的驅動程序,它把這些請求轉化成綁定到特定設備的I/O請求
    (3)文件過濾器驅動程序
    (4)網絡重定向驅動程序
    (5)協議驅動程序
    (6)內核流過濾器驅動程序
  因為安裝驅動程序是把用戶編寫的用戶態代碼添加到系統的唯一辦法,因此,一些程序員通過編寫設備驅動程序可以訪問OS的內部函數或者內部數據結構。


    好,到此為止我們對windows2000的整體結構有了大概的了解,在接下來的日子里我們要對每個部分進行更為深入的研究,并且會舉一些例子程序來輔助說明,因為我們學它的目的就是為了用,為了改變!


 


windows內核初窺(二)-系統機制

系統機制:
windows2000為執行體、內核、設備驅動程序等核心態部分提供了一些基礎機制。先讓我們看看都有哪些:
powered by 25175.net
    (1)陷阱調度:包括中斷、延遲過程調用(DPC)、異步過程調用(APC)、異常處理、系統服務調度。
    (2)執行體對象管理
    (3)同步機制:自旋鎖、內核調度對象以及等待是如何實現的
    (4)系統線程
    (5)多種系統機制如windows2000全局標志
    (6)本地過程調用
下面我們就來逐個分析:
 
陷阱調度:
 
中斷和異常的實質是使CPU不按照正常的步驟來工作,硬件和軟件都能夠察覺到它們。陷阱是當異常或者中斷發生時能夠 保存當前線程狀態并轉向相應處理的一種系統機制。在windows2000中,處理器將控制交給陷阱處理程序--一些專門來處理中斷、異常的程序。下圖給 出了一些激活陷阱處理程序的示例:

中  斷
中斷處理過程
陷阱處理程序
請求系統服務
中斷處理過程
軟、硬件異常
異常調度程序
異常
處理
虛擬地址異常
虛擬地址管理
 
 
 
內核通過以下方式來分辨中斷和異常:中斷是一個異步事件(可以在任何時間產生),不管處理器在執行什么程序。中斷典 型地由I/O設備、時鐘、定時器產生,必要時我們可以屏蔽中斷。而異常是一個同步事件,它是由正在執行的特定代碼產生的,重新執行相同的代碼會重復產生特 定的異常。比如訪問非法內存、除數為0等。系統把系統服務也作為異常來處理。
無論是硬件或者是軟件都能產生中斷和異常,比如說,一個總線異常是由硬件引起的,而除數為0顯然是軟件中的BUG導致的;同樣,I/O設備可以產生中斷,內核本身也能產生軟中斷(APC,DPC)。
當一個硬件中斷或者異常發生時,處理器收集足夠的狀態信息以保證當異常或中斷處理完畢后可以正確返回到當前執行點。 處理器通過在當前線程的內核棧區建立一個陷阱框架(用來保存現場)來實現。陷阱框架通常時線程整個上下文環境的一部分。而把軟中斷當成硬中斷的一部分來處 理,或者是調用內核中相應的處理程序。
在大多數情況下,當有陷阱發生時內核負責尋找相應的處理程序并且在處理程序返回時負責恢復中斷線程的繼續執行。
中斷調度:
硬件中斷是由I/O設備產生以求獲得CPU服務的,這種中斷機制使得CPU的利用率提高很多。軟件也能夠產生中斷, 比如說,內核可以發起一個中斷來進行線程調度。內核在必要的時候可以關中斷,這樣CPU就可以屏蔽掉任何中斷-----這在有些時候是必要的,比如線程對 于臨界區的訪問,異常處理等。
 硬件中斷處理:
 在X86家族里,外部中斷在中斷控制器里進行排隊,控制器依次中斷CPU的運行。當CPU被中斷時,它要求中斷控 制器提交中斷請求,中斷控制器將中斷請求翻譯為中斷請求號,并且把這個號碼當成索引來查詢中斷調度表(IDT),并且將控制權交給相應的中斷處理程序。中 斷調度表(IDT)在系統啟動的時候就已經初始化了,里面包括中斷號和相應處理程序的對應。
 中斷請求登等級IRQL:
 中斷是有等級的,這對于軟、硬中斷都是適用。內核將中斷為0---31共32個等級,等級高的權限高。內核負責將軟中斷對應到相應的等級上,HAL負責將硬件中斷對應到相應的等級上。如下圖所示:
中斷處理是按等級來運行的,并且是搶占式的,高等級的可以阻塞低等級的運行。當運行中斷處理程序時,CPU把自己的IRQL設置為要執行的中斷的IRQL,然后運行.
那么系統是如何把硬件中斷映射到相應的IRQL的呢?答案是HAL,在WINDOWS2000中,總線驅動能夠得知 所有連接到總線上的設備,以及每個設備能發出何種中斷,緊接著總線驅動把所得到的情況匯報給PNP(即插即用管理器),它做出抉擇。最后調用HAL函數 HalpGetSystemInterruptVector來實現映射。

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久视频精品| 午夜视频一区| 国产精品区二区三区日本| 欧美成人网在线| 欧美三级韩国三级日本三斤| 欧美日本一道本在线视频| 国产精品jizz在线观看美国| 国产精品每日更新在线播放网址| 国产农村妇女毛片精品久久莱园子| 国产日韩一区二区三区在线| 在线观看视频亚洲| 一区二区三区三区在线| 欧美日韩另类字幕中文| 国产精品欧美久久| 一区福利视频| 午夜激情亚洲| 最近看过的日韩成人| 午夜在线播放视频欧美| 美女爽到呻吟久久久久| 国产一区av在线| 亚洲综合三区| 一本色道88久久加勒比精品 | 欧美亚洲一级| 欧美风情在线| 久久综合久久综合久久综合| 国产自产2019最新不卡| 亚洲永久免费精品| 99精品热6080yy久久 | 一区二区三区 在线观看视| 久久久91精品国产一区二区精品| 欧美日韩午夜在线| 正在播放欧美视频| 99这里只有久久精品视频| 欧美片网站免费| 亚洲一区日韩| 久久国产精品一区二区三区四区| 亚洲国产精品欧美一二99| 久久久之久亚州精品露出| 亚洲自拍电影| 欧美成人亚洲成人| 久久人人97超碰国产公开结果| 亚洲一区二区精品| 亚洲午夜未删减在线观看| 亚洲国产精品视频| 欧美电影在线播放| 欧美激情亚洲激情| 午夜视频在线观看一区二区| 夜夜嗨av色一区二区不卡| 免费高清在线一区| 亚洲一区制服诱惑| 久久午夜激情| 亚洲欧洲精品一区二区| 亚洲大胆人体在线| 午夜精品久久久久久久99黑人| 日韩视频中文字幕| 欧美激情第三页| 一本色道久久加勒比88综合| 亚洲男人av电影| 亚洲国产清纯| 国产精品乱人伦一区二区| 亚洲精品永久免费| 欧美一区二区精品| 亚洲天天影视| 久久久久久久一区二区三区| 欧美亚洲免费| 欧美三级电影精品| 亚洲国产婷婷| 亚洲欧洲一区二区在线播放| 妖精成人www高清在线观看| 91久久精品日日躁夜夜躁国产| 亚洲综合日韩在线| 亚洲天堂视频在线观看| 欧美日韩国产综合在线| 欧美成人免费在线| 亚洲三级免费| 欧美成人性网| 欧美大秀在线观看| 亚洲高清资源| 亚洲美女诱惑| 欧美精选午夜久久久乱码6080| 久久亚洲综合网| 在线观看国产精品网站| 久久综合影视| 一本色道久久88亚洲综合88| 99精品国产高清一区二区 | av成人国产| 国产精品一区在线观看你懂的| 国产综合久久久久久| 猫咪成人在线观看| 在线天堂一区av电影| 久久久精品2019中文字幕神马| 亚洲国产精品久久久久| 欧美日韩国产在线播放| 亚洲一区在线直播| 欧美成黄导航| 校园春色综合网| 艳女tv在线观看国产一区| 国产欧美日韩专区发布| 欧美日本二区| 欧美高清视频一区| 久热精品在线视频| 欧美一区1区三区3区公司| 亚洲免费电影在线| 看片网站欧美日韩| 久久精品国产2020观看福利| 亚洲性感激情| 一区二区三区四区国产| 亚洲黄色成人网| 亚洲欧洲精品一区| 亚洲福利免费| 一区二区视频免费在线观看 | 欧美一区二区三区四区在线| 亚洲国产日日夜夜| 亚洲第一在线视频| 亚洲电影第1页| 国内精品久久久久伊人av| 欧美午夜女人视频在线| 欧美日韩精品高清| 国产精品久久久久久久久久免费| 欧美精品午夜视频| 国产精品毛片a∨一区二区三区| 国产精品啊v在线| 国产精品亚洲а∨天堂免在线| 国产精品久久久久永久免费观看| 国产精品视频成人| 国产亚洲成av人在线观看导航 | 国产视频一区二区三区在线观看| 国产精品福利久久久| 亚洲午夜av电影| 亚洲精品美女91| 亚洲欧美综合网| 欧美精品一区二区精品网| 国产精品福利在线观看| 国产一区美女| 亚洲在线黄色| 亚洲激情在线观看视频免费| 欧美在线一区二区| 欧美性猛交xxxx免费看久久久| 黄色精品网站| 一区二区三区 在线观看视频| 午夜精品久久久久久99热软件| 亚洲国产二区| 久久天天躁夜夜躁狠狠躁2022| 国产精品久久久久久久午夜片 | 亚洲无线一线二线三线区别av| 久久久www成人免费精品| 国产精品入口| 欧美一区二区视频97| 亚洲手机在线| 欧美性事在线| 亚洲无线观看| 欧美成人一区二区三区在线观看| 一区二区免费在线播放| 午夜激情综合网| 亚洲一区二区三区免费观看| 欧美精品福利视频| 亚洲国产va精品久久久不卡综合| 米奇777在线欧美播放| 久久久久久久网| 永久91嫩草亚洲精品人人| 久久综合久久综合九色| 牛牛影视久久网| 日韩视频―中文字幕| 亚洲电影免费| 欧美三日本三级少妇三2023 | 免费在线亚洲欧美| 亚洲免费精品| 亚洲夜间福利| 亚洲国产精品精华液网站| 欧美国产日韩亚洲一区| 欧美国产日韩精品| 欧美在线网址| 一区二区激情小说| 欧美在线一二三四区| 99国内精品久久久久久久软件| 亚洲午夜极品| 在线亚洲欧美| 美国成人毛片| 久久综合色影院| 国产精品日韩一区二区三区| 免费在线成人| 国产在线观看91精品一区| 久久精品夜色噜噜亚洲a∨| 国产精品另类一区| 亚洲一二三区在线观看| 亚洲韩国一区二区三区| 欧美精品一区二区三区久久久竹菊 | 亚洲国产精品电影在线观看| 亚洲国产一二三| 国产精品午夜国产小视频| 久久久久免费观看| 夜夜嗨av一区二区三区中文字幕| 久久爱www.| 亚洲精品视频免费观看| 亚洲高清久久久| 久久精品一区二区国产| 伊人久久综合| 欧美成人精品在线视频| 亚洲小视频在线| 国产精品狼人久久影院观看方式|