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

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

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

15 積分

下載資源

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

資源描述:

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

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

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

3、,)在硬件上為任務(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 xFFFFFFFF,)(,2,32,,,4GB,)。,32,位機(jī)器上的,RAM,的大小很難達(dá)到,4GB,,,windows,為每個(gè)進(jìn)程分配,4GB,的地址空間主要依靠,cpu,的支持。,cpu,在保護(hù)模式下支持虛擬內(nèi)存。它可以幫助操作系統(tǒng)將磁盤空間當(dāng)作內(nèi)

4、存空間來使用。,各進(jìn)程內(nèi)的地址空間安排,2GB,的系統(tǒng)空間,2GB,的用戶空間,0 xFFFFFFFF,0 x80000000,0 x7FFFFFFF,0 x00000000,整個(gè)系統(tǒng)共用,每個(gè)進(jìn)程私有,用戶空間部分是進(jìn)程私有地址空間,進(jìn)程不能以任何方式讀、寫其他進(jìn)程此部分空間中的數(shù)據(jù)。對所有應(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ù)起來,如果試圖訪問這部分內(nèi)存,訪問線程會(huì)遇

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

6、的系統(tǒng)和設(shè)備驅(qū)動(dòng)程序共用一塊虛擬地址空間。即整個(gè)系統(tǒng)共用的,2G,部分。虛擬內(nèi)存中的每一頁的頁屬性中都有訪問模式標(biāo)記,它標(biāo)識了哪一個(gè)模式下的代碼才有權(quán)限訪問該頁。系統(tǒng)地址空間的頁僅僅能夠從內(nèi)核模式訪問,所有用戶地址空間的頁都從用戶模式訪問。,當(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)核模式:,研究,WDM,(,Windows Driver Model,),設(shè)備驅(qū)動(dòng)類,用戶模式:,SD

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

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

9、使用計(jì)數(shù)屬性指明進(jìn)程對特定內(nèi)核對象的引用次數(shù),第一次創(chuàng)建內(nèi)核對象時(shí),系統(tǒng)為進(jìn)程分配內(nèi)核對象資源,并將該內(nèi)核對象的使用計(jì)數(shù)屬性初始化為,1,。打開一次使用計(jì)數(shù)加,1,,關(guān)閉,系統(tǒng)將使用計(jì)數(shù)減,1,,當(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)建的文件、管道、同步對象等。一個(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)程中的代碼,稱主線程,它

10、在運(yùn)行過程中創(chuàng)建其他線程,一般將主線程創(chuàng)建的線程稱為該進(jìn)程的輔助線程。,進(jìn)程是不活潑的,一個(gè)進(jìn)程要完成任何事情,必須有一個(gè)運(yùn)行在它的地址空間中的線程。此線程負(fù)責(zé)執(zhí)行該進(jìn)程地址空間的代碼。每個(gè)進(jìn)程至少擁有一個(gè)在它的地址空間中運(yùn)行的線程。對一個(gè)不包含任何線程的進(jìn)程來說,它是沒有理由繼續(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)核對象:操作系統(tǒng)使用此內(nèi)核對象來管理該進(jìn)程。這個(gè)內(nèi)核對象也是操作系統(tǒng)存放進(jìn)程統(tǒng)計(jì)信息的地方。,私有的虛擬地址空間:此地址

11、空間包含了所有可執(zhí)行的或者是,DLL,模塊的代碼和數(shù)據(jù),它也是程序動(dòng)態(tài)申請內(nèi)存的地方,比如說線程堆棧和進(jìn)程堆。,應(yīng)用程序必須有一個(gè)入口函數(shù),它在程序開始運(yùn)行時(shí)被調(diào)用??刂婆_(tái)應(yīng)用程序入口函數(shù)是,main,。,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)核對象,使用計(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ù),CreateProces

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

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

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

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

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

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

相關(guān)資源

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

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

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


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