OS進(jìn)程控制試驗報告_第1頁
OS進(jìn)程控制試驗報告_第2頁
OS進(jìn)程控制試驗報告_第3頁
OS進(jìn)程控制試驗報告_第4頁
OS進(jìn)程控制試驗報告_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、學(xué) 號2016143222姓名王娟實驗日期2018.04.13實驗名稱Windows進(jìn)程觀察與控制實驗?zāi)康模?、熟悉Windows2000/XP中任務(wù)管理器的使用。2、通過任務(wù)管理器識別操作系統(tǒng)中的進(jìn)程和線程的相關(guān)信息。3、掌握利用spy+.exe來察看Windows中各個任務(wù)的更詳細(xì)信息。4、通過對Windows 2000編程,進(jìn)一步熟悉操作系統(tǒng)的基本概念,較好地理解Windows 2000的結(jié)構(gòu)。實驗內(nèi)容:1、啟動操作系統(tǒng)自帶的任務(wù)管理器2、調(diào)整任務(wù)管理器的“查看”中的相關(guān)設(shè)置,顯示關(guān)于進(jìn)程的以下各項信息3、從桌面啟動辦公軟件“Word”,在任務(wù)管理器中找到該軟件的登記,并將其結(jié)束掉。再從

2、任務(wù)管理器中分別找到下列程序:winlogon.exe、lsass.exe、csrss.exe、smss.exe,試著結(jié)束它們在任務(wù)管理器中找到進(jìn)程“explorer.exe,將之結(jié)束掉,并將桌面上你打開的所有窗口最小化運行“spy+.exe”應(yīng)用軟件,點擊按鈕”,切換到窗口顯示欄上,查看窗口信息,并執(zhí)行菜單項“SpyMessage”,用 “Finder Tool” 查看 windows 各個窗口點擊按鈕 ”,切換到進(jìn)程顯示欄上,查看進(jìn)程“explorer.exe”的各項信息注意某些線程前有“ 十 ”,如圖所示:,說明二者之間的差異獲得進(jìn)程對象的句柄和優(yōu)先級。獲取系統(tǒng)所有進(jìn)程的進(jìn)程號和文件名。

3、10、運行程序 2-1、2-2、2-3實驗原理:任務(wù)管理器Windows XP的任務(wù)管理器提供了用戶計算機上正在運行的程序和進(jìn)程的相關(guān)信息,也顯示了最常用的 量度進(jìn)程性能的單位。使用任務(wù)管理器,可以打開監(jiān)視計算機性能的關(guān)鍵指示器,快速查看正在運行的程序的狀態(tài), 或者終止已停止響應(yīng)的程序。也可以使用多個參數(shù)評估正在運行的進(jìn)程的活動,以及查看CPU和內(nèi)存的使用情況的圖形和數(shù)據(jù)。.創(chuàng)建進(jìn)程的API函數(shù):CreateProcess()調(diào)用的核心參數(shù)是可執(zhí)行文件運行時的文件名及其命令行。表2_1 CreateProcess()函數(shù)的參數(shù)參數(shù)名稱使用目的LPCTSTR IpApplivationName全

4、部或部分地指明包括可執(zhí)行代碼的EXE文件的文件名LPCTSTR IpCommandLine向可執(zhí)行文件發(fā)送的參數(shù)LPSECURIITY_ATTRIBUTESIpProcessAttributes設(shè)定進(jìn)程對象的安全性。NULL為默認(rèn)安全性。LPSECURIITY_ATTRIBUTESlpThreadAttributes設(shè)定其線程對象的安全性。NULL為默認(rèn)安全性。BOOL bInheritHandle子進(jìn)程是否繼承父進(jìn)程繼承,一般設(shè)為FALSE。DWORD dwCreationFlage特殊的創(chuàng)建標(biāo)志(如CREATE_SUSPENDED)的位標(biāo)記LPVOID lpEnvironment一般為NU

