windows程序設計2

上傳人:dfg****19 文檔編號:248178834 上傳時間:2024-10-22 格式:PPT 頁數(shù):38 大?。?49KB
收藏 版權申訴 舉報 下載
windows程序設計2_第1頁
第1頁 / 共38頁
windows程序設計2_第2頁
第2頁 / 共38頁
windows程序設計2_第3頁
第3頁 / 共38頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《windows程序設計2》由會員分享,可在線閱讀,更多相關《windows程序設計2(38頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、,單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,Windows,程序設計基礎,32,位處理器有,3,種工作模式,:,實模式:重啟以后到載入,WINDOWS,以前都是實模式,純,32,位,windows,是不能進入實模式的。,保護模式:保護模式提供的保護機制管理和維護自己,保護主要指對存儲器的保護。進入保護模式是每個,32,位系統(tǒng)必須的。,虛擬,86,模式:為了讓以前的,16,位程序能在,32,位下運行,,32,位處理器就提供了虛擬,86,模式。,第二章,win32,程序運行原理,2.1 CPU,的保護模式和,Windows,系統(tǒng),擴展模式:,1,)兼容

2、模式:該模式下,,64,位操作系統(tǒng)運行在,32,位兼容環(huán)境,能正常運行,16,,,32,位應用程序就像基本的保護模式一樣,訪問,32,位地址空間,但不能運行純,16,位實模式程序(就是不能運行虛擬,86,模式程序了)。,2,),64,位模式:在該模式下,處理器完全執(zhí)行,64,位指令,使用,64,位地址空間和,64,操作數(shù),運行,16,,,32,位程序必須切換到兼容模式。,64,位處理器,系統(tǒng)管理模式:當,SMI,引腳為有效進入系統(tǒng)管理模式,首先保存當前的,CPU,上下文。它有獨立的地址空間,用來執(zhí)行電源管理或系統(tǒng)安全方面的指令。(基本模式),32,位處理器對多任務操作系統(tǒng)的支持性主要體現(xiàn)在,1

3、,)在硬件上為任務之間的切換提供了良好的條件,2,)實現(xiàn)了多任務隔離,“進程”地址空間獨立,在,windows,下,任務被進程取代,進程就是正在運行的應用程序的實例。但是占用,cpu,時間片的不是進程,而是線程。,Windows,的多任務實現(xiàn),虛擬內存,保護模式下,,32,位處理器有,32,根地址線,處理器尋址范圍(,0 x000000000 xFFFFFFFF,)(,2,32,,,4GB,)。,32,位機器上的,RAM,的大小很難達到,4GB,,,windows,為每個進程分配,4GB,的地址空間主要依靠,cpu,的支持。,cpu,在保護模式下支持虛擬內存。它可以幫助操作系統(tǒng)將磁盤空間當作內

4、存空間來使用。,各進程內的地址空間安排,2GB,的系統(tǒng)空間,2GB,的用戶空間,0 xFFFFFFFF,0 x80000000,0 x7FFFFFFF,0 x00000000,整個系統(tǒng)共用,每個進程私有,用戶空間部分是進程私有地址空間,進程不能以任何方式讀、寫其他進程此部分空間中的數(shù)據(jù)。對所有應用程序,大量進程數(shù)據(jù)被保存在塊空間中而相互獨立,所以應用程序很少被其他程序打斷,使系統(tǒng)更加穩(wěn)定。,系統(tǒng)空間部分放置操作系統(tǒng)的代碼,包括內核代碼、設備驅動代碼、設備,I/O,緩沖區(qū)等。系統(tǒng)空間部分在所有的進程中是共享的。在,32,位系統(tǒng)中,這些數(shù)據(jù)結構被完全的保護起來,如果試圖訪問這部分內存,訪問線程會遇

5、到一個訪問異常。,兩種地址空間區(qū)別,32,位處理器共定義了,4,種(,0-3,)特權級別,或稱環(huán)。,0,是最高級(特權級),,3,級是最低級(用戶級)。,為了阻止應用程序訪問或者修改關鍵的系統(tǒng)數(shù)據(jù),,windows,提供了兩種訪問模式:,內核模式(使用,0,級):系統(tǒng)程序的代碼在此模式下運行,用戶模式(使用,3,級):用戶程序的代碼在此模式下運行,內核模式和用戶模式,CPU,支持的特權級類別,應用程序,常規(guī)擴展,系統(tǒng)服務,內核,級別,0,級別,1,級別,2,級別,3,在實模式下,沒有級別之分,.,在保護模式下,CPU,有,4,個特權級別,.,雖然每個進程都有自己的,4G,地址空間。但內核模式下

