操作系統(tǒng)原理實驗四_第1頁
操作系統(tǒng)原理實驗四_第2頁
操作系統(tǒng)原理實驗四_第3頁
操作系統(tǒng)原理實驗四_第4頁
操作系統(tǒng)原理實驗四_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、實驗4進程控制1、實驗目的(1)通過對WindowsXP進行編程,來熟悉和了解系統(tǒng)。(2)通過分析程序,來了解進程的創(chuàng)建、終止。2、實驗工具(1) 一臺WindowsXP操作系統(tǒng)的計算機。(2)計算機裝有Microsoft Visual Studio C+專業(yè)版或企業(yè)版。3、預備知識- CreateProcess)調用:創(chuàng)建一個進程。- ExitProcess ()調用:終止一個進程。驗編程(1)編程一利用CreateProcess()數創(chuàng)建一個子進程并且裝入 畫圖程序。閱讀該程序,完成實驗任務。源程序如下:include include int main(VOID) STARTUPINFO

2、si;PROCESS INFORMATION pi;ZeroMemory(&si,sizeof(si);=sizeof(si);ZeroMemory(&pi,sizeof(pi);if(!CreateProcess(NULL,“ c: WINDOWSsystem32 ”,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi) fprintf(stderr, “ Creat Process Failed );return 1;WaitForSingleObject,INFINITE);Printf( “ child Complete ” );CloseHandle;CloseH

3、andle(pi hThread);在“命令提示符”窗口運行CL 命令產生可執(zhí)行程序:C: CL實驗任務:寫出程序的運行結果。4正在運行的進程、 編程二下面給出了一個使用進程和操作系統(tǒng)版本信息應用程序 (文件名為。它利用進程信息查詢的API 函數 GetProcessVersion()與GetVersionEx()的共同作用。確定運行進程的操作系統(tǒng)版本號。閱讀該程序并完成實驗任務。#include#include std:endl; std:endl;實驗參考:在Visual C+窗口的工具欄中單擊“打開”按鈕,在“打開“對話框中找到并打開源程序。單擊 Build 菜單中的 Compile 命

4、令,再單擊“是”按鈕確認。系統(tǒng)對源程序進行編譯。編譯完成后,單擊Build菜單中的Build命令,建立可執(zhí)行文件。在工具欄單擊Execute Program(執(zhí)行程序)按鈕,執(zhí)行程序。實驗任務:寫出程序運行后的以下幾項結果。當前PID信息 。當前操作系統(tǒng)版本 。系統(tǒng)提示信息。5、終止進程(3)編程三 下面給出了一個終止進程的應用程序(文件名 為),它先創(chuàng)建一個子進程,然后命令它發(fā)出“自殺彈”互斥體去終 止自身的運行。閱讀該程序并完成實驗任務。#include#include#includesatic LPCTSTR g szMutexName= ”創(chuàng)建當前進程的克隆進程的 簡單方法Void S

5、tartClone() std : endl;:StartClone(); std:endl;二ReleaseMutex(hMutexSuicide); std:endl;二WaitForSingleObject(hMutexSuicide,INFINITE); 1 & &二strcmp(argv 1,” child )=0)Child();elseParent();Return 0;分析:程序說明了一個進程從“生”到“死”的整個一生,第一次執(zhí)行時,它創(chuàng)建一個子進程,其行為如同“父親” 。在創(chuàng)建子進程之前,先創(chuàng)建一個互斥的內核對象,其行為對于子進程來說,如同一個“自殺彈”。當創(chuàng)建子進程時,就打

6、開了互斥體并在其他線程中進行別的處理工作,同時等待著父進程使用 ReleaseMutex() API發(fā)出“死亡”信號。然后用Sleep) API調用來模擬父進程處理其他工作, 等完成時,指令子進程終止。當調用ExitProcess ()時要小心,進程中的所有線程都被立刻通 知停止。在設計應用程序時,必須讓主線程在正常的C+運由期關閉(這是由編譯器提供默認行為)之后來調用這一函數。當它轉向受 信狀態(tài)時,通??蓜?chuàng)建一個每個活動線程都可等待和停止的終止事 件。在正常的終止操作中,進程的每個工作線程都要終止,由主線程 序員調用ExitProcess。接著,管理層對進程增加的所有對象釋放 引用,并將用G

7、etExitChodeProcess()建立的退出代碼從 STILL _ ACTIVE改變?yōu)镋xitProcess ()調用中返回的值。最后,主線程對象 也如同進程對象一樣轉變?yōu)槭苄艩顟B(tài)。等到所有打開的句柄都關閉之后,管理層的對象管理器才銷毀進 程對象本身。還沒有一種函數可取得終止后的進程對象為其參數,從而使具其“復活”。當進程對象引用一個終止了的對象時,有好幾個 API函數仍然是有用的。進程可使用退出代碼將終止方式通知給調用 GetExitCodeProcess 的其他進程。同時,GetProcessTimes() API 函 數可向主調者顯示進程的終止時間。實驗參考:在Visual C+窗口的工具欄中單擊“打開”按鈕,在“

溫馨提示

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

評論

0/150

提交評論