5、LL,使子進(jìn)程能夠繼承它的父進(jìn)程正在使用的一組環(huán)境字符串。LPCTSTR lpCurrentDirectory設(shè)置子進(jìn)程的當(dāng)前驅(qū)動器和目錄。如是NULL,則新進(jìn)程的工作目錄將與生成新進(jìn)程的應(yīng)用程序的目錄相同。STARTUPINFO lpStartupInfo包括新進(jìn)程的運行配置的詳情。使用時應(yīng)首先進(jìn)行初始化。cb 必須初始化為 sizeof(STARTUPINFO)LPPROCESS_INFORMATIONlpProcessInformation新進(jìn)程的返回信息。如新進(jìn)程和主線程的句柄和ID其中dwCreationFlags參數(shù)中指明系統(tǒng)應(yīng)該給予新進(jìn)程什么行為。經(jīng)常使用的標(biāo)志是CREATE_S

6、USPNDED,告訴主線程 立刻暫停。當(dāng)準(zhǔn)備好時,應(yīng)該使用ResumeThread() API來啟動進(jìn)程。另一個常用的標(biāo)志是CREATE_NEW_CONSOLE,告 訴新進(jìn)程啟動自己的控制臺窗口,而不是利用父窗口。這一參數(shù)還允許設(shè)置進(jìn)程的優(yōu)先級,用以向系統(tǒng)指明,相對 于系統(tǒng)中所有其他的活動進(jìn)程來說,給此進(jìn)程多少CPU時間。.正在運行的進(jìn)程一個進(jìn)程擁有至少一個執(zhí)行線程一一主線程,這種進(jìn)程使用主線程來指示它的存在。當(dāng)主線程結(jié)束時,調(diào)用 ExitProcess() API函數(shù),通知系統(tǒng)終止它所擁有的所有正在運行、準(zhǔn)備運行或正在掛起的其他線程。當(dāng)進(jìn)程正在運 行時,可以查看它的許多特性,其中少數(shù)特性也允

7、許加以修改。常用的API函數(shù)有: GetCurrentProcessId():用來查看進(jìn)程標(biāo)識符(PID);GetModuleFileName()和 GetCommandLine():可以給運行期環(huán)境的信息。GetGuiResources():可用來查看進(jìn)程的GUI資源。進(jìn)程的其他性能信息可通過 GetProcessIoCounters()、GetProcessPriorityBoost()、GetProcessTimes()和GetProcessWorkingSetSize() API 得到。以上這幾個 API 函數(shù)都只需要具有 PROCESS_QUERY_INFORMATION 訪問權(quán)限

8、的指向所感興趣進(jìn)程的句柄。GetProcessVersion():可用于進(jìn)程信息查詢。GetVersionEx():可得到系統(tǒng)的版本號。本實驗程序3_6中列出了這兩個API函數(shù)與的共同作用,可確定運行進(jìn)程 的.終止進(jìn)程ExitProcess()可被進(jìn)程自身調(diào)用以正常方式終止運行。TerminateProcess()可被外部進(jìn)程調(diào)用后終止某進(jìn)程,由于關(guān)閉時的途徑不太正常,有可能引起錯誤的行為。實驗過程與結(jié)果:序號進(jìn)程名稱,進(jìn)程續(xù)程數(shù)里v占用內(nèi)存:優(yōu)先級占CPU時間p虛擷內(nèi)存WwI*3JoOrp. esek37卻普通00:00:28275044k產(chǎn)I ooltlas s 2 守OOCiOOD&L0

9、00004502,00010060 n戶工ME干oocioaD&i00000450:5P00 01 u u SC-1 oult i匚后一匚 las s 3 2 卜ooaooBaiUOOU 04504,00 01U 088-1 oult idec las e 2 個OOl:lLiOB34U000045000 01U 086-1 oult icsc las s 2 號OOl:lLiOB34LILIOI:IC4SO序號“理:程工。戶球程工03基車優(yōu)先期當(dāng)前優(yōu)先揚產(chǎn)CPU日寸同產(chǎn)上下文開關(guān)F 4E5D- ODOC4-41 NQ = :12x1-12 1 4之2口口口口口4匕口甲3a|:| - 0 0

10、-o-l. 274*40 165:34OOOOMED OEE3C*BQ1 24 = = 4口口口口口4 匕口平|:|:|:|0 0&148戶12+- - 0 0 - OOn 015*450B20 0 0 0 04 50,OOOOQBdB自卡121P = 00:00. 口口山4 口出戶注意某些線程前有“ 十 ”,如圖所示:,說明二者之間的差異是有無子進(jìn)程,“ + ”表示有子進(jìn)程。(1)獲得進(jìn)程對象的句柄和優(yōu)先級。程序1_1確定自己的優(yōu)先權(quán)的簡單應(yīng)用程序include include /void main() HANDLE hProcessThis = GetCurrentProcess() ;

