學(xué)習(xí)《
windows
核心編程》
??????? --如果發(fā)現(xiàn)有什么理解的不正確的,歡迎指出,共同學(xué)習(xí),共同進步哦!
?
?
u??????
字符集,一切軟件的基礎(chǔ),單字集(用
1
個字節(jié)表示一個字符),雙字節(jié)字符集(
DBCS,
并不是用
2
個字節(jié)表示一個字符哦,而是用
1
個,
2
個,或多個字節(jié)的混合來表示字符),寬字節(jié)字符集(
unicode
用
2
個字節(jié)來表示一個字符)。對
windows
操作系統(tǒng)來說,
windows 98
內(nèi)核用
ANSI
,
windows ME
用
unicode
,
windows 2000
以后的版本也用
unicode
,對于我們在
windows
上開發(fā),
windows2000
以后的版本,我們即可以開發(fā)
ANSI
版本,也可以開發(fā)
unicode
版本,他們都能夠很好的運行,但是重效率和軟件的國際化來看的化,最后使用
unicode
進行編碼。
u??????
內(nèi)核對象,被系統(tǒng)和應(yīng)用程序用來管理各種資源,我們可以使用
API
來管理和使用內(nèi)核對象,但是不能直接修改內(nèi)核對象的數(shù)據(jù)結(jié)構(gòu),內(nèi)核對象由內(nèi)核所擁有,內(nèi)核知道某個內(nèi)核對象有沒有被使用等,內(nèi)核對象被廣泛的使用在進程,線程。。。中用來管理。(內(nèi)核即操作系統(tǒng)的本質(zhì),核心所在,進行系統(tǒng)的管理)
u??????
進程,包含用來管理進程的內(nèi)核對象和用來加載
exe
和數(shù)據(jù)等的地址空間。當一個
exe
開始運行時,它即對應(yīng)一個進程,
exe
的
main
()也即是進程入口函數(shù),但是在進入
main
()之前還有
c
,
c
++運行庫的初始化。當創(chuàng)建一個進程時,就產(chǎn)生了一個唯一的實例句柄,它就是
winmain
()函數(shù)中要傳入的實例句柄,另外在主進程(可沒有非主進程的啊,但也可以認為主進程的子進程是非主進程,因為系統(tǒng)不保存父子進程的關(guān)系,他們可以看作是相互獨立的)中可以創(chuàng)建它的子進程,用來對多個需要共同管理的線程進行管理。
u??????
作業(yè),作業(yè)是進程的容器,可以統(tǒng)一地對一組進程增加一些額外的限制。有時候建立單個進程的作業(yè)也是有意義的,因為可以對單一進程施加一些進程本身所沒有的屬性。
u??????
線程,線程在進程中被創(chuàng)建,在創(chuàng)建進程時,默認的主線程即被創(chuàng)建。操作系統(tǒng)是用線程來完成任務(wù)的,因為進程不直接獲得操作系統(tǒng)的時間,線程可以認為是操作系統(tǒng)的最小的處理單位。在多線程編程中,首先要注意的就是線程的同步問題,還有線程池的使用。且最好不要使用全局或靜態(tài)變量。
u??????
纖程,比線程更小的單位,纖程是用戶對線程進行分割,然后自定義算法實行對纖程的調(diào)用,系統(tǒng)的內(nèi)核并不知道線程。
u??????
Windows
內(nèi)存結(jié)構(gòu),每個進程都有它自己的虛擬內(nèi)存,
32
位機,虛擬內(nèi)存位
4G
,但是這
4G
并不都可以被用戶使用,它包含
NULL
指針,
dos
兼容區(qū),文件映射區(qū),系統(tǒng)核心區(qū),能被用戶使用的只有
2G
。當然現(xiàn)在
64
位的機子可不是
2G
哦。
u??????
虛擬內(nèi)存,
windows
進行內(nèi)存管理的方法之一,最適合用來管理大型對象和結(jié)構(gòu)數(shù)組,也即相當于
RAM
(即物理內(nèi)存)的二級緩存,系統(tǒng)先到
RAM
找,如找不到就到虛擬內(nèi)存(頁文件)找,找到了就加載到
RAM
中,然后執(zhí)行。
u??????
內(nèi)存映射文件,
windows
的第二中內(nèi)存管理方法,最適合用來管理大型數(shù)據(jù)流和單機上的數(shù)據(jù)共享。
與虛擬內(nèi)存一樣,內(nèi)存映射文件可以用來保留一個地址空間的區(qū)域,并將物理存儲器提交給該區(qū)域。它們之間的差別是,物理存儲器來自一個已經(jīng)位于磁盤上的文件,而不是系統(tǒng)的頁文件。一旦該文件被映射,就可以訪問它,就像整個文件已經(jīng)加載內(nèi)存一樣。系統(tǒng)還使用內(nèi)存映射文件,以便加載和執(zhí)行
. e x e
和
D L L
文件。
u??????
堆棧,
windows
的第三中內(nèi)存管理方法,最適合管理大量的小對象,例如鏈表等,線程,進程都有自己的堆棧,默認的大小位
1M
,也可以修改。
最后是DLL高級和SEH的使用。
?
主要參考:
??????
《
windows
核心編程》
?
???
機械工業(yè)出版社
? jeffrey richter
著
??????
《
windows
系統(tǒng)編程》
??????
人民郵電出版社
?
求是科技
??????
《
windows2000
編程技術(shù)內(nèi)幕》
??
機械工業(yè)出版社