您好,欢迎访问三七文档
操作系统概论第1章Shell命令操作实践作业使用Shell命令上机完成以下操作:(1)在当前登录用户的主目录下创建子目录mysub,进入mysub目录mkdirmysub,cdmysub(2)显示当前目录路径。Pwdmysub(3)显示用户名和用户主目录cdpwd(4)将用户主目录添加到可执行文件搜索路径exportPATH=$PATH:`pwd`(5)显示添加后的可执行文件搜索路径echo$PATH(6)列出主目录下所有以”.ba”或“.pr”打头的文件名及其属性并将其存入my1文件ls-l.ba*.pr*my1(7)列出进程状态信息中含'tty'的进程,并将其存入my2文件中psaux|greptty|grep-vgrepmy2(8)将my1和my2串联成一个新文件my3catmy1my2my3(9)将当前目录下的所有文件压缩归档到myf.tar.gz文件中tarzcfmyf.tar.gz(10)将my3移动到上级目录中mvmy3../(11)删除文件my1和my2rmmy1my2(12)启动vi文本编辑程序$vim(13)在vi中输入(3)~(11)步的操作命令,并将其存入文件mysh(14)将vi放入后台运行(15)将文件mysh访问权限改为文件主可执行Chmod744(16)将文件mysh复制到上级目录中Cpmysh,,(17)令vi返回前台,从中追加睡眠1分钟和返回前台的命令,从vi保存退出:q(18)以后台运行方式启动myshVimysh(19)找到执行睡眠命令的的进程号(20)用发送信号命令向睡眠命令进程号发送终止信号,让mysh停止执行。第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.hdoublef1(intx){if(x==1)return1;elsereturnf1(x-1)*x;}intf2(inty){if(y==1||y==2)return1;elsereturnf2(y-1)+f2(y-2);}doublef(intx,inty){returnf1(x)+f2(y);}main(){intx,y;printf(pleaseinputtwowords:\n);scanf(%d%d,&x,&y);printf(%lf\n,f(x,y));}第3章与存储管理有关的操作系统算法实践作业强化实践能力培养课程内容”中“内存页面置换算法实践能力培养考核选例”程序,编写一个能演示LRU内存页面置换算法的程序,它可根据给定的一组页面引用序列号和实存页数,显示LRU置换页的过程,能统计和报告LRU置换算情况下依次淘汰的页号、缺页次数(页错误数)和缺页率。#includestdio.hvoidlru(inta[],intm,intn){intb[3],i,j,k=0,t,x;for(i=0;i3;i++){b[i]=a[i];printf(%d,b[i]);}if(nm){for(j=n;jm;j++){t=1;x=0;for(i=0;in-1;i++){if(a[j]==b[i]){t=0;x=i;}}printf(\n);if(t){printf(淘汰%d\n,b[0]);k++;}for(i=x;in-1;i++)b[i]=b[i+1];b[n-1]=a[j];for(intc=0;c3;c++)printf(%d,b[c]);//if(t)k++;//printf(%d,b[0]);}}printf(缺页的次数%d\n,k);printf(缺页率%f,(float)k/m);}main(){inta[15];printf(pleaseinputyema:\n);for(inti=0;i15;i++)scanf(%d,&a[i]);lru(a,15,3);}第4章与文件管理有关的系统功能调用实践作业“强化实践能力培养课程内容”中“文件操作实践能力培养考核选例”程序,请构造一个能管理文本文件的学生成绩表的简单数据库管理系统。设文本文件的学生成绩表中每条学生成绩记录有3个字段构成:学号20个字节,姓名20个字节,成绩10个字节,字段间用空格分割对齐。简单数据库管理系统具有基本的追加一条记录,(仅允许文件主)按学号读出一条记录,按学号升序列出所有记录.(提示:可建立一个学生成绩表文件和一个以学号为主键的索引文件。)CreateTABLEgrade(Snochar(10)NOTNULL,Cnochar(2)NOTNULL,Gradesmallintcheck((GradeisNULL)or(Gradebetween0AND100)),primarykey(Sno,Cno),Constraintc_fforeignkey(Cno)referencesCourse(Cno),Constraints_fforeignkey(Sno)referencesStudent(Sno));插入自己的信息INSERTINTOStudentVALUES('1108900113','李晴晴',21,'女','CS');插入:INSERTINTOSCVALUES('98001','1',87);INSERTINTOSCVALUES('98001','2',67);INSERTINTOSCVALUES('98001','3',90);INSERTINTOSCVALUES('98002','2',95);INSERTINTOSCVALUES('98002','3',88);修改:updatescsetgrade=0wheresnoin(selectsnofromstudentWheresname='王林')Andcno='2';第5章与设备管理有关的操作系统算法实践作业强化实践能力培养课程内容”中“磁盘移臂调度算法实践能力培养考核选例”程序编写一个能演示“最短寻找时间优先算法Sstf”的程序。该程序能分析出“最短寻找时间优先算法”在响应任意给定的一组磁盘请求序列时磁头移动的过程,即能统计和报告出“最短寻找时间优先算法”下磁头响应请求的顺总量和掉头的次数。#includestdio.h#definestacksize10#definemax20typedefstruct{charvexs[max];intbian[max][max];intv,b;}Tu;/*typedefstruct{int*base;int*top;intsize;}Stack;voidInitStack(Stack&L)//堆栈操作{L.base=(int*)malloc(sizeof(Snode)*stacksize);if(!L.base)exit(0);L.top=L.base;L.size=stacksize;}voidinput(Stack&L,inth){*L.top++=h;}Snodeoutput(Stack&L,int&e){e=*--L.top;returne;}intStackmang(StackL){if(L.top-L.base==L.size)return0;elsereturn1;}intStackEmpty(StackL){if(L.base==L.top)return0;elsereturn1;}*////////////////////////////////////////////////////////////////////////////voidcreattu(Tu&T){inti,j,k;intdata;printf(输入城市个数和道路条数(输入格式:v,b):);scanf(%d,%d,&(T.v),&(T.b));//fflush(stdin);printf(输入所有城市名:);for(i=0;iT.v;i++){scanf(\n%c,&T.vexs[i]);//%c前加\n可起缓冲作用}fflush(stdin);for(i=0;iT.v;i++)for(j=0;jT.v;j++)T.bian[i][j]=0;printf(输入相邻俩城市的序号和俩城市之间的距离(输入格式为:i,j,data):\n);for(k=0;kT.b;k++){scanf(%d,%d,%d,&i,&j,&data);T.bian[i][j]=data;T.bian[j][i]=data;}}intDFStrave(TuT,charch){inti;/*intvisited[10];for(i=0;iT-v;i++)visited[i]=0;for(i=0;iT-v;i++){if(visited[i]!=0)DFS(T,i);}*/for(i=0;iT.v;i++)if(T.vexs[i]==ch)returni;}voidFloydpath(TuT,intD[][max],intpath[][max])//floyd算法{inti,j,k;for(i=0;iT.v;i++)for(j=0;jT.v;j++){D[i][j]=T.bian[i][j];if(j==i||D[i][j]==0)path[i][j]=-1;elseif(D[i][j]0)path[i][j]=i;}for(k=0;kT.v;k++)for(i=0;iT.v;i++)for(j=0;jT.v;j++)if(D[i][j]D[i][k]+D[k][j]){D[i][j]=D[i][k]+D[k][j];path[i][j]=path[k][j];}}voidvisit(TuT,intD[],intpath[]){charch;intj;printf(\n******************Dijkstra算法**************\n);printf(输入一个城市:);fflush(stdin);scanf(%c,&ch);j=DFStrave(T,ch);printf(到第一个城市的最短路程为:%d\n,D[j]);while(path[j]!=-1){printf(%d---%d\n,j,path[j]);j=path[j];}}voidDijkstrapath(TuT)//dijkstra算法{intD[max];intpath[max];intv0=0,S[max],min=200,k,j,i;for(i=0;iT.v;i++){S[i]=0;D[i]=T.bian[v0][i];if(D[i]==0)path[i]=-1;elsepath[i]=0;}S[v0]=1;D[v0]=0;for(i=1;iT.v;i++){for(j=0;jT.v;j++){if(!S[j]&&D[j]min){min=D[j];k=j;}}S[k]=1;for(j=0;jT.v;j++){if(!S[j]&&D[k]+T.bian[k][j]D[j]){D[j]=D[k]+T.bian[k][j];path[j]=k;}}}visit(T,D,path);}voidmain(){TuT;intD[max][max];intpath[max][max];charch1,ch2;inti,j;creattu(T);fflush(stdin);printf(请选择两个城市(输入格式为:A,B));scanf(%c,%c,&ch1,&ch2);i=DFStrave(T,ch1);j=DFStrave(T,ch2);Floydpath(T,D,path);printf(**************floyd算法*********************\n);
本文标题:操作系统概论
链接地址:https://www.777doc.com/doc-3646185 .html