11、/ 從當(dāng)前進(jìn)程中提取句柄DWORD dwPriority = GetPriorityClass(hProcessThis) ; / 請求內(nèi)核提供該進(jìn)程的優(yōu)先權(quán)/ SetPriorityClass(hProcessThis, HIGH_PRIORITY_CLASS);cout Current process priority:;cout dwPriorityendl;cout REALTIME_PRIORITY_CLASS:REALTIME_PRIORITY_CLASSendl;cout HIGH_PRIORITY_CLASS:HIGH_PRIORITY_CLASSendl;cout NORMA

12、L_PRIORITY_CLASS:NORMAL_PRIORITY_CLASSendl;cout IDLE_PRIORITY_CLASS:IDLE_PRIORITY_CLASSendl;) 何為進(jìn)程“句柄”:句柄實際是一個指針,他指向一塊包含具體信息數(shù)據(jù)的內(nèi)存,可以當(dāng)做索引,所以進(jìn)程句柄是當(dāng)你要訪問該進(jìn)程時取得的,使用完畢必須釋放。分析、運行該程序,寫出運行結(jié)果:Current process priority: 32REALTIME_PRIORITY_CLASS:256HIGH_PRIORITY_CLASS:128NORMAL _PRIORIfY_CLAS S:32IDLE PRIORITY

13、CLASS:64Press any key to continue修改程序,改變程序的優(yōu)先級include include /void main() HANDLE hProcessThis = GetCurrentProcess() ; / 從當(dāng)前進(jìn)程中提取句柄DWORD dwPriority = GetPriorityClass(hProcessThis) ; / 請求內(nèi)核提供該進(jìn)程的優(yōu)先權(quán) SetPriorityClass(hProcessThis, HIGH_PRIORITY_CLASS);cout Current process priority:;cout dwPriorityend

14、l;cout REALTIME_PRIORITY_CLASS:REALTIME_PRIORITY_CLASSendl;cout HIGH_PRIORITY_CLASS:HIGH_PRIORITY_CLASSendl;cout NORMAL_PRIORITY_CLASS:NORMAL_PRIORITY_CLASSendl;cout IDLE_PRIORITY_CLASS:IDLE_PRIORITY_CLASSendl; )9、獲取系統(tǒng)所有進(jìn)程的進(jìn)程號和文件名。程序1_2include include include void main() /對當(dāng)前系統(tǒng)中運行的所有進(jìn)程拍取“快照”HANDLE h

15、Snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);/ 初始化進(jìn)程入口PROCESSENTRY32 pe;ZeroMemory(&pe, sizeof(pe);pe.dwSize = sizeof(pe);BOOL bMore = Process32First(hSnapshot, &pe);while(bMore) coutProcess ID: pe.th32ProcessID exe filename: pe.szExeFileHID:1620 ex e f ilenaiue; svehost. exePtc:-cp:sID

16、z1636 ex 白 f i l&naiiL9 : WD i 白口 1音心 Co nt ai ne iIDi1692exe filename: svchostB exeProcessID J1740exe filename: daisHcst. exeProcessID:1748exe filename: svehost. exePrccSSID:1756exe filename: svehost. exeProcessID:17SBexo filename: svehost. exoPlQCCSSID:17S8&x f ilenanie: svehost. ex-eProcessID:fiL

17、gnamg: Memory CompressionProcessID:1956exe filename: svehost- exe修改程序,獲取系統(tǒng)所有進(jìn)程的優(yōu)先級。include include include void main() /對當(dāng)前系統(tǒng)中運行的所有進(jìn)程拍取“快照”HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);/ 初始化進(jìn)程入口PROCESSENTRY32 pe;ZeroMemory(&pe, sizeof(pe);pe.dwSize = sizeof(pe);BOOL bMore = Proce

18、ss32First(hSnapshot, &pe);while(bMore) coutProcess ID: pe.th32ProcessID exe filename: pe.szExeFileendl;:More _ &pe);HANDLE hProcessThis = GetCurrentProcess();DWORD dwPriority = GetPriorityClass(hProcessThis);SetPriorityClass(hProcessThis, HIGH_PRIORITY_CLASS);cout Current process priority:;cout dwPr