6、的系統(tǒng)和設備驅動程序共用一塊虛擬地址空間。即整個系統(tǒng)共用的,2G,部分。虛擬內存中的每一頁的頁屬性中都有訪問模式標記,它標識了哪一個模式下的代碼才有權限訪問該頁。系統(tǒng)地址空間的頁僅僅能夠從內核模式訪問,所有用戶地址空間的頁都從用戶模式訪問。,當應用程序調用一個系統(tǒng)函數(shù)的時候,用戶的應用程序會從用戶模式切換到內核模式去執(zhí)行。例如:,Win32,函數(shù),ReadFile,最終會調用,Windows,內部的從文件中讀取數(shù)據(jù)的程序代碼,因為這些代碼訪問了系統(tǒng)內部的數(shù)據(jù),所以他們必須運行在內核模式下。,內核模式:,研究,WDM,(,Windows Driver Model,),設備驅動類,用戶模式:,SD

7、K,程序設計,兩種模式下的程序設計,內核對象是系統(tǒng)提供的用戶模式下代碼與內核模式下代碼進行交互的基本接口。軟件開發(fā)人員會經(jīng)常的創(chuàng)建、打開和操作內核對象。,2.2,內核對象,為了管理應用程序,系統(tǒng)有必要維護一些不允許用戶應用程序直接訪問的數(shù)據(jù)。一個內核對象就是一塊內核分配的內存,它只能被運行在內核模式下的代碼訪問。內核對象記錄的數(shù)據(jù)在整個系統(tǒng)中只有一份,故也稱系統(tǒng)資源。,內核對象和普通的數(shù)據(jù)結構間的最大區(qū)別是其內部數(shù)據(jù)結構是隱藏的,必須調用一個對象服務才能從此對象中得到數(shù)據(jù),或者是向其輸入數(shù)據(jù),而不能直接讀或者改變對象的內部數(shù)據(jù)。增加這些限制來保證內核對象包含一致的狀態(tài)。,引入內核對象,系統(tǒng)可方

8、便的完成以下任務:,1,)為系統(tǒng)資源提供可識別的名字。,2,)在進程之間共享資源和數(shù)據(jù)。,3,)保護資源不被未經(jīng)認可的代碼訪問。,4,)跟蹤對象的引用情況。在不被使用時,釋放占有空間。,內核對象的數(shù)據(jù)結構僅能從內核模式訪問,所以直接在內存中定位這些數(shù)據(jù)結構對應用程序來說是不可能的。應用程序必須使用,API,函數(shù)訪問內核對象。調用函數(shù)創(chuàng)建內核對象時,函數(shù)會返回標識此內核對象的句柄。,為了使系統(tǒng)穩(wěn)定,這些句柄和進程有關,就是僅對創(chuàng)建該內核對象的進程有效。,若要多個進程共享一個內核對象,要調用,DuplicateHandle,函數(shù)復制一個進程句柄傳給其他進程即可。,對象句柄,內核對象是進程內的資源,

9、使用計數(shù)屬性指明進程對特定內核對象的引用次數(shù),第一次創(chuàng)建內核對象時,系統(tǒng)為進程分配內核對象資源,并將該內核對象的使用計數(shù)屬性初始化為,1,。打開一次使用計數(shù)加,1,,關閉,系統(tǒng)將使用計數(shù)減,1,,當系統(tǒng)發(fā)現(xiàn)引用次數(shù)是,0,時,它就會自動關閉資源。,使用計數(shù),2.3,進程的創(chuàng)建,進程和線程,進程是一個正在運行的程序,它擁有自己的虛擬地址空間,擁有自己的代碼、數(shù)據(jù)和其他系統(tǒng)資源,如進程創(chuàng)建的文件、管道、同步對象等。一個進程也包含了一個或者多個運行在此進程內的線程。,線程是進程內執(zhí)行代碼的獨立實體。沒有它,進程中的程序代碼是不可能執(zhí)行的。操作系統(tǒng)創(chuàng)建進行后會創(chuàng)建一個線程執(zhí)行進程中的代碼,稱主線程,它

10、在運行過程中創(chuàng)建其他線程,一般將主線程創(chuàng)建的線程稱為該進程的輔助線程。,進程是不活潑的,一個進程要完成任何事情,必須有一個運行在它的地址空間中的線程。此線程負責執(zhí)行該進程地址空間的代碼。每個進程至少擁有一個在它的地址空間中運行的線程。對一個不包含任何線程的進程來說,它是沒有理由繼續(xù)存在下去的,系統(tǒng)會自動銷毀該進程和它的地址空間。,進程和程序,程序:一連串靜態(tài)的指令,進程:一個容器,它包含一系列運行在這個程序實例上下文中的線程使用的資源。,Win32,進程的兩個組成部分,進程內核對象:操作系統(tǒng)使用此內核對象來管理該進程。這個內核對象也是操作系統(tǒng)存放進程統(tǒng)計信息的地方。,私有的虛擬地址空間:此地址

