2023年新版操作系統(tǒng)原理實(shí)驗(yàn)報(bào)告_第1頁(yè)
2023年新版操作系統(tǒng)原理實(shí)驗(yàn)報(bào)告_第2頁(yè)
2023年新版操作系統(tǒng)原理實(shí)驗(yàn)報(bào)告_第3頁(yè)
2023年新版操作系統(tǒng)原理實(shí)驗(yàn)報(bào)告_第4頁(yè)
2023年新版操作系統(tǒng)原理實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

《操作系統(tǒng)原理》實(shí)驗(yàn)報(bào)告書(shū)班級(jí):學(xué)號(hào):姓名:指導(dǎo)教師:2023-2023學(xué)年第二學(xué)期實(shí)驗(yàn)名稱(chēng):LINUX用戶(hù)界面實(shí)驗(yàn)時(shí)間:2023年4月2日第7周星期三一、實(shí)驗(yàn)?zāi)康?,熟悉Linux字符操作界面,純熟掌握常用Shell命令。2,熟悉Linux文本編輯方法,學(xué)會(huì)編輯軟件VI的使用。3,了解Linux編譯器gcc的功能,掌握基于Linux平臺(tái)的C程序的開(kāi)發(fā)實(shí)驗(yàn)預(yù)習(xí)(預(yù)備知識(shí)的問(wèn)題及回答)1.為什么在Linux系統(tǒng)中,諸如光盤(pán)、U盤(pán)等要先掛載而后才干使用?如何獲得U盤(pán)的設(shè)備名?裝載點(diǎn)在文獻(xiàn)系統(tǒng)中的位置是什么?由于文獻(xiàn)系統(tǒng)的差異,Linux在默認(rèn)情況下并不支持軟盤(pán),光盤(pán),U盤(pán),所以需要通過(guò)裝在相應(yīng)盤(pán)片才可以訪問(wèn)其中的數(shù)據(jù)裝載點(diǎn)是掛載文獻(xiàn)系統(tǒng)的目錄位置2.從虛擬機(jī)界面退出進(jìn)入WindowsOS界面的操作是Ctrl+Alt,從WindowsOS界面進(jìn)入虛擬機(jī)界面的方法是鼠標(biāo)點(diǎn)擊虛擬機(jī)界面。3.權(quán)限的含義是什么?如何使用數(shù)字法設(shè)定文獻(xiàn)的權(quán)限?Linux系統(tǒng)中的每個(gè)文獻(xiàn)和目錄都有相應(yīng)的訪問(wèn)許可權(quán)限,訪問(wèn)權(quán)限分為只讀(r),可寫(xiě)(w)和可執(zhí)行三種,有三種不同類(lèi)型的用戶(hù)可以對(duì)文獻(xiàn)或者目錄進(jìn)行訪問(wèn),分別是文獻(xiàn)所有者(u),同組用戶(hù)(g)和其它用戶(hù)(o)。所有的文獻(xiàn)和目錄都被創(chuàng)建他們的人所擁有。只要你是這個(gè)文獻(xiàn)的所有者或者你登陸為用戶(hù),你就擁有了改變所有者,群組和其別人權(quán)限的權(quán)利。使用數(shù)字法改變權(quán)限:?命令格式chmod權(quán)限數(shù)值文獻(xiàn)名說(shuō)明給指定文獻(xiàn)賦予數(shù)值所規(guī)定的權(quán)限? ?在數(shù)字設(shè)定法中,每種權(quán)限設(shè)立均可以用數(shù)值來(lái)代表,其中0表達(dá)沒(méi)有權(quán)限,1表達(dá)可執(zhí)行權(quán)限,2表達(dá)可寫(xiě)權(quán)限,4表達(dá)可讀權(quán)限,這些值之和便可以用來(lái)設(shè)定特定權(quán)限。4.什么過(guò)濾操作?在Linux中如何實(shí)現(xiàn)?? 過(guò)濾操作:將一個(gè)命令的輸出作為一個(gè)命令的輸入Linux實(shí)現(xiàn)的命令格式:命令|命令5.在Linux中掛載u盤(pán)并能顯示其文檔的中文信息,所使用的掛載命令是:Mount/dev/sdal/mnt/usb。6.什么是vi?其三種操作模式的含義是什么?給出三種工作模式間的轉(zhuǎn)換圖。命令模式:vi啟動(dòng)后的默認(rèn)模式,控制光標(biāo)的移動(dòng),復(fù)制刪除文字,進(jìn)入輸入模式和末行模式輸入模式:進(jìn)行文字輸入末行模式:保存文獻(xiàn),退出VI實(shí)驗(yàn)內(nèi)容(包含實(shí)驗(yàn)所用命令或相關(guān)程序源代碼)1.shell操作命令(給出每題所用的Shell命令或命令結(jié)果)(1)創(chuàng)建名為stu1、stu2的2個(gè)用戶(hù),設(shè)立密碼分別為student1和student2,并將它們?cè)O(shè)為組group1中的成員。#groupaddgroup1#useraddstu1–ggroup1#sustu1Spasswdstu1回車(chē)后敲入密碼student1$exit#useraddstud2–ggroup1#sustu2$passwdstu2$exit(2)在每個(gè)用戶(hù)的主目錄下建立2個(gè)目錄,分別命名為dir1和dir2。#sustu1$cd~$mkdirdir1$exit#sustu2$cd~$mkdirdir2$exit(3)查找stu1用戶(hù)主目錄、下屬各子目錄的默認(rèn)存取權(quán)限,并給出結(jié)論。#sustu1$cd..$ls-1用戶(hù)主目錄權(quán)限為:drwx,即目錄的用戶(hù)可讀,寫(xiě),執(zhí)行,同組和其它的用戶(hù)無(wú)任何權(quán)限#sustu`$cd~ $ls-1Dir1目錄權(quán)限為:drwxr-xr-x,即目錄的用戶(hù)可讀,寫(xiě),執(zhí)行(4)調(diào)試pwd和cd命令,回答下列關(guān)于Linux文獻(xiàn)系統(tǒng)中目錄的有關(guān)問(wèn)題。=1\*GB3①用戶(hù)主目錄的絕對(duì)途徑如何表達(dá)?/home/stu1/home/stu2=2\*GB3②根目錄如何表達(dá)?/root=3\*GB3③.和..分別表達(dá)什么目錄?子目錄,父目錄=4\*GB3④~表達(dá)什么目錄?用戶(hù)主目錄⑤當(dāng)前目錄如何表達(dá)?Cd~(5)新建用戶(hù)stu3,設(shè)立其密碼為student3,并將其設(shè)立為group2中成員。爾后,以stu3登錄,在其主目錄下建立名為text的目錄,在text目錄下再建立名為dir1的子目錄,并使其成為當(dāng)前目錄。#groupaddgroup2#useraddstu3–ggroup2#sustu3$passwd回車(chē)后敲入密碼student3$cd~$mkdirtext$mkdirdir1$cdtext/dir1(6)使用cat(yī)>sneakers.txt命令,分析命令行catsneakers.txt的顯示結(jié)果。$cat>sneakers.txtbuysomesneakersthengotothecoffeeshopthenbuysomecoff^D(zhuǎn)$catsneakers.txt從鍵盤(pán)中創(chuàng)建一個(gè)名為sncakers.txt文獻(xiàn),文獻(xiàn)內(nèi)容為:buysomesncakersThengotothecoffee(cuò)shopThenbuysomecoff(7)使用上題的方法,在dir1目錄中建立home.txt文獻(xiàn),其內(nèi)容為:bringthecoffee(cuò)hometakeoffshoesputonsneakersmakesomecoffeerelax!$cd/home/stu1/dir1$cat>home.txtBringthecoffee(cuò)homeTakeoffshoesPutonsneakersMakesomecoffeeRelax![ctrl+d](8)試寫(xiě)出實(shí)現(xiàn)下列功能的shell命令:=1\*GB3①將home.txt文獻(xiàn)移至其上級(jí)目錄中(即text目錄下)?!鏼v/home.txt=2\*GB3②將home.txt添加到sneakers.txt尾部形成新的文獻(xiàn)saturday.txt。$catcneakers.txt>asturday.txt$cathome.txt>>Saturday.txt=3\*GB3③將text目錄樹(shù)從stu3用戶(hù)主目錄下移至stu2主目錄下?!臼褂锰貦?quán)用戶(hù)方法】sumv/home/stu3/text/home/stu2【修改目錄權(quán)限方法】#cp/home/stu3/text/home/stu2(9)試畫(huà)出上述命令后,用戶(hù)stu1、stu2和stu3主目錄中的目錄樹(shù)(3棵子樹(shù))。2.LinuxC程序開(kāi)發(fā)(1)編寫(xiě)LinuxC程序,把一個(gè)文獻(xiàn)的內(nèi)容復(fù)制到另一個(gè)文獻(xiàn)中,即實(shí)現(xiàn)簡(jiǎn)樸的copy功能。規(guī)定:程序輸入的第一個(gè)參數(shù)是源文獻(xiàn),第二個(gè)參數(shù)是目的文獻(xiàn)?!驹闯绦颉?include<sys/types.h>#include<dirent.h>#include<stdio.h>#include<crrno.h>Intmain(intargc,char*argv[]){ FILE*in,*out;Charch;If(argc!=3){ Printf(“youforgottoenterafilename\n”);Exit(0);}If(in=fopen(argv[1],”r”))==NULL{?Printf(“cannitopenoutfile\n”);Exit(0);}If(out=fopen(argv[2],”w”))==NULL{?Prntf(“cannotopenoutfile”); Exit(0);}While(!feof(in))fputc(in),out);Fclose(in);Fclose(out);}【運(yùn)營(yíng)命令】#gcc–otestcopy.c#./testfile1.cfile2.c(2)編寫(xiě)LinuxC程序,列出stu2主目錄中的文獻(xiàn)信息,并將其中saturday.txt文獻(xiàn)的權(quán)限設(shè)立為文獻(xiàn)所有者可讀可寫(xiě)、同組用戶(hù)只讀、其他用戶(hù)無(wú)權(quán)限。【源程序】#include<sys/types.h>#include<dirent.h>#include<stdio.h>#include<crrno.h>Intmain(intargc,char*argv[]){ DIR*dp; Structdirent*dirp; Intn=0;?If(arge!=2) {? Printf(“asignleargementisrequired”);?Exit(0);}If(dp=opendir(argv[1])==NULL){ Printf(“cannotopen%s”,args[1]);Exit(0);}While(((dirp=readdir(dp))!=NULL)&&(n<=50)){ If(n%1==0)printf(“”); N++;?Printf(“%10s\n”,dirp->d_name);}System(“chmod640/home/stu2/text/dir1/Saturday.txt”)}【運(yùn)營(yíng)命令】#gcc–otestlist.c#./test.home/stu2

