您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 操作系统概论实践作业
章节作业第1章Shell命令操作实践作业(1)在当前登录用户的主目录下创建子目录mysub,进入mysub目录。答:mkdirmysub&&cdmysub(2)显示当前目录路径。答:pwd(3)显示用户名和用户主目录答:echo$HOME$USER(4)将用户主目录添加到可执行文件搜索路径答:exportPATH=$PATH:$HOME(5)显示添加后的可执行文件搜索路径答:echo$PATH(6)列出主目录下所有以”.ba”或“.pr”打头的文件名及其属性并将其存入my1文件中答:ls-l$HOME/*.ba$HOME/*.prmy1(7)列出进程状态信息中含'tty'的进程,并将其存入my2文件中答:ps-ef|grepttymy2(8)将my1和my2串联成一个新文件my3答:catmy1my2my3(9)将当前目录下的所有文件压缩归档到myf.tar.gz文件中答:tarcvfmyf.tar.gz*(10)将my3移动到上级目录中答:mvmy3../(11)删除文件my1和my2答:rmmy1my2(12)启动vi文本编辑程序答:vi(13)在vi中输入(3)~(11)步的操作命令,并将其存入文件mysh答:按i进入编辑模式,按esc退出编辑模式,按:输入命令:savemysh,输入命令:wq保存退出(14)将vi放入后台运行答:vi&(15)将文件mysh访问权限改为文件主可执行答:chmod+xmysh(16)将文件mysh复制到上级目录中答:cpmysh../(17)令vi返回前台,从中追加睡眠1分钟和返回前台的命令,从vi保存退出答:fg后面追加sleep60&&fg(18)以后台运行方式启动mysh答:mysh&(19)找到执行睡眠命令的的进程号答:ps-fu$USER|grepmysh|awk'{print$2}'(20)用发送信号命令向睡眠命令进程号发送终止信号,让mysh停止执行。答:kill-15pid第2章与处理器管理有关的系统功能调用实践作业参照“强化实践能力培养课程内容”中“进程创建和执行的实践能力培养考核选例”和“线程的创建及线程间管道通信实践能力培养考核选例”程序,编写一个能建立两个子进程的程序(父进程),让这三个进程并发执行完成以下二元函数的计算:其中由父进程完成:f(x,y)=f(x)+f(y)由子进程1完成阶乘计算:f(x)=f(x-1)*x(x1)f(x)=1(x=1)由子进程2完成非波纳奇序列:f(y)=f(y-1)+f(y-2)(y2)f(y)=1(y=1,2)答:#includestdio.hintfx(intx);intfy(inty);voidmain(){intx,y;printf(pleaseinputx:);scanf(%d,&x);intffx,ffy;ffx=fx(x);printf(pleaseinputy:);scanf(%d,&y);ffy=fy(y);intz;z=ffx+ffy;printf(%d,z);}intfx(intx){intffx;if(x==1)ffx=1;elseffx=fx(x-1)*x;returnffx;}intfy(inty){intffy;if(y==1||y==2)ffy=1;elseif(y2)ffy=fy(y-1)+fy(y-2);returnffy;}第3章与存储管理有关的操作系统算法实践作业参照“强化实践能力培养课程内容”中“内存页面置换算法实践能力培养考核选例”程序,编写一个能演示LRU内存页面置换算法的程序,它可根据给定的一组页面引用序列号和实存页数,显示LRU置换页的过程,能统计和报告LRU置换算法情况下依次淘汰的页号、缺页次数(页错误数)和缺页率。答:#includestdio.h#includestdlib.hvoidCopyL(intSour[],intDist[],intx);//数组Sour复制到数组Dist,复制到x个数voidSetDI(intDiscL[]);//随机生成磁道数voidPrint(intPri[],intx);//打印输出数组PrivoidDelInq(intSour[],intx,inty);//数组Sour把x位置的数删除,并把y前面的数向前移动,y后的数保持不变(即会出现2个y)voidFCFS(intHan,intDiscL[]);//先来先服务算法(FCFS)voidSSTF(intHan,intDiscL[]);//最短寻道时间优先算法(SSTF)intSCAN(intHan,intDiscL[],intx,inty);//扫描算法(SCAN)voidCSCAN(intHan,intDiscL[]);//循环扫描算法(CSCAN)//voidN_Step_SCAN(intHan1,intDiscL[]);//N步扫描算法(NStepScan)voidPaiXu();//寻道长度由低到高排序voidPri();intNAll=0;intBest[5][2];//用作寻道长度由低到高排序时存放的数组intLimit=0;//输入寻找的范围磁道数iintJage;floatAver=0;intmain(){inti;intDiscLine[10];//声明准备要生成的随机磁道号的数组intHand;//磁道数intCon=1;intn;while(Con==1){Jage=0;printf(\n请输入初始的磁道数(0n65536):);scanf(%d,&Hand);printf(\n+输入寻找的范围:);scanf(%d,&Limit);if(Limit65536){printf(超出范围!);}else{printf(*********************************************\n);printf(****************磁盘调度算法******************\n);printf(*********************************************\n);printf(*1.先来先服务算法(FCFS)*\n);printf(*2.最短寻道时间优先算法(SSTF)*\n);printf(*3.扫描算法(SCAN)*\n);printf(*4.循环扫描算法(CSCAN)*\n);printf(*********************************************\n);scanf(%d,&n);if(n==0)exit(0);printf(\n);switch(n){case1:SetDI(DiscLine);//随机生成磁道数FCFS(Hand,DiscLine);//先来先服务算法(FCFS)break;case2:SetDI(DiscLine);//随机生成磁道数SSTF(Hand,DiscLine);//最短寻道时间优先算法(SSTF)break;case3:SetDI(DiscLine);//随机生成磁道数SCAN(Hand,DiscLine,0,9);//扫描算法(SCAN)break;case4:SetDI(DiscLine);//随机生成磁道数CSCAN(Hand,DiscLine);//循环扫描算法(CSCAN)break;case5:SetDI(DiscLine);//随机生成磁道数SetDI(DiscLine);//随机生成磁道数FCFS(Hand,DiscLine);//先来先服务算法(FCFS)SSTF(Hand,DiscLine);//最短寻道时间优先算法(SSTF)SCAN(Hand,DiscLine,0,9);//扫描算法(SCAN)CSCAN(Hand,DiscLine);//循环扫描算法(CSCAN)PaiXu();//寻道长度由低到高排序printf(\n\n+寻道长度由低到高排序:);for(i=0;i5;i++){printf(%4d,Best[i][0]);}break;}printf(\n\n+是否继续(按0结束,按1继续)?);scanf(%5d,&Con);}}}//数组Sour复制到数组Dist,复制到x个数voidCopyL(intSour[],intDist[],intx){inti;for(i=0;i=x;i++){Dist[i]=Sour[i];}}//打印输出数组PrivoidPrint(intPri[],intx){inti;for(i=0;i=x;i++){printf(%5d,Pri[i]);}}//随机生成磁道数voidSetDI(intDiscL[]){inti;for(i=0;i=9;i++){DiscL[i]=rand()%Limit;//随机生成10个磁道号}printf(+需要寻找的磁道号:);Print(DiscL,9);//输出随机生成的磁道号printf(\n);}//数组Sour把x位置的数删除,并把y前面的数向前移动,y后的数保持不变(即会出现2个y)voidDelInq(intSour[],intx,inty){inti;for(i=x;iy;i++){Sour[i]=Sour[i+1];x++;}}//先来先服务算法(FCFS)voidFCFS(intHan,intDiscL[]){intRLine[10];//将随机生成的磁道数数组Discl[]复制给数组RLine[]inti,k,All,Temp;//Temp是计算移动的磁道距离的临时变量All=0;//统计全部的磁道数变量k=9;//限定10个的磁道数CopyL(DiscL,RLine,9);//复制磁道号到临时数组RLineprintf(\n+按照FCFS算法磁道的访问顺序为:);All=Han-RLine[0];for(i=0;i=9;i++){Temp=RLine[0]-RLine[1];//求出移动磁道数,前一个磁道数减去后一个磁道数得出临时的移动距离if(Temp0)Temp=(-Temp);//移动磁道数为负数时,算出相反数作为移动磁道数printf(%5d,RLine[0]);All=Temp+All;//求全部磁道数的总和DelInq(RLine,0,k);//每个磁道数向前移动一位k--;}Best[Jage][1]=All;//Best[][1]存放移动磁道数Best[Jage][0]=1;//Best[][0]存放算法的序号为:1Jage++;//排序的序号加1Aver=((float)All)/10;//求平均寻道次数printf(\n+移动磁道数:%5d,All);printf(\n+平均寻道长度:*%0.2f*,Aver);}//最短寻道时间优先算法(SSTF)voidSSTF(intHan,intDiscL[]){inti,j,k,h,All;intTemp;//Temp是计算移动的磁道距离的临时变量intRLine[10];//将随机生成的磁道数数组Discl[]复制给数组RLine[]intMin;All=0;//统计全部的磁道数变量k=9;//限定10个的磁道数CopyL(DiscL,RLine,9);//复制磁道号到临时数组RLineprintf(\n+按照SSTF算法磁道的访问顺序为:);for(i=0;i=9;i++){Min=64000;for(j=0;j=k;j++)//内循环寻找与当前磁道号最短寻道的时间的磁道号{if(RLine[j]Han)//如果第一个随机生成的磁道号大于当前的磁道号,执行下一句Temp=RLine[j]-Han;//求出临时的移动距离elseTemp=Han-RLine[j];//求出临时的移动距离if(TempMin)//如果每求出一次的移动距离小于Min,执行下一句{Min=Temp;//Temp临时值赋予Minh=j;//把最近当前磁道号的数组下标赋予h}}All=All+Min;//统计一共移动
本文标题:操作系统概论实践作业
链接地址:https://www.777doc.com/doc-3183945 .html