操作系统概论.docx
- 文档编号:32492
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:18
- 大小:29.75KB
操作系统概论.docx
《操作系统概论.docx》由会员分享,可在线阅读,更多相关《操作系统概论.docx(18页珍藏版)》请在冰点文库上搜索。
操作系统概论
操作系统概论
第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-vgrep>my2
(8)将my1和my2串联成一个新文件my3
catmy1my2>my3
(9)将当前目录下的所有文件压缩归档到myf.tar.gz文件中
tarzcfmyf.tar.gz
(10)将my3移动到上级目录中
mvmy3../
(11)删除文件my1和my2
rmmy1my2
(12)启动vi文本编辑程序
$vim
(13)在vi中输入(3)~(11)步的操作命令,并将其存入文件mysh
(14)将vi放入后台运行
(15)将文件mysh访问权限改为文件主可执行
Chmod744
(16)将文件mysh复制到上级目录中
Cpmysh,,
(17)令vi返回前台,从中追加睡眠1分钟和返回前台的命令,从vi保存退出
:
q
(18)以后台运行方式启动mysh
Vimysh
(19)找到执行睡眠命令的的进程号
(20)用发送信号命令向睡眠命令进程号发送终止信号,让mysh停止执行。
第2章与处理器管理有关的系统功能调用实践作业
编写一个能建立两个子进程的程序(父进程),让这三个进程并发执行完成以下二元函数的计算:
其中由父进程完成:
f(x,y)=f(x)+f(y)
由子进程1完成阶乘计算:
f(x)=f(x-1)*x(x>1)
f(x)=1(x=1)
由子进程2完成非波纳奇序列:
f(y)=f(y-1)+f(y-2)(y>2)
f(y)=1(y=1,2)
#include
doublef1(intx)
{
if(x==1)
return1;
else
returnf1(x-1)*x;
}
intf2(inty)
{
if(y==1||y==2)
return1;
else
returnf2(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置换算情况下依次淘汰的页号、缺页次数(页错误数)和缺页率。
#include
voidlru(inta[],intm,intn)
{
intb[3],i,j,k=0,t,x;
for(i=0;i<3;i++)
{
b[i]=a[i];
printf("%d",b[i]);
}
if(n { for(j=n;j { t=1; x=0; for(i=0;i { if(a[j]==b[i]){t=0;x=i;} } printf("\n"); if(t) { printf("淘汰%d\n",b[0]); k++; } for(i=x;i b[i]=b[i+1]; b[n-1]=a[j]; for(intc=0;c<3;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;i<15;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'); 插入: INSERT INTO SC VALUES('98001','1',87); INSERT INTO SC VALUES('98001','2',67); INSERT INTO SC VALUES('98001','3',90); INSERT INTO SC VALUES('98002','2',95); INSERT INTO SC VALUES('98002','3',88); 修改: updatescsetgrade=0 wheresnoin (selectsnofromstudent Wheresname='王林') Andcno='2'; 第5章与设备管理有关的操作系统算法实践作业 强化实践能力培养课程内容”中“磁盘移臂调度算法实践能力培养考核选例”程序编写一个能演示“最短寻找时间优先算法Sstf”的程序。 该程序能分析出“最短寻找时间优先算法”在响应任意给定的一组磁盘请求序列时磁头移动的过程,即能统计和报告出“最短寻找时间优先算法”下磁头响应请求的顺总量和掉头的次数。 #include #definestacksize10 #definemax20 typedefstruct { 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; else return1; } intStackEmpty(StackL) { if(L.base==L.top) return0; else return1; }*/ /////////////////////////////////////////////////////////////////////////// voidcreattu(Tu&T) { inti,j,k; intdata; printf("输入城市个数和道路条数(输入格式: v,b): "); scanf("%d,%d",&(T.v),&(T.b)); //fflush(stdin); printf("输入所有城市名: "); for(i=0;i scanf("\n%c",&T.vexs[i]);//%c前加\n可起缓冲作用 } fflush(stdin); for(i=0;i for(j=0;j T.bian[i][j]=0; printf("输入相邻俩城市的序号和俩城市之间的距离(输入格式为: i,j,data): \n"); for(k=0;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;i visited[i]=0; for(i=0;i { if(visited[i]! =0) DFS(T,i); }*/ for(i=0;i if(T.vexs[i]==ch) returni; } voidFloydpath(TuT,intD[][max],intpath[][max])//floyd算法 { inti,j,k; for(i=0;i for(j=0;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;k for(i=0;i for(j=0;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;i { S[i]=0; D[i]=T.bian[v0][i]; if(D[i]==0) path[i]=-1; else path[i]=0; } S[v0]=1;D[v0]=0; for(i=1;i { for(j=0;j { if(! S[j]&&D[j] { min=D[j]; k=j; } } S[k]=1; for(j=0;j { if(! S[j]&&D[k]+T.bian[k][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"); printf("输出最短路程: %d\n",D[i][j]); printf("输出最短路径: \n"); printf("--%d--",j); while(path[i][j]! =-1){ printf("--%d--",path[i][j]); j=path[i][j]; } printf("\n"); Dijkstrapath(T); } 第6章与并发进程有关的系统功能调用实践作业 强化实践能力培养课程内容”中“进程的同步与互斥实践能力培养考核选例”程序和“文件操作实践能力培养考核选例”程序,请在计算机上实现教材第6章习题6要求的功能。 答: 这四个进程实际上是两个生产者R1,R2和两个消费者W1,W2。 各自生成不同的产品供各自的消费对象去消费,他们共享一个的缓冲器。 由于缓冲器只能存放一个数,所以,R1和R2在存放数时必须互斥。 而R1和W1、R2和W2之间存在同步。 为了协调它们的工作可定义三个信号量: S: 表示能否把数存人缓冲器B,初始值为1. S1: 表示R1是否已向缓冲器存入从磁盘上读入的一个数,初始值为0. S2: 表示R2是否已向缓冲器存入从键盘上读入的一个数,初始值为0. begin S,S1,S2: semaphore; S: =1;S1: =S2: =0; cobegin processR1 xl: integer begin L1: 从磁盘读一个数; x1: =读入的数; P(S); B: =xl; V(S1); gotoL1; end; processR2 x2: integer; begin L2: 从键盘盘读一个数; x2: =读入的数; P(S); B: =x2; V(S2); gotoL2; end; processW1 y: integer; begin L3: P(S1); y: =B; V(S); 打印y中的数; gotoL3; end; processW2 z: integer begin L4: P(S2); z: =B; V(S); 打印z中的数; gotoL4; end; coend; end.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 概论