windows程序設(shè)計(jì)02

上傳人:r****d 文檔編號(hào):251230045 上傳時(shí)間:2024-11-06 格式:PPT 頁(yè)數(shù):38 大?。?9.50KB
收藏 版權(quán)申訴 舉報(bào) 下載
windows程序設(shè)計(jì)02_第1頁(yè)
第1頁(yè) / 共38頁(yè)
windows程序設(shè)計(jì)02_第2頁(yè)
第2頁(yè) / 共38頁(yè)
windows程序設(shè)計(jì)02_第3頁(yè)
第3頁(yè) / 共38頁(yè)

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

12 積分

下載資源

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

資源描述:

《windows程序設(shè)計(jì)02》由會(huì)員分享,可在線閱讀,更多相關(guān)《windows程序設(shè)計(jì)02(38頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),*,Windows程序設(shè)計(jì)根底,32,位處理器有,3,種工作模式,:,實(shí)模式:重啟以后到載入,WINDOWS,以前都是實(shí)模式,純,32,位,windows,是不能進(jìn)入實(shí)模式的。,保護(hù)模式:保護(hù)模式提供的保護(hù)機(jī)制管理和維護(hù)自己,保護(hù)主要指對(duì)存儲(chǔ)器的保護(hù)。進(jìn)入保護(hù)模式是每個(gè),32,位系統(tǒng)必須的。,虛擬,86,模式:為了讓以前的,16,位程序能在,32,位下運(yùn)行,,32,位處理器就提供了虛擬,86,模式。,第二章,win32,程

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

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

4、的用戶空間,0 xFFFFFFFF,0 x80000000,0 x7FFFFFFF,0 x00000000,整個(gè)系統(tǒng)共用,每個(gè)進(jìn)程私有,用戶空間局部是進(jìn)程私有地址空間,進(jìn)程不能以任何方式讀、寫其他進(jìn)程此局部空間中的數(shù)據(jù)。對(duì)所有應(yīng)用程序,大量進(jìn)程數(shù)據(jù)被保存在塊空間中而相互獨(dú)立,所以應(yīng)用程序很少被其他程序打斷,使系統(tǒng)更加穩(wěn)定。,系統(tǒng)空間局部放置操作系統(tǒng)的代碼,包括內(nèi)核代碼、設(shè)備驅(qū)動(dòng)代碼、設(shè)備I/O緩沖區(qū)等。系統(tǒng)空間局部在所有的進(jìn)程中是共享的。在32位系統(tǒng)中,這些數(shù)據(jù)結(jié)構(gòu)被完全的保護(hù)起來(lái),如果試圖訪問這局部?jī)?nèi)存,訪問線程會(huì)遇到一個(gè)訪問異常。,兩種地址空間區(qū)別,32位處理器共定義了4種0-3特權(quán)級(jí)別,

5、或稱環(huán)。0是最高級(jí)特權(quán)級(jí),3級(jí)是最低級(jí)用戶級(jí)。,為了阻止應(yīng)用程序訪問或者修改關(guān)鍵的系統(tǒng)數(shù)據(jù),windows提供了兩種訪問模式:,內(nèi)核模式使用0級(jí):系統(tǒng)程序的代碼在此模式下運(yùn)行,用戶模式使用3級(jí):用戶程序的代碼在此模式下運(yùn)行,內(nèi)核模式和用戶模式,CPU,支持的特權(quán)級(jí)類別,應(yīng)用程序,常規(guī)擴(kuò)展,系統(tǒng)服務(wù),內(nèi)核,級(jí)別,0,級(jí)別,1,級(jí)別,2,級(jí)別,3,在實(shí)模式下,沒有級(jí)別之分,.,在保護(hù)模式下,CPU,有,4,個(gè)特權(quán)級(jí)別,.,雖然每個(gè)進(jìn)程都有自己的4G地址空間。但內(nèi)核模式下的系統(tǒng)和設(shè)備驅(qū)動(dòng)程序共用一塊虛擬地址空間。即整個(gè)系統(tǒng)共用的2G局部。虛擬內(nèi)存中的每一頁(yè)的頁(yè)屬性中都有訪問模式標(biāo)記,它標(biāo)識(shí)了哪一個(gè)模