實(shí)驗(yàn)名稱(chēng):SHELL程序設(shè)計(jì)實(shí)驗(yàn)時(shí)間:2023年4月16日第9周星期三一、實(shí)驗(yàn)?zāi)康氖煜ぃ親ELL腳本編程的環(huán)節(jié),掌握基于Bash的Shell腳本開(kāi)發(fā)。實(shí)驗(yàn)預(yù)習(xí)(預(yù)備知識(shí)的問(wèn)題及回答)1.Linux系統(tǒng)默認(rèn)的shell語(yǔ)言是什么?欲查看該shell的版本,應(yīng)使用什么命令?Bashshell$echo$BASH_VERSION2.預(yù)習(xí)shell有關(guān)變量和參數(shù)的相關(guān)知識(shí),回答下列問(wèn)題。(1)假設(shè)用戶(hù)進(jìn)行了如下的賦值操作:$person=j(luò)enny試給出下面命令的輸出結(jié)果。1)echopersonperson2)echo$personjenny3)echo‘$person’$person4)echo“$person”jenny(2)填充下列與環(huán)境變量、位置變量和預(yù)定義變量相關(guān)的表格。Shell變量定義HOME保存用戶(hù)注冊(cè)目錄的絕對(duì)途徑PATH保存用冒號(hào)分割的目錄途徑PWD當(dāng)前工作目錄的據(jù)對(duì)途徑名PS1主提醒符,特權(quán)用戶(hù)為#,普通用戶(hù)為$$0當(dāng)前shell程序的文獻(xiàn)名$#位置參數(shù)的個(gè)數(shù)$?前一個(gè)命令執(zhí)行后返回的狀態(tài)$$當(dāng)前進(jìn)程的PID3.寫(xiě)出下列expr命令的輸出:exprindex“value”‘a(chǎn)’expr“value”:‘v.*u’expr“aaa”:‘a\+’expr“aaa”:‘a(chǎn)\?’expr2+3expr2+3expr2\*3expr5+`expr2+3`exprlength“operatingsystem”exprsubstrlinux2324312+356mon-numericargument16inu實(shí)驗(yàn)內(nèi)容1.編寫(xiě)Shell腳本,從命令行中接受一個(gè)二元算術(shù)表達(dá)式并計(jì)算其結(jié)果。【源程序】#!/bin/bashIftest$#=3ThenCases2in+)letz=$1+$3;;?-)letz=$1-$3;; /)letz=$1/$3;;?x|x)letz=$1*$3;; *)echo”warning-$2invalidoperator!”exit;;?Esac?Echo”answerissz”ElseEcho”usage-$0value1operatorvalue2fi【運(yùn)營(yíng)】Chmoda+xjisuan./jisuan2+32.編寫(xiě)一個(gè)以文獻(xiàn)列表作為輸入的過(guò)濾器程序,規(guī)定文獻(xiàn)名具有以句點(diǎn)“.”分隔的后綴,過(guò)濾器輸出每個(gè)文獻(xiàn)的不帶句點(diǎn)和后綴的文獻(xiàn)名。【源程序】ReadflagWhiletest“$flag”DoLocation=’expr$location=1?Basename=’exprsubstr=”$flag”1$locat(yī)ion’Echo$basecnameReadflagdone【運(yùn)營(yíng)】Chmoda+xletter./letter3.將下面的shell腳本命名為myscript,分析其功能:count=$#cmd=echowhile[$count–gt0]docmd="$cmd\$$count"count=`expr$count-1`doneeval$cmd【命令行輸入】chmoda+xmyscript./myscriptfirstsecondthird【運(yùn)營(yíng)結(jié)果】Thirdsecondfirst【腳本功能分析】將命令行輸入的參數(shù)倒敘顯示4.設(shè)計(jì)一個(gè)程序cuts,它從標(biāo)準(zhǔn)輸入讀入數(shù)據(jù),獲取由第一個(gè)參數(shù)n和第二個(gè)參數(shù)m所限定范圍的數(shù)據(jù)(涉及這兩個(gè)字符),n和m都是整數(shù)。例如:$cuts1114Thisisat(yī)estofcutsprogram(輸入)test(顯示結(jié)果)【源程序】#!/bin/bashReadblineEcho$aline|cut-c$1-$2實(shí)驗(yàn)名稱(chēng):進(jìn)程控制與通信實(shí)驗(yàn)時(shí)間:2023年4月30日第11周星期三一、實(shí)驗(yàn)?zāi)康?加深進(jìn)程的概念理解,體會(huì)進(jìn)程創(chuàng)建過(guò)程,經(jīng)一部結(jié)識(shí)進(jìn)程的異步并發(fā)特性2,了解Linux進(jìn)程通信原理3,掌握Linux進(jìn)程控制和進(jìn)程通信相關(guān)的系統(tǒng)調(diào)用二、實(shí)驗(yàn)預(yù)習(xí)(預(yù)備知識(shí)的問(wèn)題及回答)1.寫(xiě)出下列系統(tǒng)調(diào)用功能:(1)fork()用于創(chuàng)建進(jìn)程(2)getpid()用于獲取當(dāng)前的進(jìn)程ID號(hào)(3)wait()用于等待子進(jìn)程結(jié)束(4)exit()用于進(jìn)程自我終止(5)pipe()用于常見(jiàn)無(wú)名管道(6)signal()用于在信號(hào)和信號(hào)解決函數(shù)之間建相應(yīng)關(guān)系(7)kill()用于發(fā)送信號(hào)給指定進(jìn)程2.閱讀fork系統(tǒng)調(diào)用,用偽碼寫(xiě)出其實(shí)現(xiàn)流程。 Pid=fork()Ifpid為負(fù)??Print當(dāng)前進(jìn)程是子進(jìn)程Elseifpid為0?Print當(dāng)前進(jìn)程是父進(jìn)程3.圖示pipe系統(tǒng)調(diào)用生成無(wú)名管道時(shí)所涉及的數(shù)據(jù)結(jié)構(gòu)。4.在UNIX系統(tǒng)中運(yùn)營(yíng)下面程序,最多可以產(chǎn)生多少個(gè)進(jìn)程?畫(huà)出進(jìn)程家族樹(shù)。main(){fork();fork();fork();}8個(gè)5.下列程序運(yùn)營(yíng)后,a的值是多少?main(){inta,pid;a=55;pid=fork();if