19、iorityendl;cout REALTIME_PRIORITY_CLASS:REALTIME_PRIORITY_CLASSendl;cout HIGH_PRIORITY_CLASS:HIGH_PRIORITY_CLASSendl;cout NORMAL_PRIORITY_CLASS:NORMAL_PRIORITY_CLASSendl;cout IDLE_PRIORITY_CLASS:IDLE_PRIORITY_CLASSendl;)思考題.分析spy+軟件中窗口、進(jìn)程和線程的其它信息。Spy+工具用來監(jiān)視系統(tǒng)的進(jìn)程、線程、窗口和窗口消息。默認(rèn)界面可查看所有頂層窗口,展開可顯示子窗口。右鍵窗

20、口,選擇“消息”,可打開該窗口的消息查看窗口。里面實時顯示當(dāng)前消息。.編寫程序,獲取系統(tǒng)所有進(jìn)程的優(yōu)先級。include include include void main() /對當(dāng)前系統(tǒng)中運行的所有進(jìn)程拍取“快照”HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);/ 初始化進(jìn)程入口PROCESSENTRY32 pe;ZeroMemory(&pe, sizeof(pe);pe.dwSize = sizeof(pe);BOOL bMore = Process32First(hSnapshot, &pe);whil

21、e(bMore) coutProcess ID: pe.th32ProcessID exe filename: pe.szExeFileendl;bMore = Process32Next(hSnapshot, &pe);)HANDLE hProcessThis = GetCurrentProcess();DWORD dwPriority = GetPriorityClass(hProcessThis);SetPriorityClass(hProcessThis, HIGH_PRIORITY_CLASS);cout Current process priority:;cout dwPriori

22、tyendl;cout REALTIME_PRIORITY_CLASS:REALTIME_PRIORITY_CLASSendl;cout HIGH_PRIORITY_CLASS:HIGH_PRIORITY_CLASSendl;cout NORMAL_PRIORITY_CLASS:NORMAL_PRIORITY_CLASSendl;cout IDLE_PRIORITY_CLASS:IDLE_PRIORITY_CLASSendl;)程序2_1#include #include using namespace std;int main()(cout Im the father process, ru

