天天看點

windows平台核心代碼探究

        一拿到這個問題的時候,當時就感覺很不妙,衆所周知微軟對于自己的系統是何等的“吝啬”,拿到這種問題簡直讓我感到這問題很難研究下去,而且自己還是這個小組的組長,一下子感到自己身上的責任就重了許多,是以從16周開始我自己就開始進入到了這個題目的研究中去了,百度一下”windows處理機排程”第一頁裡真正有介紹這個的問題的隻有http://blog.csdn.net/deyili/article/details/6420034

好吧,之後我就從這個網頁出發,關于UNIX和LINUX的一律不看,直接進入到關于windows的部分,在這個文章中多次重點介紹和出現了一個叫EPROCESS 的結構,繼續百度EPROCESS,這下子資訊就多了,很多部落格開始向你介紹有關這個結構的資訊了,這種情況下,你就不要傻傻的糾結這個結構的詳細資訊了,你要發現一個驚人的事實,有源代碼!!!這是怎麼回事???不是說微軟不開源嗎?怎麼這裡大家都有這個結構的源代碼?百度一些“微軟源代碼”出現都是一些新聞之類的,這說明我的問題描述的不清楚,繼續寫“windows 核心源代碼”,超贊的事情出現了,微軟核心代碼真的開源,還提供下載下傳!!!我被這結果給震暈了,等等,往下走了兩個網頁,有一個網頁引起了我的興趣【Windows核心情景分析 開源代碼ReactOS】,這時候我沒有第一時間去下載下傳微軟核心源代碼(用大腦想一下就知道,這份代碼肯定不會是完整的,也不會是最新的,畢竟還要賺錢不是,後面的事實的确就是這樣),而是點選開了http://www.cnblogs.com/cvbnm/articles/2035473.html,好吧,結果令人失望,估計又是哪個大俠的随手之作,不是個完整的介紹,畢竟大俠沒那份時間不是,接下來我百度ReactOS,雖然不怎麼喜歡百度,不過還是去看了一些百度百科,終于找到這玩意是什麼東西了,ReactOS是開源免費的Windows NT系列(含NT4.0/2000/XP/2003)克隆作業系統,保持了與Windows的系統級相容性。繼續看完這個你就懂了,接下來我做了兩件事,下載下傳了”windows核心代碼“也叫WRK,想辦法下載下傳了ReactOS,要知道某個部門經常把一些網站給封了,以前github就被封過,現在是sourceforge,這段時間我居然登陸不進去!!!沒辦法,逼我科學上網,于是耽誤了兩分鐘下載下傳到了最新版的ReactOS,好吧,到了這一步,接下來就是閱讀源代碼了吧,閱讀核心代碼的軟體就不說了,source insight,但是事實是很殘酷的,沒有外力幫助的情況下,你要是能全部看懂的話,研究所學生也不用讀了,因為你的水準已經遠遠高于他們了,我看了一下,果斷撤退,要是傻傻的一頭紮進去,估計你啥也弄不懂還會将自己弄瘋,到底該如何做呢?百度“如何閱讀windows 核心代碼”,看完搜尋結果的第一頁後,我沒發現任何大牛的部落格有關于這部分的完整叙述,反倒是看到了兩本書《Windows核心原理與實作(第一本用真實的源代碼剖析Windows作業系統核心原理的原創著作)》,《Windows核心情景分析》,第一本書的作者是潘愛民先生,第二本書的作者是毛德操先生,趕緊去圖書館找這兩個大牛,OMG,不幸的是第一本書兩套全部被人借走了,好在第二本還在,而且還幸運的找到了另外一本《深入解析Windows作業系統》,也是潘愛民先生寫的,稍微翻閱,找到程序線程這一章節,很不錯,是我心目中的資料!看完這一部分是不是發現我找資料很有條理和技巧,很多人總是說百度不行,找不到自己想要的資料,當然不排除的确有些資料國内真的很難找到,但是大部分還是你的方法不對,整個網際網路是一個網,你順着一根線找,最後總能翻遍整個網際網路的(理論上),借走這兩本書,接着我就開始去看相關的資料了,我的研究套路和我找的資料的研究套路有所差別,畢竟還是要回歸到windows源代碼的,而毛德操先生用的是ReactOS的代碼,而《深入解析Windows作業系統》這本書用的是逆向工程的套路,并沒有給出完整的源代碼,是一個個的逆向,将很多重要的結構“解析”出來的,不得不服,不過這本書中并沒有給出如何進行線程排程的源代碼,原因很簡單,微軟在這一部分并沒有一個專門的排程部分,是随機散在各種代碼裡面進行線程排程的,為了挑戰一下自己,我是用WRK裡面的代碼去了解上述兩本書裡面講的原理的,限于自身資質,隻能是初步簡單的探索了一下windows的處理機排程的問題,接下來就介紹一下我的一些工作,談不上深入了解了整個系統的工作原理,估計我們班沒人可以做到,原因也很簡單,每個部分并不是獨立存在的,都和其他部分緊密相關,我無法将程序線程排程和I/O完全分割,也沒辦法将記憶體的配置設定和程序區分開,這些都是需要站在整個系統的高度才能了解其工作的,是以對每個小組來說,都有一些内容很難了解,原因就是這是為其他部分準備的,而我們需要做的就是用源代碼去盡量了解我們自己那一部分的核心知識,掌握了研究方法,在你以後遇到類似問題的時候就可以輕松的去解決那方面的知識了,接下來就是介紹一下我對這個知識塊的一些了解了。

繼續閱讀