操作系統(tǒng)上機報告_第1頁
操作系統(tǒng)上機報告_第2頁
操作系統(tǒng)上機報告_第3頁
操作系統(tǒng)上機報告_第4頁
操作系統(tǒng)上機報告_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、操作系統(tǒng)計算機報告實驗1。匿名管道通信第一,實驗?zāi)康膶W(xué)習(xí)創(chuàng)建匿名管道,并能夠使用管道在進(jìn)程之間進(jìn)行通信。二、實驗內(nèi)容一個名為“父”的單個文檔應(yīng)用程序和一個名為“子”的單個文檔應(yīng)用程序分別被建立為父進(jìn)程和子進(jìn)程,并且由父進(jìn)程創(chuàng)建匿名管道,使得父進(jìn)程和子進(jìn)程可以將數(shù)據(jù)寫入和讀取到匿名管道中。三、設(shè)計和實施過程這個實驗是在VC6.0上實現(xiàn)的A.父進(jìn)程首先,構(gòu)建一個單一的父文檔應(yīng)用程序,添加“創(chuàng)建管道”、“讀取數(shù)據(jù)”和“寫入數(shù)據(jù)”三個菜單,并添加消息響應(yīng)函數(shù)OnPipeCreate()、OnPipeRead()和OnPipeWrite()。在CParentView類中添加成員變量handle類型的hr