6、式下的代碼才有權(quán)限訪問該頁(yè)。系統(tǒng)地址空間的頁(yè)僅僅能夠從內(nèi)核模式訪問,所有用戶地址空間的頁(yè)都從用戶模式訪問。,當(dāng)應(yīng)用程序調(diào)用一個(gè)系統(tǒng)函數(shù)的時(shí)候,用戶的應(yīng)用程序會(huì)從用戶模式切換到內(nèi)核模式去執(zhí)行。例如:Win32函數(shù)ReadFile最終會(huì)調(diào)用Windows內(nèi)部的從文件中讀取數(shù)據(jù)的程序代碼,因?yàn)檫@些代碼訪問了系統(tǒng)內(nèi)部的數(shù)據(jù),所以他們必須運(yùn)行在內(nèi)核模式下。,內(nèi)核模式:,研究WDMWindows Driver Model,設(shè)備驅(qū)動(dòng)類,用戶模式:,SDK程序設(shè)計(jì),兩種模式下的程序設(shè)計(jì),內(nèi)核對(duì)象是系統(tǒng)提供的用戶模式下代碼與內(nèi)核模式下代碼進(jìn)行交互的根本接口。軟件開發(fā)人員會(huì)經(jīng)常的創(chuàng)立、翻開和操作內(nèi)核對(duì)象。,2.2

7、,內(nèi)核對(duì)象,為了管理應(yīng)用程序,系統(tǒng)有必要維護(hù)一些不允許用戶應(yīng)用程序直接訪問的數(shù)據(jù)。一個(gè)內(nèi)核對(duì)象就是一塊內(nèi)核分配的內(nèi)存,它只能被運(yùn)行在內(nèi)核模式下的代碼訪問。內(nèi)核對(duì)象記錄的數(shù)據(jù)在整個(gè)系統(tǒng)中只有一份,故也稱系統(tǒng)資源。,內(nèi)核對(duì)象和普通的數(shù)據(jù)結(jié)構(gòu)間的最大區(qū)別是其內(nèi)部數(shù)據(jù)結(jié)構(gòu)是隱藏的,必須調(diào)用一個(gè)對(duì)象效勞才能從此對(duì)象中得到數(shù)據(jù),或者是向其輸入數(shù)據(jù),而不能直接讀或者改變對(duì)象的內(nèi)部數(shù)據(jù)。增加這些限制來(lái)保證內(nèi)核對(duì)象包含一致的狀態(tài)。,引入內(nèi)核對(duì)象,系統(tǒng)可方便的完成以下任務(wù):,1為系統(tǒng)資源提供可識(shí)別的名字。,2在進(jìn)程之間共享資源和數(shù)據(jù)。,3保護(hù)資源不被未經(jīng)認(rèn)可的代碼訪問。,4跟蹤對(duì)象的引用情況。在不被使用時(shí),釋放占

8、有空間。,內(nèi)核對(duì)象的數(shù)據(jù)結(jié)構(gòu)僅能從內(nèi)核模式訪問,所以直接在內(nèi)存中定位這些數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)用程序來(lái)說(shuō)是不可能的。應(yīng)用程序必須使用API函數(shù)訪問內(nèi)核對(duì)象。調(diào)用函數(shù)創(chuàng)立內(nèi)核對(duì)象時(shí),函數(shù)會(huì)返回標(biāo)識(shí)此內(nèi)核對(duì)象的句柄。,為了使系統(tǒng)穩(wěn)定,這些句柄和進(jìn)程有關(guān),就是僅對(duì)創(chuàng)立該內(nèi)核對(duì)象的進(jìn)程有效。,假設(shè)要多個(gè)進(jìn)程共享一個(gè)內(nèi)核對(duì)象,要調(diào)用DuplicateHandle函數(shù)復(fù)制一個(gè)進(jìn)程句柄傳給其他進(jìn)程即可。,對(duì)象句柄,內(nèi)核對(duì)象是進(jìn)程內(nèi)的資源,使用計(jì)數(shù)屬性指明進(jìn)程對(duì)特定內(nèi)核對(duì)象的引用次數(shù),第一次創(chuàng)立內(nèi)核對(duì)象時(shí),系統(tǒng)為進(jìn)程分配內(nèi)核對(duì)象資源,并將該內(nèi)核對(duì)象的使用計(jì)數(shù)屬性初始化為1。翻開一次使用計(jì)數(shù)加1,關(guān)閉,系統(tǒng)將使用計(jì)數(shù)減1