23、nning.n endl;LPTSTR lpCommandLine=c:Windowsnotepad.exe”;STARTUPINFO si;memset(&si,0,sizeof(si);si.cb=sizeof(si);PROCESS_INFORMATION pi;/Create a child processint i=CreateProcess(NULL,lpCommandLine,NULL,NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL,NULL,&si,&pi);if (i) CloseHandle(pi.hThread);for(int i=0;

24、i=100;i+) couti=iendl;Sleep(10);LPDWORD exitcode;/Please run none or each of the following command lines.TerminateProcess(pi.hProcess,0); WaitForSingleObject(pi.hProcess, INFINITE);/ 等子進(jìn)程結(jié)束后繼續(xù)運行。CloseHandle(pi.hProcess);else cout Create Child Process failed. endl;cout Father process is ending.n endl

25、;return 0;分析并運行該程序,結(jié)果為:Im the father process, ninning.1=01=1i=2i=3i=4i=3i=6i=7i=8i=9i=10i=lli=12i=131=141=13i=16i=17i=18i=19i=20i=21i=22i=23i=24i=25i=26i=2T運行到i=100,并彈出一個記事本 分別運行帶標(biāo)號的語句,并分析其功能。1=96 i=?7 i=98 i=99 1=100TerminateProcess(pi.hProcess,0);是終止進(jìn)程的意思。WaitForSingleObject(pi.hProcess, INFINITE)

26、;等待記事本程序關(guān)閉2.程序2_2include include include static LPCTSTR MutexName = sign;/創(chuàng)建當(dāng)前進(jìn)程的克隆進(jìn)程void StartClone()(TCHAR szFilename MAX_PATH;GetModuleFileName(NULL, szFilename, MAX_PATH);TCHAR szCmdLineMAX_PATH;sprintf(szCmdLine, %s child , szFilename);STARTUPINFO si;ZeroMemory(reinterpret_cast (&si) , sizeof(s

27、i); si.cb = sizeof(si);PROCESS_INFORMATION pi;BOOL bCreateOK = CreateProcess( szFilename, szCmdLine, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi );if (bCreateOK) CloseHandle(pi.hProcess);CloseHandle(pi.hThread);void Parent()/創(chuàng)建互斥程序體HANDLE hMutexSuicide = CreateMutex(NULL,安全屬性,如果為空,句柄

28、不能被子進(jìn)程繼承。TRUE, 本線程擁有該互斥體。MutexName); 互斥體的名字cout Creating the child process. endl;StartClone();Sleep(5000);cout Telling the child process to quit. endl;ReleaseMutex(hMutexSuicide);CloseHandle(hMutexSuicide);void Child()HANDLE hMutexSuicide = OpenMutex(SYNCHRONIZE,/SYNCHRONIZE,/打開用于同步FALSE,/FALSE,/不需要

29、向下傳遞MutexName);MutexName);/名稱if (hMutexSuicide != NULL)計算進(jìn)程消耗在內(nèi)核模式下的時間百分?jǐn)?shù)。DWORD GetKernelModePercentage(const FILETIME & ftKernel, const FILETIME & ftUser)(ULONGLONG qwKernel =( ( (ULONGLONG) ftKernel.dwHighDateTime) 32) +ftKernel.dwLowDateTime;ULONGLONG qwUser =( ( (ULONGLONG) ftUser.dwHighDateTime

30、) 32) +ftUser.dwLowDateTime;ULONGLONG qwTotal = qwKernel + qwUser;DWORD dwPct = (DWORD) ( ( (ULONGLONG) 100*qwKernel) / qwTotal);return(dwPct);)void main()(HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 快照中包含所有進(jìn)程0) ;/該參數(shù)被忽略PROCESSENTRY32 pe;ZeroMemory(&pe, sizeof(pe);pe.dwSize = siz

31、eof(pe);BOOL bMore = Process32First(hSnapshot, &pe);while(bMore) /按所有進(jìn)程循環(huán) HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe.th32ProcessID);if (hProcess != NULL) FILETIME ftCreation, ftExit, ftKernelMode, ftUserMode;GetProcessTimes( hProcess,&ftCreation,/進(jìn)程的啟動時間&ftExit,/結(jié)束時間;JFrocess E Proc

32、ess gProcess El!Proc:!es:3 Pioce-ssHrocess Procegs Process Process&ftKernelMode,&ftUserMode)DWORD dwPctKernel = GetKernelModePercentage(ftKernelMode, ftUserMode );cout “Process ID: ” pe.th32ProcessID “, EXE file: ” pe.szExeFile ,% in kernel mode: ” dwPctKernel endl;CloseHandle(hProcess);)bMore = Pro

33、cess32Next(hSnapshot, &pe);)分析并運行該程序,結(jié)果為:;JFrocess E Process gProcess El!Proc:!es:3 Pioce-ssHrocess Procegs Process Process&ftKernelMode,&ftUserMode)DWORD dwPctKernel = GetKernelModePercentage(ftKernelMode, ftUserMode );cout “Process ID: ” pe.th32ProcessID “, EXE file: ” pe.szExeFile ,% in kernel mo

34、de: ” dwPctKernel h EXE fil&: BuntiaeBrokeT- exe,. % in kernel modR: 51S124n EXE file; ilicrosc-ftEdgeCP. ese. % in kernel mode: 419648卜 EXE file: icrosoftEdaeCP. exe. % in kernel mod&z 166524f EXE tile: RuntimioEmkM.群a , in kernel nwde; 5893EXE file: SysteuSetting5Broker. eie. % in kernel iMde: 501

35、146B, EXE file: MicrosoftEd5eCP, ese,. % in kernel mode: 33488仇 EXE file: MicrosoftEdgeCP, exe,書 in kernel mode: 60732星 EXE fi le: Settin5ScH-o5t, eie* 看 in kerne 1 mode: 71133珞 EXE file: WicrosoftEdgeCP- exeh % in kernel mode: 661S90f EXE M rjc3 % in kernel z(cde: 519996h EXE file: TXPlfatfcirm. ese, % in kernel modez 6614320, EXE f ilfr:的EstRniaL 線鳥 % in k&rnel made: 276124P EXE file: SogouCloud, ms. % in kernel mode: 73900& EXE file: WINWORD, EXE, % in kernel loode: SB42&8r EXE file: YWDEV, EXE,% in kernel mode: 03962E, EXE file: dllhos

溫馨提示

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

最新文檔

評論

0/150

提交評論