11、空間包含了所有可執(zhí)行的或者是,DLL,模塊的代碼和數(shù)據(jù),它也是程序動態(tài)申請內存的地方,比如說線程堆棧和進程堆。,應用程序必須有一個入口函數(shù),它在程序開始運行時被調用??刂婆_應用程序入口函數(shù)是,main,。,int,main(int,argc,char,*,argv,),應用程序的啟動過程,開始,主線程調用,C/C+,運行期啟動函數(shù),N,操作系統(tǒng)調用,CreateProcess,函數(shù)創(chuàng)建新的進程,系統(tǒng)創(chuàng)建一個進程內核對象,使用計數(shù)初始化為,1,系統(tǒng)為進程創(chuàng)建主線程,成功,調用程序入口函數(shù),main,Y,結束,系統(tǒng)為新進程創(chuàng)建虛擬地址空間,加載應用程序運行時需要代碼和數(shù)據(jù),CreateProces

12、s,函數(shù),WIN32API,函數(shù),CreateProcess,用來創(chuàng)建一個新的進程和它的主線程,,這個新進程運行指定的可執(zhí)行文件。,函數(shù)原型:,BOOL,CreateProcess,(,LPCTSTR,lpApplicationName,/,可執(zhí)行文件名稱,LPTSTR,lpCommandLine,/,指定要傳遞給執(zhí)行模塊的參數(shù),LPSECURITY_ATTRIBUTES,lpProcessAttributes,,,/,進程安全性,LPSECURITY_ATTRIBUTES,lpThreadAttributes,/,進程安全性,BOOL,bInheritHandles,/,指定當前進程中的可繼

13、承句柄是否可被新進程繼承,DWORD,dwCreationFlags,/,指定新進程的優(yōu)先級及其他創(chuàng)建標志,LPVOID,lpEnvironment,/,指定新進程使用的環(huán)境變量,LPCTSTR,lpCurrentDirectory,/,指定新進程使用的當前目錄,LPSTARTUPINFO,lpStartupInfo,/,指定新進程中主窗口的位置、大小和句柄等,LPPROCESS_INFORMATION,lpProcessInformation,/,返回新進程的標志信息,);,lpApplicationName,:指向一個,NULL,結尾的、用來指定可執(zhí)行模塊的字符串。這個字符串可以是可執(zhí)行模

14、塊的絕對路徑,也可以是相對路徑,在后一種情況下,函數(shù)使用當前驅動器和目錄建立可執(zhí)行模塊的路徑。這個參數(shù)可以被設為,NULL,,在這種情況下,可執(zhí)行模塊的名字必須處于,lpCommandLine,參數(shù)的最前面并由空格符與后面的字符分開。這個被指定的模塊可以是一個,Win32,應用程序。如果適當?shù)淖酉到y(tǒng)在當前計算機上可用的話,它也可以是其他類型的模塊(如,MS-DOS,或,OS/2,)。,lpCommandLine,:指向一個,NULL,結尾的、用來指定要運行的命令行。,這個參數(shù)可以為空,那么函數(shù)將使用參數(shù)指定的字符串當作要運行的程序的命令行。如果,lpApplicationName,和,lpCo

15、mmandLine,參數(shù)都不為空,那么,lpApplicationName,參數(shù)指定將要被運行的模塊,,lpCommandLine,參數(shù)指定將被運行的模塊的命令行。新運行的進程可以使用,GetCommandLine,函數(shù)獲得整個命令行。,C,語言程序可以使用,argc,和,argv,參數(shù)。,如果,lpApplicationName,參數(shù)為空,那么這個字符串中的第一個被空格分隔的要素指定可執(zhí)行模塊名。如果文件名不包含擴展名,那么,.exe,將被假定為默認的擴展名。如果文件名以一個點(,.,)結尾且沒有擴展名,或文件名中包含路徑,,.exe,將不會被加到后面。如果文件名中不包含路徑,,Window

16、s,將按照如下順序尋找這個可執(zhí)行文件:,1.,當前應用程序的目錄。,2.,父進程的目錄。,3.Windows 95,:,Windows,系統(tǒng)目錄,可以使用,GetSystemDirectory,函數(shù)獲得。,Windows NT,:,32,位,Windows,系統(tǒng)目錄??梢允褂?GetSystemDirectory,函數(shù)獲得,目錄名是,SYSTEM32,。,4.,在,Windows NT,中:,16,位,Windows,系統(tǒng)目錄。不可以使用,Win32,函數(shù)獲得這個目錄,但是它會被搜索,目錄名是,SYSTEM,。,5.Windows,目錄??梢允褂?GetWindowsDirectory,函數(shù)獲得這個目錄。,6.,列在,PATH,環(huán)境變量中的目錄。如果被創(chuàng)建的進程是一個以,MS-DOS,或,16,位,Windows,為基礎的應用程序,,lpCommandLine,參數(shù)應該是一個以可執(zhí)行文件的文件名作為第一個要素的絕對路徑,因為這樣做可以使,32,位,Windows,程序工作的很好,這樣設置,lpCommandLine,參數(shù)是最強壯的。,dwCreationFlags,:指定附加的、用來控

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關資源

更多
正為您匹配相似的精品文檔

相關搜索

關于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對上載內容本身不做任何修改或編輯。若文檔所含內容侵犯了您的版權或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!