9、,當(dāng)系統(tǒng)發(fā)現(xiàn)引用次數(shù)是0時(shí),它就會(huì)自動(dòng)關(guān)閉資源。,使用計(jì)數(shù),2.3 進(jìn)程的創(chuàng)立,進(jìn)程和線程,進(jìn)程是一個(gè)正在運(yùn)行的程序,它擁有自己的虛擬地址空間,擁有自己的代碼、數(shù)據(jù)和其他系統(tǒng)資源,如進(jìn)程創(chuàng)立的文件、管道、同步對(duì)象等。一個(gè)進(jìn)程也包含了一個(gè)或者多個(gè)運(yùn)行在此進(jìn)程內(nèi)的線程。,線程是進(jìn)程內(nèi)執(zhí)行代碼的獨(dú)立實(shí)體。沒有它,進(jìn)程中的程序代碼是不可能執(zhí)行的。操作系統(tǒng)創(chuàng)立進(jìn)行后會(huì)創(chuàng)立一個(gè)線程執(zhí)行進(jìn)程中的代碼,稱主線程,它在運(yùn)行過程中創(chuàng)立其他線程,一般將主線程創(chuàng)立的線程稱為該進(jìn)程的輔助線程。,進(jìn)程是不活潑的,一個(gè)進(jìn)程要完成任何事情,必須有一個(gè)運(yùn)行在它的地址空間中的線程。此線程負(fù)責(zé)執(zhí)行該進(jìn)程地址空間的代碼。每個(gè)進(jìn)程至少

10、擁有一個(gè)在它的地址空間中運(yùn)行的線程。對(duì)一個(gè)不包含任何線程的進(jìn)程來(lái)說(shuō),它是沒有理由繼續(xù)存在下去的,系統(tǒng)會(huì)自動(dòng)銷毀該進(jìn)程和它的地址空間。,進(jìn)程和程序,程序:一連串靜態(tài)的指令,進(jìn)程:一個(gè)容器,它包含一系列運(yùn)行在這個(gè)程序?qū)嵗舷挛闹械木€程使用的資源。,Win32進(jìn)程的兩個(gè)組成局部,進(jìn)程內(nèi)核對(duì)象:操作系統(tǒng)使用此內(nèi)核對(duì)象來(lái)管理該進(jìn)程。這個(gè)內(nèi)核對(duì)象也是操作系統(tǒng)存放進(jìn)程統(tǒng)計(jì)信息的地方。,私有的虛擬地址空間:此地址空間包含了所有可執(zhí)行的或者是DLL模塊的代碼和數(shù)據(jù),它也是程序動(dòng)態(tài)申請(qǐng)內(nèi)存的地方,比方說(shuō)線程堆棧和進(jìn)程堆。,應(yīng)用程序必須有一個(gè)入口函數(shù),它在程序開始運(yùn)行時(shí)被調(diào)用。控制臺(tái)應(yīng)用程序入口函數(shù)是,main,。

11、,int main(int argc,char*argv),應(yīng)用程序的啟動(dòng)過程,開始,主線程調(diào)用,C/C+,運(yùn)行期啟動(dòng)函數(shù),N,操作系統(tǒng)調(diào)用,CreateProcess,函數(shù)創(chuàng)建新的進(jìn)程,系統(tǒng)創(chuàng)建一個(gè)進(jìn)程內(nèi)核對(duì)象,使用計(jì)數(shù)初始化為,1,系統(tǒng)為進(jìn)程創(chuàng)建主線程,成功,調(diào)用程序入口函數(shù),main,Y,結(jié)束,系統(tǒng)為新進(jìn)程創(chuàng)建虛擬地址空間,加載應(yīng)用程序運(yùn)行時(shí)需要代碼和數(shù)據(jù),CreateProcess,函數(shù),WIN32API函數(shù)CreateProcess用來(lái)創(chuàng)立一個(gè)新的進(jìn)程和它的主線程,,這個(gè)新進(jìn)程運(yùn)行指定的可執(zhí)行文件。函數(shù)原型:BOOL CreateProcess(LPCTSTR lpApplicati

12、onName,/可執(zhí)行文件名稱 LPTSTR lpCommandLine,/指定要傳遞給執(zhí)行模塊的參數(shù) LPSECURITY_ATTRIBUTES lpProcessAttributes,/進(jìn)程平安性 LPSECURITY_ATTRIBUTES lpThreadAttributes,/進(jìn)程平安性 BOOL bInheritHandles,/指定當(dāng)前進(jìn)程中的可繼承句柄是否可被新進(jìn)程繼承 DWORD dwCreationFlags,/指定新進(jìn)程的優(yōu)先級(jí)及其他創(chuàng)立標(biāo)志,LPVOID lpEnvironment,/指定新進(jìn)程使用的環(huán)境變量,LPCTSTR lpCurrentDirectory,/指定新

13、進(jìn)程使用的當(dāng)前目錄,LPSTARTUPINFO lpStartupInfo,/指定新進(jìn)程中主窗口的位置、大小和句柄等,LPPROCESS_INFORMATION lpProcessInformation/返回新進(jìn)程的標(biāo)志信息,);,lpApplicationName:指向一個(gè)NULL結(jié)尾的、用來(lái)指定可執(zhí)行模塊的字符串。這個(gè)字符串可以是可執(zhí)行模塊的絕對(duì)路徑,也可以是相對(duì)路徑,在后一種情況下,函數(shù)使用當(dāng)前驅(qū)動(dòng)器和目錄建立可執(zhí)行模塊的路徑。這個(gè)參數(shù)可以被設(shè)為NULL,在這種情況下,可執(zhí)行模塊的名字必須處于 lpCommandLine 參數(shù)的最前面并由空格符與后面的字符分開。這個(gè)被指定的模塊可以是一個(gè)