2、ead和hwrite,初始化變量,并在析構(gòu)函數(shù)中釋放HANDLE:void cpparentview : OnPipewrite()如果(!創(chuàng)建管道()/*創(chuàng)建匿名管道*/*消息“未能創(chuàng)建管道!”*/*退出*/如果(!創(chuàng)建進(jìn)程()/*創(chuàng)建子進(jìn)程*/*關(guān)閉手柄hRead,hWrite*/*消息“未能創(chuàng)建子進(jìn)程!”*/*退出*/void cpparentview : OnPipeRead()/*定義用于存儲讀取數(shù)據(jù)的字符數(shù)組*/如果(!讀取文件()/*讀取數(shù)據(jù)*/*消息“讀取數(shù)據(jù)失??!”*/*退出*/*打印讀取的數(shù)據(jù)*/*退出*/void cpparentview : OnPipewrite()/

3、*定義用于存儲寫入數(shù)據(jù)的字符數(shù)組*/如果(!write file()/*寫入數(shù)據(jù)*/*消息“寫入數(shù)據(jù)失??!”*/*退出*/B.子過程創(chuàng)建一個單一的子文檔,在CChildView中添加兩個成員變量hread和hwrite成員類型HANDLE,并添加消息響應(yīng)函數(shù)OnPipeRead()和OnPipeWrite(),然后添加虛擬函數(shù)OnInitialUpdate(),并釋放析構(gòu)函數(shù)中的句柄。void cchildview :3360 oninitialupdate()HRead=GetStdHandle()/*獲取標(biāo)準(zhǔn)輸入句柄*/HWrite=GetStdHandle()/*獲取標(biāo)準(zhǔn)輸出句柄*/vo

4、id cpparentview : OnPipeRead()/*定義用于存儲讀取數(shù)據(jù)的字符數(shù)組*/如果(!讀取文件()/*讀取數(shù)據(jù)*/*消息“讀取數(shù)據(jù)失敗!”*/*退出*/*打印讀取的數(shù)據(jù)*/*退出*/void cpparentview : OnPipewrite()/*定義用于存儲寫入數(shù)據(jù)的字符數(shù)組*/如果(!write file()/*寫入數(shù)據(jù)*/*消息“寫入數(shù)據(jù)失敗!”*/*退出*/# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #父流程代碼# # # # # # # # # # # # # # # # #。無效cf

5、atherview : onpiece create()/在這里添加您的命令處理程序代碼SECURITY _ ATTRIBUTES sasa.bInheritHandle=真;sa.lpSecurityDescriptor=空;sa . nLength=sizeof(SECURITy _ ATTRIBUTES);如果(!創(chuàng)建管道(hRead,hWrite,sa,0)消息框(“未能創(chuàng)建管道!”);返回;STARTUPINFO sui過程信息pi;ZeroMemory(sui,sizeof(STARTUPINFO);/將數(shù)據(jù)清零sui . CB=sizeof(STARTUPINFO);sui .

6、dwflags=STARTF _ USESSTDANDLES;sui.hStdInput=hReadsui.hStdOutput=hWritesui . hstderror=GetStdHandle(STD _ ERROR _ HANDLE);如果(!create process( H : 操作系統(tǒng)作業(yè) 實驗1_匿名管道通信 子 調(diào)試 子. exe ,null,null,null,true,0,null,null,sui,pi)closeHandle(HRead);關(guān)閉句柄(Hwrite);/關(guān)閉句柄,從內(nèi)核對象的使用計數(shù)中減去1,這樣當(dāng)操作系統(tǒng)找到內(nèi)核對象時,當(dāng)/的使用計數(shù)為0時,內(nèi)核對象將

7、被清除。hRead=空;hWrite=空;消息框(“未能創(chuàng)建子進(jìn)程!”);返回;其他closeHandle(pi . hpprocess);關(guān)閉句柄(pi . hthread);無效視圖:打開()/在這里添加您的命令處理程序代碼char buf100;DWORD dwRead如果(!ReadFile(hRead,buf,100,dwRead,NULL)消息框(“讀取數(shù)據(jù)失??!”);返回;消息框(buf);無效CFatherView:OnInput()/在這里添加您的命令處理程序代碼“你好,我是父進(jìn)程!”;DWORD dwWrite如果(!寫文件(hWrite,buf,strlen(buf) 1

8、,dwWrite,NULL)消息框(“寫入數(shù)據(jù)失??!”);返回;# # # # # # # # # # # # # # # # # # # # # # # # # #子流程代碼# # # # # # # # # # # # # # # # # # #。void cchildview : OnInput()/在這里添加您的命令處理程序代碼char buf100;DWORD dwRead如果(!ReadFile(hRead,buf,100,dwRead,NULL)消息框(“讀取數(shù)據(jù)失??!”);返回;消息框(buf);void cchildview : onwrite()/在這里添加您的命令處理程序

9、代碼Char buf=“匿名管道測試器”;DWORD dwWrite如果(!寫文件(hWrite,buf,strlen(buf) 1,dwWrite,NULL)消息框(“寫入數(shù)據(jù)失??!”);返回;void cchildview :3360 oninitialupdate()cview : oninitialupdate();/在這里添加您的專用代碼和/或調(diào)用基類hRead=GetSTDhandle(STD _ INPUT _ HANDLE);hWrite=GetSTDhandle(STD _ OUTPUT _ HANDLE);四.實施結(jié)果和分析創(chuàng)建管道:父進(jìn)程向子進(jìn)程發(fā)送信息:子進(jìn)程向父進(jìn)程發(fā)

10、送信息:五、思考與收獲這是第一個計算機實驗。我最初并沒有學(xué)習(xí)C語言,只是學(xué)習(xí)了C語言的編程基礎(chǔ)。當(dāng)我第一次接觸MFC的時候,我覺得編程很難。經(jīng)過我的導(dǎo)師多次耐心的示范和指導(dǎo),我終于能夠自己完成這個過程。我覺得很有收獲,主要是因為在這些課上學(xué)到的知識在我的生活中很難接觸到。通過使用電腦,我可以真正用代碼操縱電腦的操作系統(tǒng)來工作,這縮小了理論和實踐之間的差距,讓我覺得課堂不再枯燥和空虛。這個實驗給了我一個非常直觀的管道的感覺,這是一個進(jìn)程之間的通信方法。通過人機交互,我手動選擇在進(jìn)程間發(fā)送和接收數(shù)據(jù),這加強了我對管道通信特點的理解(連接兩個進(jìn)程,以先進(jìn)先出的方式實現(xiàn)消息的單向傳輸)。實驗二。創(chuàng)建過

11、程第一,實驗?zāi)康膶W(xué)會使用基本的視窗或Linux進(jìn)程控制功能,由父進(jìn)程創(chuàng)建子進(jìn)程,實現(xiàn)父子進(jìn)程間的協(xié)作。二、實驗內(nèi)容創(chuàng)建兩個進(jìn)程,讓子進(jìn)程讀取文件,父進(jìn)程等待子進(jìn)程讀取文件后繼續(xù)執(zhí)行,實現(xiàn)進(jìn)程間的協(xié)同工作。進(jìn)程協(xié)作是協(xié)調(diào)兩個進(jìn)程,使它們能夠按順序排列并相應(yīng)地執(zhí)行,這可以通過使用等待功能來實現(xiàn)。當(dāng)需要等待子進(jìn)程完成運行時,可以在父進(jìn)程中調(diào)用等待函數(shù)。假設(shè)現(xiàn)在有這樣一個作業(yè),需要計算1100的總和,而另一個作業(yè)是讀寫文件。我們可以讓父進(jìn)程計算并創(chuàng)建一個子進(jìn)程來讀寫文件。三、設(shè)計和實施過程主要工作: 1。首先,父進(jìn)程創(chuàng)建了一個子進(jìn)程 2。讓子進(jìn)程創(chuàng)建一個文件并寫入數(shù)據(jù)。當(dāng)子進(jìn)程寫入文件時,父進(jìn)程繼續(xù)執(zhí)

12、行計算工作 3。子流程執(zhí)行完畢后,父流程讀取文件內(nèi)容并輸出,實現(xiàn)流程間的協(xié)同工作。父流程框架 void main() /準(zhǔn)備創(chuàng)建流程/創(chuàng)建子進(jìn)程如果(創(chuàng)建失敗)返回其他(創(chuàng)建成功)/計算1100的總和/子流程執(zhí)行完畢后,讀取子流程的文件內(nèi)容并輸出。 子流程框架 void main() /創(chuàng)建文件如果(失敗)返回其他(成功)/將數(shù)據(jù)寫入文件/讀取文件內(nèi)容輸出 # # # # # # # # # # # # # # # # # # # # # # # # #父流程代碼# # # # # # # # # # # # # #。int main()int I;int sum=0;字符讀取100= ;過程

13、信息pi;STARTUPINFO sui/創(chuàng)建過程的準(zhǔn)備零記憶(sui,sizeof(sui);sui . CB=sizeof(STARTUPINFO);如果(!create PRocESS( H : 操作系統(tǒng)作業(yè) 實驗2_創(chuàng)建進(jìn)程 子 調(diào)試 子. exe ,null,null,null,false,create _ new _ console,null,null,sui,pi)返回0;Else/創(chuàng)建成功/父進(jìn)程繼續(xù)執(zhí)行對于(I=1;i=100I)sum=i。睡眠(10);printf(sum=%dn ,sum);WaitForSingleObject(pi . hpprocess,INDENTAL);FILE * pfile 1=fopen( H : 操作系統(tǒng)作業(yè) 實驗2_創(chuàng)建過程kang.txt , r );fread(讀取,大?。ㄗ址?,100,pfile 1);/fread第二個參數(shù)是每個字符的大小/文件打開方式需改為可讀寫fc丟失(pfile 1);打印(%sn),已讀);返回0;# # # # # # # # # # # # # # # # # # # # # # # # # # #子進(jìn)程代碼# # # # # # # # # # # # # # # # # # # # # # # # # # #int main()char *目錄=你成

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論