windows核心程式設計--精華

Mobidogs發表於2020-04-04
學習《 windows 核心程式設計》

   
 
u       字符集,一切軟體的基礎,單字集(用 1 個位元組表示一個字元),雙位元組字符集( DBCS, 並不是用 2 個位元組表示一個字元哦,而是用 1 個, 2 個,或多個位元組的混合來表示字元),寬位元組字符集( unicode 用 2 個位元組來表示一個字元)。對 windows 作業系統來說, windows 98 核心用 ANSI , windows ME 用 unicode , windows 2000 以後的版本也用 unicode ,對於我們在 windows 上開發, windows2000 以後的版本,我們即可以開發 ANSI 版本,也可以開發 unicode 版本,他們都能夠很好的執行,但是重效率和軟體的國際化來看的化,最後使用 unicode 進行編碼。
u       核心物件,被系統和應用程式用來管理各種資源,我們可以使用 API 來管理和使用核心物件,但是不能直接修改核心物件的資料結構,核心物件由核心所擁有,核心知道某個核心物件有沒有被使用等,核心物件被廣泛的使用在程式,執行緒。。。中用來管理。(核心即作業系統的本質,核心所在,進行系統的管理)
u       程式,包含用來管理程式的核心物件和用來載入 exe 和資料等的地址空間。當一個 exe 開始執行時,它即對應一個程式, exe 的 main ()也即是程式入口函式,但是在進入 main ()之前還有 c , c ++執行庫的初始化。當建立一個程式時,就產生了一個唯一的例項控制程式碼,它就是 winmain ()函式中要傳入的例項控制程式碼,另外在主程式(可沒有非主程式的啊,但也可以認為主程式的子程式是非主程式,因為系統不儲存父子程式的關係,他們可以看作是相互獨立的)中可以建立它的子程式,用來對多個需要共同管理的執行緒進行管理。
u       作業,作業是程式的容器,可以統一地對一組程式增加一些額外的限制。有時候建立單個程式的作業也是有意義的,因為可以對單一程式施加一些程式本身所沒有的屬性。
u       執行緒,執行緒在程式中被建立,在建立程式時,預設的主執行緒即被建立。作業系統是用執行緒來完成任務的,因為程式不直接獲得作業系統的時間,執行緒可以認為是作業系統的最小的處理單位。在多執行緒程式設計中,首先要注意的就是執行緒的同步問題,還有執行緒池的使用。且最好不要使用全域性或靜態變數。
u       纖程,比執行緒更小的單位,纖程是使用者對執行緒進行分割,然後自定義演算法實行對纖程的呼叫,系統的核心並不知道執行緒。
u       Windows 記憶體結構,每個程式都有它自己的虛擬記憶體, 32 位機,虛擬記憶體位 4G ,但是這 4G 並不都可以被使用者使用,它包含 NULL 指標, dos 相容區,檔案對映區,系統核心區,能被使用者使用的只有 2G 。當然現在 64 位的機子可不是 2G 哦。
u       虛擬記憶體, windows 進行記憶體管理的方法之一,最適合用來管理大型物件和結構陣列,也即相當於 RAM (即實體記憶體)的二級快取,系統先到 RAM 找,如找不到就到虛擬記憶體(頁檔案)找,找到了就載入到 RAM 中,然後執行。
u       記憶體對映檔案, windows 的第二中記憶體管理方法,最適合用來管理大型資料流和單機上的資料共享。 與虛擬記憶體一樣,記憶體對映檔案可以用來保留一個地址空間的區域,並將物理儲存器提交給該區域。它們之間的差別是,物理儲存器來自一個已經位於磁碟上的檔案,而不是系統的頁檔案。一旦該檔案被對映,就可以訪問它,就像整個檔案已經載入記憶體一樣。系統還使用記憶體對映檔案,以便載入和執行 . e x e D L L 檔案。
u       堆疊, windows 的第三中記憶體管理方法,最適合管理大量的小物件,例如連結串列等,執行緒,程式都有自己的堆疊,預設的大小位 1M ,也可以修改。


最後是DLL高階和SEH的使用。

 
主要參考:
       《 windows 核心程式設計》      機械工業出版社  jeffrey richter 著
       《 windows 系統程式設計》        人民郵電出版社  求是科技
       《 windows2000 程式設計技術內幕》    機械工業出版社
 

相關文章