14、Win32應(yīng)用程序。如果適當(dāng)?shù)淖酉到y(tǒng)在當(dāng)前計(jì)算機(jī)上可用的話,它也可以是其他類型的模塊如MS-DOS 或 OS/2。,lpCommandLine,:指向一個(gè),NULL,結(jié)尾的、用來(lái)指定要運(yùn)行的命令行。,這個(gè)參數(shù)可以為空,那么函數(shù)將使用參數(shù)指定的字符串當(dāng)作要運(yùn)行的程序的命令行。如果,lpApplicationName,和,lpCommandLine,參數(shù)都不為空,那么,lpApplicationName,參數(shù)指定將要被運(yùn)行的模塊,,lpCommandLine,參數(shù)指定將被運(yùn)行的模塊的命令行。新運(yùn)行的進(jìn)程可以使用,GetCommandLine,函數(shù)獲得整個(gè)命令行。,C,語(yǔ)言程序可以使用,argc,和

15、,argv,參數(shù)。,如果lpApplicationName參數(shù)為空,那么這個(gè)字符串中的第一個(gè)被空格分隔的要素指定可執(zhí)行模塊名。如果文件名不包含擴(kuò)展名,那么.exe將被假定為默認(rèn)的擴(kuò)展名。如果文件名以一個(gè)點(diǎn).結(jié)尾且沒有擴(kuò)展名,或文件名中包含路徑,.exe將不會(huì)被加到后面。如果文件名中不包含路徑,Windows將按照如下順序?qū)ふ疫@個(gè)可執(zhí)行文件:1.當(dāng)前應(yīng)用程序的目錄。2.父進(jìn)程的目錄。3.Windows 95:Windows系統(tǒng)目錄,可以使用GetSystemDirectory函數(shù)獲得。Windows NT:32位Windows系統(tǒng)目錄??梢允褂肎etSystemDirectory函數(shù)獲得,目錄名

16、是SYSTEM32。4.在Windows NT中:16位Windows系統(tǒng)目錄。不可以使用Win32函數(shù)獲得這個(gè)目錄,但是它會(huì)被搜索,目錄名是SYSTEM。5.Windows目錄??梢允褂肎etWindowsDirectory函數(shù)獲得這個(gè)目錄。6.列在PATH環(huán)境變量中的目錄。如果被創(chuàng)立的進(jìn)程是一個(gè)以MS-DOS或16位Windows為根底的應(yīng)用程序,lpCommandLine參數(shù)應(yīng)該是一個(gè)以可執(zhí)行文件的文件名作為第一個(gè)要素的絕對(duì)路徑,因?yàn)檫@樣做可以使32位Windows程序工作的很好,這樣設(shè)置lpCommandLine參數(shù)是最強(qiáng)壯的。,dwCreationFlags:指定附加的、用來(lái)控制優(yōu)先級(jí)和進(jìn)程的創(chuàng)立的標(biāo)志。以下的創(chuàng)立標(biāo)志可以以除下面列出的方式外的任何方式組合后指定。,值:,CREATE_DEFAULT_ERROR_MODE,含義:新的進(jìn)程不繼承調(diào)用進(jìn)程的錯(cuò)誤模式。,值:,CREATE_NEW_CONSOLE,含義:新的進(jìn)程將使用一個(gè)新的控制臺(tái),而不是繼承父進(jìn)程的控制臺(tái)。這個(gè)標(biāo)志不能與,DETACHED_PROCESS,標(biāo)志一起使用。,值:,CREATE_NEW_PROCESS_

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

最新文檔

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

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

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


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

五月丁香婷婷狠狠色,亚洲日韩欧美精品久久久不卡,欧美日韩国产黄片三级,手机在线观看成人国产亚洲