




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
附件(四)深圳大學(xué)實驗報告課程名稱:操作系統(tǒng)實驗項目名稱:并發(fā)程序設(shè)計學(xué)院:專業(yè):指導(dǎo)教師:報告人:學(xué)號:班級:實驗時間:實驗報告提交時間:教務(wù)處制一、實驗?zāi)康呐c要求:實驗?zāi)康模赫莆誻indows環(huán)境下,多進程并發(fā)程序設(shè)計方法,并通過程序的運行結(jié)果來驗證分時系統(tǒng)和并發(fā)程序設(shè)計的優(yōu)越性。實驗要求:熟悉windows操作系統(tǒng)及VC++程序設(shè)計方法二、方法、步驟:在單進程(單用戶、單任務(wù))運行時,系統(tǒng)資源為單進程所獨占,當(dāng)進程在讀/寫磁盤文件時,CPU是處于等待I/O完成的空閑狀態(tài)。因此造成較大的資源浪費。在多進程運行(多任務(wù))時,當(dāng)某進程在等待I/O結(jié)果時,可以自動阻塞起來,CPU可選擇另一個就緒進程來執(zhí)行,從而提高系統(tǒng)的運行效率,增加系統(tǒng)的吞吐量,提高系統(tǒng)交互操作性能。本實驗設(shè)計兩個進程,WriteFile(寫U盤)進程和Calculate(計算)進程,每個進程大約費時5秒。設(shè)計兩進程順序執(zhí)行程序,并測試所需時間。設(shè)計兩進程并發(fā)執(zhí)行程序,并測試所需時間。三.實驗過程及內(nèi)容:(其中:提供有簡短說明的程序代碼。要求:程序運行正確、符合設(shè)計要求。)1Windows進程簡介在Windows環(huán)境下,一個執(zhí)行文件(*exe)在和自行時被看成是一個進程,即在windouws中最小的進程單位為執(zhí)行文件。但Windows是一個多任務(wù)的環(huán)境,允許多個執(zhí)行文件(進程)同時(并發(fā))運行。2VC++并發(fā)程序設(shè)計簡介在程序中啟動一個執(zhí)行文件采用WinExec(LPCSTRlpCmdLine,UNITuComdShow)函數(shù)可啟動一個執(zhí)行文件的運行。其中l(wèi)pCmdLine表示一個命令行,uComdShow表示執(zhí)行文件窗口顯示特性。最簡潔的啟動運行函數(shù)形式為:WinExc(“*exe”,NULL);創(chuàng)建進程采用CreateProcess(LPCTSTRlpszImageName,,//執(zhí)行文件名(進程名)LPCTSTRlpszCmdLine,//命令行(參數(shù))LPSECURITY_ATTRIBUTESlpsaProcess,//進程安全屬性LPSECURITY_ATTRIBUTESlpsaThread,,//線程安全屬性BOOLbInheritHandles,//繼承特性DWORDdwCreationFlags,//進程類型和優(yōu)先級LPVOIDlpEnvironment,//環(huán)境變量,由SET設(shè)置LPCTSTRlpCurrentDirectory,//當(dāng)前目錄LPSTARTUPINFOlpStartupInfo,//進程開始信息LPPROCESS_INFORMATIONlpProcessInfo)//進程創(chuàng)建返回信息函數(shù)創(chuàng)建一個進程。最簡潔的創(chuàng)建進程的形式為: cProcess=CreateProcess(*exe,NULL,NULL,NULL,TRUE,0,NULL, NULL,&sui,&pisz);進程開始信息suiSui中存放進程開始的所有信息,用戶除第一項外,其余都可以使用默認值。最簡潔的設(shè)置方式為:memset(&sui,0,sizeof(STARTUPINFO));sui.cb=sizeof(STARTUPINFO);進程創(chuàng)建返回洗洗piszPisz中存放創(chuàng)建進程的返回信息,用戶可以使用這些信息,對今晨進行操作,PROCESS_INFORMATION{HANDLEhProcess;//新進程的句柄HANDLEhThread;//主線程的句柄DWORDdwProcessId;//進程標識符DWORDdwThreadId;//線程標識符}在本實驗中主要用到新進程標識號dwProcessId,用于判斷線程是否結(jié)束等待進程結(jié)束采用WaitForInputIdle(HANDLEhProcess,DWORDdwMilliseconds)函數(shù)等待一進程結(jié)束。WaitForInputIdle()是等待一對象(可以是進程)結(jié)束函數(shù),它有兩個變量,第一個為對象句柄(pisz.hProcess),第二個為等待最長時間(以毫秒計,也可以為INFINITE)。本實驗中,可以采用以下方式調(diào)用:WaitForInputIdle(pisz.hProcess,INFINITE);;3核心源代碼(1)計算數(shù)據(jù),并同時向U盤寫入數(shù)據(jù)voidWriteOrCalculate(){ STARTUPINFOsui;//用于指定新進程的主窗口特性 PROCESS_INFORMATIONpiszWriteFile,piszCalculate; BOOLwProcess,cProcess; //設(shè)置創(chuàng)建進程信息 memset(&sui,0,sizeof(STARTUPINFO));//將s中后n個字節(jié)用0替換并返回s。 sui.cb=sizeof(STARTUPINFO);//CB包含STARTUPINFO結(jié)構(gòu)中的字節(jié)數(shù),初始化操作 cProcess=CreateProcess(szCalculate,NULL,NULL,NULL,TRUE,0,NULL, NULL,&sui,&piszCalculate); wProcess=CreateProcess(szWriteFile,NULL,NULL,NULL,TRUE,0,NULL, NULL,&sui,&piszWriteFile); WaitForInputIdle(piszWriteFile.hProcess,INFINITE);//等待新進程完成它的初始化并等待用戶輸入。 WaitForInputIdle(piszCalculate.hProcess,INFINITE);}(2)先計算數(shù)據(jù),然后向U盤寫入數(shù)據(jù)voidWriteAndCalculate(){ //啟動執(zhí)行文件 WinExec(szCalculate,NULL); WinExec(szWriteFile,NULL);}(3)開始計時DWORDStartTime,StopTime;voidStartTimeCount(HWNDhWnd,LPSTRStartString){ HDChDC; hDC=GetDC(hWnd); TextOut(hDC,100,100,StartString,strlen(StartString)); //設(shè)備環(huán)境的句柄,用于字符串對齊的基準點的邏輯X坐標,邏輯Y坐標,將被繪制字符串的指針,字符串的長度 ReleaseDC(hWnd,hDC);//釋放設(shè)備上下文環(huán)境(DC)供其他應(yīng)用程序使用 StartTime=GetTickCount();}(4)停止計時,并顯示所用時間voidStopTimeCount(HWNDhWnd,LPSTRTimeString){ charMsgString[256]; HDChDC; hDC=GetDC(hWnd); TextOut(hDC,100,100,"",50); ReleaseDC(hWnd,hDC); StopTime=GetTickCount(); sprintf(MsgString,"開始時間=%dms結(jié)束時間=%dms用時=%dms",StartTime, StopTime,StopTime-StartTime); MessageBox(NULL,MsgString,TimeString,MB_OK);}計算數(shù)據(jù)voidCalculate(){ inti; doubleArea,PI,r; PI=3.14159; r=10.12345; for(i=0;i<800000000;i++) Area=PI*r*r; }長時間的向磁盤寫入文件過程voidWriteFile(){ inti; charWriteIniFileName[32]; charKeyStr[32]; strcpy(WriteIniFileName,"E:\\text.ini"); for(i=0;i<5800;i++) { wsprintf(KeyStr,"%d",i); WritePrivateProfileString("WriteFile",KeyStr,"WriteFile",WriteIniFileName);//將信息寫入ini文件中 }}四、實驗結(jié)論:(其中:提供運行結(jié)果,能對實驗結(jié)果進行深入的探討和分析、評價,并提出結(jié)論性意見和改進想法)實驗截圖:實驗界面:寫入磁盤的運行時間:寫入磁盤的test.ini的截圖計算800000000次數(shù)據(jù)的時間:串行時間并行時間:實驗結(jié)論:由上圖可知,基本實現(xiàn)了實驗要求。由圖可以得到,寫入磁盤時間與計算時間都已經(jīng)調(diào)整為5s左右,在上圖中由于每次運行程序時系統(tǒng)誤差,因此會導(dǎo)致每一次運行寫文件以及計算的時間都不同,但很明顯,串行計算得到的時間在誤差范圍內(nèi)等于兩
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 賒銷額度協(xié)議書
- 樓棟長志愿服務(wù)協(xié)議書
- 背書轉(zhuǎn)讓協(xié)議書
- 變更孩子撫養(yǎng)權(quán)協(xié)議書
- 綜合還款協(xié)議書
- 考研錄取協(xié)議書
- 房屋代買賣合同協(xié)議書
- 酒場休戰(zhàn)協(xié)議書
- 道路綠化協(xié)議書
- 米油回收協(xié)議書
- 細致解讀wps考試內(nèi)容的試題及答案
- 2025屆高考語文寫作押題范文8篇及分析
- 紙張印刷與印后加工考核試卷
- 2025年汽車維修工職業(yè)資格考試重點試題及答案
- 2024年四川西華師范大學(xué)招聘輔導(dǎo)員真題
- 2025年安全生產(chǎn)考試題庫:安全生產(chǎn)隱患排查治理安全生產(chǎn)責(zé)任制試題
- 2025年高考英語語法填空熱點語法填空熱點話題06(學(xué)生版+解析)
- 湛江漓源農(nóng)牧科技有限公司年產(chǎn)36萬噸飼料項目環(huán)境影響報告表
- 隨班就讀試題及答案
- 1.1細胞是生命活動的基本單位課件高一上學(xué)期生物人教版(2019)必修1
- 2024年福建省長樂市事業(yè)單位公開招聘醫(yī)療衛(wèi)生崗筆試題帶答案
評論
0/150
提交評論