(pid<

0)

{

printf("error

in

fork!");exit(0);}elseif(pid==0){sleep(5);a=99;printf(“a=%d\n”,a);sleep(5);exit(0);}else{sleep(7);printf(“a=%d\n”,a);wait(0);}}a=99a=55;最終a=55三、實(shí)驗(yàn)內(nèi)容1.調(diào)試下面的程序,觀測(cè)也許的并發(fā)結(jié)果,給出簡(jiǎn)要分析,并畫(huà)出進(jìn)程家族樹(shù)。#include

<unistd.h>#include

<sys/types.h>#include<sys/wait.h>main

(){intstatus;?int

pid1=-1,pid2=-1,pid3=-1;?

pid1=fork();

if

(pid1

==

0)

printf("pid1=0,my

process

id

is

%d\n",getpid());?else

if

(pid1

0){printf("pid1>0,my

process

id

is

%d\n",getpid());pid2=fork();if

(pid2

==

0)printf("pid2=0,my

process

id

is

%d\n",getpid());

else

if

(pid2

0)printf("

pid2>0,my

process

id

is

%d\n",getpid());}pid3=fork();

if

(pid3

==

0)

printf("pid3=0,pid1=%d,pid2=%d,

my

process

id

is

%d\n",pid1,pid2,getpid());

else

if

(pid3

>

0)

printf("pid3>0,pid1=%d,pid2=%d,my

process

id

is%d\n",pid1,pid2,getpid());wait(&status);exit(0);?}2.編程實(shí)現(xiàn)進(jìn)程間管道通信。規(guī)定:父子進(jìn)程共享一無(wú)名管道,兩個(gè)子進(jìn)程作為發(fā)送方分別向管道發(fā)送一行信息,父進(jìn)程先讀出子進(jìn)程P1發(fā)來(lái)的信息行,將其轉(zhuǎn)換為大寫(xiě)字母輸出;再讀出子進(jìn)程P2發(fā)來(lái)的信息行,將其轉(zhuǎn)換為小寫(xiě)字母輸出?!驹闯绦颉縄ntfiledes[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(“child1inputString1\n”);Scanf(“%s”,str1);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”,str2);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!”);}}}【運(yùn)營(yíng)與測(cè)試】

附加題3.學(xué)習(xí)下面共享存儲(chǔ)區(qū)的內(nèi)容,并用共享存儲(chǔ)區(qū)的方式實(shí)現(xiàn)“觀測(cè)者——報(bào)告者”問(wèn)題(共享的count變量存于共享存儲(chǔ)區(qū)),并驗(yàn)證“與時(shí)間有關(guān)的錯(cuò)誤”。共享存儲(chǔ)操作使得兩個(gè)或兩個(gè)以上的進(jìn)程可以共用一段物理內(nèi)存(一般情況下,兩個(gè)進(jìn)程的數(shù)據(jù)區(qū)是完全獨(dú)立的,父進(jìn)程用fork創(chuàng)建子進(jìn)程后,子進(jìn)程會(huì)復(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是訪問(wèn)權(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)容請(qǐng)參考手冊(cè)。(3)共享內(nèi)存的附接和斷開(kāi)#include<sys/shm.h>void*shmat(intshmid,constvoid*addr,intshmflags);intshmdt(constvoid*addr);由于兩個(gè)函數(shù)需指出進(jìn)程地址空間中的地址,因此比較復(fù)雜。簡(jiǎn)化的方法是將shmat中的地址設(shè)為NULL。【源程序】【運(yùn)營(yíng)與測(cè)試】?實(shí)驗(yàn)名稱(chēng):虛擬存儲(chǔ)實(shí)驗(yàn)時(shí)間:2023年4月30日第11周星期三一、實(shí)驗(yàn)?zāi)康?,掌握虛擬存儲(chǔ)器的概念,理解實(shí)現(xiàn)虛擬存儲(chǔ)器的基本方法2,體會(huì)分頁(yè)存儲(chǔ)器管理中,頁(yè)面置換的過(guò)程3,進(jìn)一步結(jié)識(shí)多種頁(yè)面置換算法的實(shí)現(xiàn)機(jī)制二、實(shí)驗(yàn)預(yù)習(xí)(預(yù)備知識(shí)的問(wèn)題及回答)1.描述請(qǐng)求分頁(yè)的地址轉(zhuǎn)換過(guò)程。2.解釋FIFO頁(yè)面置換算法所產(chǎn)生的Belady現(xiàn)象。Belady現(xiàn)象是指當(dāng)進(jìn)程分派的內(nèi)存塊數(shù)增長(zhǎng)時(shí),進(jìn)程缺頁(yè)率反而上升的現(xiàn)象。FIFO算法在頁(yè)面置換時(shí),總是淘汰先進(jìn)入主存的頁(yè)面,而先進(jìn)入主存的頁(yè)面并不一定是以后用不到的頁(yè)面,假如這些頁(yè)面以后需要訪問(wèn),則將產(chǎn)生缺頁(yè),因此即使分派的內(nèi)存塊數(shù)增長(zhǎng),缺頁(yè)率仍然有也許上升,這是由于使用的頁(yè)面置換算法不合理導(dǎo)致的三、實(shí)驗(yàn)內(nèi)容1.計(jì)算并輸出下列頁(yè)面置換算法在不同內(nèi)存容量(4頁(yè)至32頁(yè))下的命中率.(1)最佳置換算法(OPT)(2)先進(jìn)先出算法(FIFO)(3)最近最久未用頁(yè)面置換算法(LRU)具體規(guī)定如下:(1)通過(guò)隨機(jī)函數(shù)產(chǎn)生一個(gè)指令序列,共320條指令.指令地址的生成原則如下:1)50%的指令是順序執(zhí)行的;2)25%的指令是均勻分布在前地址部分;3)25%的指令是均勻分布在后地址部分;程序中的具體實(shí)行方法是:1)在[0,319]的指令地址之間隨機(jī)選取一起點(diǎn)地址m;2)順序執(zhí)行一條指令,即執(zhí)行地址為m+1的指令;3)在前地址[0,m+1]中隨機(jī)執(zhí)行一條指令,該指令的地址為m’;4)順序執(zhí)行一條指令,即執(zhí)行地址為m’+1的指令;5)在后地址[m’+2,319]中隨機(jī)執(zhí)行一條指令;反復(fù)上述環(huán)節(jié)(1)(5),直到執(zhí)行320條指令為止.將指令序列變換成為頁(yè)地址流:設(shè):頁(yè)面大小為1k,用戶(hù)內(nèi)存容量為4頁(yè)逐步增長(zhǎng)到32頁(yè),用戶(hù)虛存容量為32k.假定在用戶(hù)虛存中,每頁(yè)存放10條指令,即320條指令在虛存中的存放方法為:第0條第9條指令在第0頁(yè);第10條第19條指令在第1頁(yè);……第310條第319條指令在第31頁(yè).按以上方式用戶(hù)指令共組成32頁(yè).據(jù)此可得出指令地址m和頁(yè)面號(hào)page以及頁(yè)內(nèi)位移量offset之間的計(jì)算公式為:page=m/10,offset=m%10.頁(yè)地址流長(zhǎng)度為320?!驹闯绦颉縄ntpage_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]=

溫馨提示

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

評(píng)論

0/150

提交評(píng)論