進程的創(chuàng)立試驗報告_第1頁
進程的創(chuàng)立試驗報告_第2頁
進程的創(chuàng)立試驗報告_第3頁
進程的創(chuàng)立試驗報告_第4頁
進程的創(chuàng)立試驗報告_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

本文格式為Word版,下載可任意編輯——進程的創(chuàng)立試驗報告

操作系統(tǒng)實驗報告

課程名稱試驗項目名稱學號姓名學生所在學院操作系統(tǒng)試驗進程的創(chuàng)立班級專業(yè)指導教師試驗室名稱地點

哈爾濱工程大學計算機科學與技術學院

一、試驗概述

1.試驗名稱進程的創(chuàng)立2.試驗目的

(1)練習使用EOSAPI函數CreateProcess創(chuàng)立一個進程,把握創(chuàng)立進程的方法,理解進程和程序的區(qū)別。

(2)調試跟蹤CreateProcess函數的執(zhí)行過程,了解進程的創(chuàng)立過程,理解進程是資源分派的單位。

3.試驗類型驗證性試驗4.試驗內容

(1)、準備試驗(2)、練習使用控制臺命令創(chuàng)立EOS應用程序的進程(3)、練習通過編程的方式讓應用程序創(chuàng)立另一個應用程序的進程(4)、調試CreateProcess函數(5)、調試PsCreateProcess函數

①調試進程控制塊的創(chuàng)立過程

②調試初始化進程控制塊中各個成員變量的過程二、試驗環(huán)境

EOS操作系統(tǒng)、OSLab軟件三、試驗過程

1.設計思路和流程圖2.算法實現

3.需要解決的問題及解答

(1)在源代碼文件NewTwoProc.c提供的源代碼基礎上進行修改,要求使用hello.exe同時創(chuàng)立10個進程。提醒:可以使用PROCESS_INFORMATION類型定義一個有10個元素的數組,每一個元素對應一個進程。使用一個循環(huán)創(chuàng)立10個子進程,然后再使用一個循環(huán)等待10個子進程終止,得到退出碼后關閉句柄。答:后文中,有此題解決方案。

(2)嘗試根據之前對PsCreateProcess函數和PspCreateProcessEnvironment函數執(zhí)行過程的跟蹤調試,繪制一幅進程創(chuàng)立過程的流程圖。

1

(3)在PsCreateProcess函數中調用了PspCreateProcessEnvironment函數后又先后調用了PspLoadProcessImage和PspCreateThread函數,學習這些函數的主要功能。能夠交換這些函數被調用的順序嗎?思考其中的原因。

答:PspCreateProcessEnvironment的主要功能是創(chuàng)

創(chuàng)立了地址空間和分派了句柄表。PspLoadProcessImage是將進程的可執(zhí)行映像加載到了進程的地址空間中。PspCreateThread創(chuàng)立了進程的主線程。這三個函

2

知道自己要從哪里開始執(zhí)行,執(zhí)行哪些指令。因此不能交換他們的順序。

4.主要數據結構、實現代碼及其說明

主要使用PROCESS_INFORMATION類型定義一個有10個元素的數組,每一個元素對應一個進程。使用一個循環(huán)創(chuàng)立10個子進程,然后再使用一個循環(huán)等待10個子進程終止,得到退出碼后關閉句柄。

5.源程序并附上解釋

使用hello.exe同時創(chuàng)立10個進程的原代碼及解釋如下:#include\//main函數參數的意義:

//argc-argv數組的長度,大小至少為1,argc-1為命令行參數的數量。//argv-字符串指針數組,數組長度為命令行參數個數+1。其中argv[0]固定指向當前

//進程所執(zhí)行的可執(zhí)行文件的路徑字符串,argv[1]及其后面的指針指向各個命令行//參數。

//例如通過命令行內容\啟動進程后,hello.exe的main函

//數的參數argc的值為3,argv[0]指向字符串\,argv[1]指向

//參數字符串\,argv[2]指向參數字符串\。intmain(intargc,char*argv[]){

//啟動調試EOS應用程序前要特別注意下面的問題:

//1、假使要在調試應用程序時能夠調試進入內核并顯示對應的源碼,//必需使用EOS核心項目編譯生成完全版本的SDK文件夾,然//后使用此文件夾覆蓋應用程序項目中的SDK文件夾,并且EOS//核心項目在磁盤上的位置不能改變。

//2、在啟動調試應用程序之前必需首先刪除/禁用所有的斷點,在斷//點中斷(int3)被命中后才能重新添加/啟用斷點,否則啟動//調試會失敗。STARTUPINFOStartupInfo;

3

PROCESS_INFORMATIONProcInfo[10];ULONGulExitCode;//子進程退出碼

INTnResult=0;//main函數返回值。0表示成功,非0表示失敗。inti,j;

//#ifdef_DEBUG

//__asm(\//#endif

printf(\10processesandwaitfortheprocessesexit...\\n\\n\//使子進程和父進程使用一致的標準句柄。

StartupInfo.StdInput=GetStdHandle(STD_INPUT_HANDLE);StartupInfo.StdOutput=GetStdHandle(STD_OUTPUT_HANDLE);StartupInfo.StdError=GetStdHandle(STD_ERROR_HANDLE);//為一個應用程序同時創(chuàng)立10個子進程。for(i=0;i<10;i++)

if(CreateProcess(\else{

for(j=0;j<i;j++){}

printf(\}

4

NULL,0,

WaitForSingleObject(ProcInfo[j].ProcessHandle,INFINITE);//得到并輸出子進程的退出碼。

GetExitCodeProcess(ProcInfo[j].ProcessHandle,printf(\//關閉不再使用的句柄。

CloseHandle(ProcInfo[j].ProcessHandle);Clo

溫馨提示

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

評論

0/150

提交評論