




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
《操作系統(tǒng)原理》實驗報告【命令行輸入】chmoda+xmyscript./myscriptfirstsecondthird【運行結(jié)果】Thirdsecondfirst【腳本功能分析】將命令行輸入的參數(shù)倒敘顯示.設(shè)計一個程序cuts,它從標(biāo)準(zhǔn)輸入讀入數(shù)據(jù),獲取由第一個參數(shù)n和第二個參數(shù)m所限定范圍的數(shù)據(jù)(包括這兩個字符),n和m都是整數(shù)。例如:$cuts1114Thisisatestofcutsprogram(輸入)test(顯示結(jié)果)【源程序】#!/bin/bashReadblineEcho$aline|cut-c$1-$2實驗名稱: 進(jìn)程控制與通信 實驗時間: 2014年4月30一日第一11周 星期三一、實驗?zāi)康?加深進(jìn)程的概念理解,體會進(jìn)程創(chuàng)建過程,經(jīng)一部認(rèn)識進(jìn)程的異步并發(fā)特征2,了解Linux進(jìn)程通信原理3,掌握Linux進(jìn)程控制和進(jìn)程通信相關(guān)的系統(tǒng)調(diào)用二、實驗預(yù)習(xí)(預(yù)備知識的問題及回答).寫出下列系統(tǒng)調(diào)用功能:fork()用于 創(chuàng)建進(jìn)程getpid()用于 獲取當(dāng)前的進(jìn)程ID號wait()用于等待3講程結(jié)束exit()用于 講程自我終止pipe()用于 常見無「管道signal()用于在信號禾口彳言號處理函數(shù)之間建對應(yīng)關(guān)系k川()用于 除送信號給指定講程 .閱讀fork系統(tǒng)調(diào)用,用偽碼寫出其實現(xiàn)流程。Pid=fork()Ifpid為負(fù)Print當(dāng)前進(jìn)程是子進(jìn)程Elseifpid為0Print當(dāng)前進(jìn)程是父進(jìn)程.圖示pipe系統(tǒng)調(diào)用生成無名管道時所涉及的數(shù)據(jù)結(jié)構(gòu)。tile-rfiled&IO]GhdsU]tile-rfiled&IO]GhdsU].在UNIX系統(tǒng)中運行下面程序,最多可以產(chǎn)生多少個進(jìn)程?畫出進(jìn)程家族樹。main(){fork();fork();fork();5.下列程序運行后,a的值是多少?main(){inta,pid;a=55;5.下列程序運行后,a的值是多少?main(){inta,pid;a=55;pid=fork();if(pid<0){printf("errorinfork!");exit(0);}elseif(pid==0){sleep(5);a=99;printf(else{sleep(7);printf( "a=%nd,a);wait(0);}n”,a闔琳(5);exit(0);}a=99a=55;最終a=55三、實驗內(nèi)容.調(diào)試下面的程序,觀察可能的并發(fā)結(jié)果,給出簡要分析,并畫出進(jìn)程家族樹。#include<unistd.h>#include<sys/types.h>#include<sys/wait.h>main(){intstatus;intpid1=-1,pid2=-1,pid3=-1;pid1=fork();if(pid1==0)printf("pid1=0,myprocessidis%d\n",getpid());elseif(pid1>0){printf("pid1>0,myprocessidis%d\n",getpid());pid2=fork();if(pid2==0)printf("pid2=0,myprocessidis%d\n",getpid());elseif(pid2>0)printf("pid2>0,myprocessidis%d\n",getpid());}pid3=fork();if(pid3==0)printf("pid3=0,pid1=%d,pid2二%d,myprocessidis%d\n",pid1,pid2,getpid());elseif(pid3>0)printf("pid3>0,pid1=%d,pid2=%d,myprocessidis%d\n",pid1,pid2,getpid());wait(&status);exit(0);}2.編程實現(xiàn)進(jìn)程間管道通信。要求:父子進(jìn)程共享一無名管道,兩個子進(jìn)程作為發(fā)送方分別向管道發(fā)送一行信息,父進(jìn)程先讀出子進(jìn)程P1發(fā)來的信息行,將其轉(zhuǎn)換為大寫字母輸出;再讀出子進(jìn)程P2發(fā)來的信息行,將其轉(zhuǎn)換為小寫字母輸出。【源程序】Intfiledes[2];Charbuffer[80];Main(){Pipe(filedes);Charstr1[80];Charstr2[80];Intpid1,pid2,I;While((pid=fork())==-1);If(pid1==0){Lockf(filedes[1],1,0);Printf(childlinputString1\n");Scanf(%s”,st⑴;Write(filedes[1],str,sizeof(str1));Lockf(filedes[1],0,0);Exit(0);}Else{While((pid=fork())==-1)If(pid2==0){Lockf(filedes[1],1,0)Printf(Child2inputstring2\n");Scanf(%s”,st⑵;Write(filedes[1],str2,sizeof(stru2));Lockf(fildes[1],0,0);Exit(0);}Else{If(waitpid(pid1,null,0)==pid1){Read(filedes[0],buffer,80);For(i=0;i<sizeof(str1);i++)buffer[i]=toupper(buffer[i]);Printf(parent==child1:%s\n'buffer);}ElsePrintf(Waitpid1error!”);If(waitpid(pid2,NULL,0)==pid2){Read(filees[0],bufferm80);For(i=0;i<sizeof(str2);i++)Buffer[i]=tolower(buffer[i]);Printf(parent==child2:%s\n'[buffer);ElsePrintf(Waitpid2error!");}【運行與測試】I Jhu-ii?hivvhi1|V1<'(f"t^tirynn4-1.rfi?Mftir;i!lur*lhcH|^hninlfti/icniithiIdinjMt■IrinrgIi 力w卜mL-MIJLiIUMMUlbiItl2ikipui>grii乖hmtparpflId3:iivkH!!附加題3.學(xué)習(xí)下面共享存儲區(qū)的內(nèi)容,并用共享存儲區(qū)的方式實現(xiàn)“觀察者一一報告者”問題(共享的count變量存于共享存儲區(qū)),并驗證“與時間有關(guān)的錯誤”。共享存儲操作使得兩個或兩個以上的進(jìn)程可以共用一段物理內(nèi)存(一般情況下,兩個進(jìn)程的數(shù)據(jù)區(qū)是完全獨立的,父進(jìn)程用fork創(chuàng)建子進(jìn)程后,子進(jìn)程會復(fù)制父進(jìn)程數(shù)據(jù)到自己的數(shù)據(jù)區(qū))。(1)創(chuàng)建共享內(nèi)存#include<sys/shm.h>intshmget(key_tkey,size_tsize,intpermflags);參數(shù)key是共享內(nèi)存的標(biāo)識,size是共享內(nèi)存段的最小字節(jié)數(shù),permflags是訪問權(quán)限,值的設(shè)置同semget——樣。(2)共享內(nèi)存的控制#include<sys/shm.h>intshmctl(intshmid,intcommand,structshmid_ds*shm_stat);command 可 設(shè) 為IPC_STAT,IPC_SET,IPC_RMID。參數(shù)shm_stat指向存放屬性的結(jié)構(gòu)體,具體內(nèi)容請參考手冊。(3)共享內(nèi)存的附接和斷開#include<sys/shm.h>void*shmat(intshmid,constvoid*addr,intshmflags);intshmdt(constvoid*addr);由于兩個函數(shù)需指出進(jìn)程地址空間中的地址,因此比較復(fù)雜。簡化的方法是將shmat中的地址設(shè)為NULL。【源程序】【運行與測試】實驗名稱: 虛擬存儲 實驗時間:2014年4月30日第11周星期三一、實驗?zāi)康?,掌握虛擬存儲器的概念,理解實現(xiàn)虛擬存儲器的基本方法2,體會分頁存儲器管理中,頁面置換的過程3,進(jìn)一步認(rèn)識多種頁面置換算法的實現(xiàn)機(jī)制二、株驗預(yù)習(xí)(預(yù)備知識的問題及回答).描述請求分頁的地址轉(zhuǎn)換過程。
.解釋FIFO頁面置換算法所產(chǎn)生的Belady現(xiàn)象。Belady現(xiàn)象是指當(dāng)進(jìn)程分配的內(nèi)存塊數(shù)增加時,進(jìn)程缺頁率反而上升的現(xiàn)象。FIFO算法在頁面置換時,總是淘汰先進(jìn)入主存的頁面,而先進(jìn)入主存的頁面并不一定是以后用不到的頁面,如果這些頁面以后需要訪問,則將產(chǎn)生缺頁,因此即使分配的內(nèi)存塊數(shù)增加,缺頁率依然有可能上升,這是由于使用的頁面置換算法不合理導(dǎo)致的三、實驗內(nèi)容1.計算并輸出下列頁面置換算法在不同內(nèi)存容量(4頁至32頁)下的命中率.⑴最佳置換算法(OPT)(2)先進(jìn)先出算法(FIFO)(3)最近最久未用頁面置換算法(LRU)具體要求如下:(1)通過隨機(jī)函數(shù)產(chǎn)生一個指令序列,共320條指令.指令地址的生成原則如下:1)50%勺指令是順序執(zhí)行的;2)25%勺指令是均勻分布在前地址部分;3)25%勺指令是均勻分布在后地址部分;程序中的具體實施方法是:1)在[0,319]的指令地址之間隨機(jī)選取一起點地址m;2)順序執(zhí)行一條指令,即執(zhí)行地址為m+1的指令;3)在前地址[0,m+1]中隨機(jī)執(zhí)行一條指令,該指令的地址為mi;4)順序執(zhí)行一條指令,即執(zhí)行地址為M+1的指令;5)在后地址[m'+2,319]中隨機(jī)執(zhí)行一條指令;重復(fù)上述步驟(1)(5),直到執(zhí)行320條指令為止.將指令序列變換成為頁地址流:設(shè):頁面大小為1k,用戶內(nèi)存容量為4頁逐步增加到32頁,用戶虛存容量為32k.假定在用戶虛存中,每頁存放10條指令,即320條指令在虛存中的存放方法為:第0條第9條指令在第0頁;第10條第19條指令在第1頁;第310條第319條指令在第31頁.按以上方式用戶指令共組成 32頁.據(jù)此可得出指令地址m和頁面號page以及頁內(nèi)位移量offset之間的計算公式為:page=m/10,offset=m%10.頁地址流長度為320o【源程序】Intpage_stream[320];Intb[32];Voidran(){Intinstruct[320];IntI,j,m,m1,m2;Srand(getpid());I=0;While(i<320){M=rand()%320;Instruct[i]=m;I++;If(m+1)<320(Instruct[i]=m+1;I++;)M1=read()%(m+1);Instruct[i]=m1;I++;If((m1+1)<320)(Instruct[i]=m1+1;I++;)M1=read()%(m+1);Instruct[i]=m1;I++;If((m1+1)<320)(Instruct[i]=m1+1;I++;)If((m2+2)<320)(M2=m1+2+rand()%(320-m1-2);Instruct[i]=m2;I++;}}Page_stream[i]=instruct[i]/10;}Intin_block(intpage,intblock_count){Intflag,k;Flag=0;For(k=0;k<block_count;k++)If(page=b[k]){Flag=1;Break;}Returnflag;}Voidopt()(IntI,j,max,t,s,d[32],page_interrupt;For(i=4;i<32;i++)(For(k=0;k<32;k++)b[k]=-1;J=0;For(k=0;k<I;i++)(While(in_block(page_stream[j],i)==1)j++;B[k]=page_stream[j];J++;}Page_interrupt=0;For(j=1;j<320;j++)(If(in_block(page_stream[j],i)==1)continue;Else{For(k=0;k<I,k++){D[k]=0;For(t=i+1;t<320;t++)If(d[k]==0) d[k]=320;}Max=0;For(k=0;k<I;k++)If(d[k]>max){max=d[k];s=k;}B[s]=page_stream[j];Page_interrupt++;}}Printf(ithas%dblocks,\nOPTis%f",I,page_interrupt/320.0);}}Voidfifo(){IntI,j,k,t,page_interrupt;For(i=4;i<32;i++)(For(k=0;k<32;k++)B[k]=-1J=0;For(k=0;k<I;k++)(While(in_block(page_stream[j],i)==1)J++;B[k]=page_stream[j];J++;}Page_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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 項目部駐地裝修工程合同范本
- 卡車承運合同范本
- 農(nóng)業(yè)路燈采購合同范本
- 分包土方合同范本
- 化工車間采購合同范本
- 動漫聯(lián)名服務(wù)合同范本
- 公對公借貸合同范本
- 冰棍合同范本
- 賣酒銷售合同范例
- 分期付款購車合同范本
- 二副工作心得體會實習(xí)感觸
- 土壤肥料全套課件
- 旅游消費者行為學(xué)整套課件完整版電子教案課件匯總(最新)
- 學(xué)前兒童發(fā)展心理學(xué)(第3版-張永紅)教學(xué)課件1754
- 特氣供應(yīng)系統(tǒng)的規(guī)劃與設(shè)計
- 中職《機(jī)械基礎(chǔ)》全套課件(完整版)
- 勞技-中國結(jié)PPT通用課件
- 溫庭筠《望江南》ppt課件
- 口腔正畸學(xué)單詞
- 內(nèi)襯修復(fù)用HTPO管材企標(biāo)
- 部編教材一年級下冊生字筆順筆畫
評論
0/150
提交評論