操作系统概论_第1页
操作系统概论_第2页
操作系统概论_第3页
操作系统概论_第4页
操作系统概论_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

操作系统概论第1章 Shell命令操作实践作业 使用Shell命令上机完成以下操作:(1)在当前登录用户的主目录下创建子目录mysub,进入mysub目录 mkdir mysub,cd mysub(2) 显示当前目录路径。 Pwd mysub(3) 显示用户名和用户主目录 cd pwd(4) 将用户主目录添加到可执行文件搜索路径 export PATH=$PATH:pwd(5)显示添加后的可执行文件搜索路径 echo $PATH(6)列出主目录下所有以”.ba”或“.pr”打头的文件名及其属性并将其存入my1文件 ls -l .ba* .pr* my1(7)列出进程状态信息中含tty的进程,并将其存入my2文件中 ps aux |grep tty|grep -v grep my2(8)将my1和my2串联成一个新文件my3 cat my1 my2 my3(9)将当前目录下的所有文件压缩归档到myf.tar.gz文件中 tar zcf myf.tar.gz (10)将my3移动到上级目录中 mv my3 ./(11)删除文件my1和my2 rm my1 my2(12)启动vi文本编辑程序 $vim(13)在vi中输入(3) (11)步的操作命令,并将其存入文件mysh(14)将vi放入后台运行 (15)将文件mysh访问权限改为文件主可执行 Chmod 744(16)将文件mysh复制到上级目录中 Cp mysh , (17)令vi返回前台,从中追加睡眠1分钟和返回前台的命令,从vi保存退出 :q(18)以后台运行方式启动mysh Vi mysh(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)#includedouble f1(int x)if(x=1)return 1;elsereturn f1(x-1)*x;int f2(int y)if(y=1|y=2)return 1;elsereturn f2(y-1)+f2(y-2);double f(int x,int y)return f1(x)+f2(y);main()int x,y;printf(please input two words:n);scanf(%d%d,&x,&y);printf(%lfn,f(x,y);第3章 与存储管理有关的操作系统算法实践作业强化实践能力培养课程内容”中“内存页面置换算法实践能力培养考核选例”程序,编写一个能演示LRU内存页面置换算法的程序,它可根据给定的一组页面引用序列号和实存页数,显示LRU置换页的过程,能统计和报告LRU置换算情况下依次淘汰的页号、缺页次数(页错误数)和缺页率。#includevoid lru(int a,int m,int n)int b3,i,j,k=0,t,x;for(i=0;i3;i+)bi=ai;printf(%d ,bi);if(nm)for(j=n;jm;j+)t=1;x=0;for(i=0;in-1;i+)if(aj=bi) t=0;x=i;printf(n);if(t) printf(淘汰%dn ,b0);k+;for(i=x;in-1;i+)bi=bi+1;bn-1=aj;for(int c=0;c3;c+)printf(%d ,bc);/if(t) k+;/printf(%d ,b0);printf(缺页的次数%dn,k);printf(缺页率%f,(float)k/m);main()int a15;printf(please input ye ma:n);for(int i=0;i15;i+)scanf(%d,&ai);lru(a,15,3);第4章 与文件管理有关的系统功能调用实践作业“强化实践能力培养课程内容”中“文件操作实践能力培养考核选例”程序,请构造一个能管理文本文件的学生成绩表的简单数据库管理系统。设文本文件的学生成绩表中每条学生成绩记录有3个字段构成:学号20个字节,姓名20个字节,成绩10个字节,字段间用空格分割对齐。简单数据库管理系统具有基本的追加一条记录,(仅允许文件主)按学号读出一条记录,按学号升序列出所有记录.(提示:可建立一个学生成绩表文件和一个以学号为主键的索引文件。)Create TABLE grade(Sno char(10) NOT NULL,Cno char(2) NOT NULL,Grade smallint check(Grade is NULL)or(Grade between 0 AND 100),primary key (Sno,Cno),Constraint c_f foreign key(Cno)references Course(Cno),Constraint s_f foreign key(Sno)references Student(Sno);插入自己的信息INSERT INTO Student VALUES(,李晴晴 ,21,女,CS);插入:INSERTINTOSCVALUES(98001,1,87);INSERTINTOSCVALUES(98001,2,67);INSERTINTOSCVALUES(98001,3,90);INSERTINTOSCVALUES(98002,2,95);INSERTINTOSCVALUES(98002,3,88);修改:update sc set grade=0where sno in (select sno from studentWhere sname= 王林)And cno=2;第5章 与设备管理有关的操作系统算法实践作业强化实践能力培养课程内容”中“磁盘移臂调度算法实践能力培养考核选例”程序编写一个能演示“最短寻找时间优先算法Sstf”的程序。该程序能分析出“最短寻找时间优先算法”在响应任意给定的一组磁盘请求序列时磁头移动的过程,即能统计和报告出“最短寻找时间优先算法”下磁头响应请求的顺总量和掉头的次数。#include#define stacksize 10#define max 20typedef struct char vexsmax;int bianmaxmax;int v,b;Tu;/*typedef struct int *base; int *top; int size;Stack;void InitStack(Stack &L) /堆栈操作 L.base=(int*)malloc(sizeof(Snode)*stacksize); if(!L.base) exit(0); L.top=L.base; L.size=stacksize;void input(Stack &L,int h) *L.top+=h; Snode output(Stack &L,int &e) e=*-L.top; return e; int Stackmang(Stack L) if(L.top-L.base=L.size) return 0; else return 1;int StackEmpty(Stack L) if(L.base=L.top) return 0; else return 1;*/void creattu(Tu &T) int i,j,k;int data;printf(输入城市个数和道路条数(输入格式:v,b):);scanf(%d,%d,&(T.v),&(T.b);/fflush(stdin); printf(输入所有城市名:);for(i=0;iT.v;i+)scanf(n%c,&T.vexsi); /%c前加n可起缓冲作用fflush(stdin);for(i=0;iT.v;i+)for(j=0;jT.v;j+)T.bianij=0;printf(输入相邻俩城市的序号和俩城市之间的距离(输入格式为:i,j,data):n);for(k=0;kT.b;k+) scanf(%d,%d,%d,&i,&j,&data); T.bianij=data; T.bianji=data; int DFStrave(Tu T,char ch) int i; /*int visited10; for(i=0;iv;i+) visitedi=0; for(i=0;iv;i+) if(visitedi!=0) DFS(T,i); */ for(i=0;iT.v;i+) if(T.vexsi=ch) return i; void Floydpath(Tu T,int Dmax,int pathmax) /floyd算法int i,j,k;for(i=0;iT.v;i+)for(j=0;j0) pathij=i;for(k=0;kT.v;k+)for(i=0;iT.v;i+) for(j=0;jDik+Dkj)Dij=Dik+Dkj;pathij=pathkj; void visit(Tu T,int D,int path)char ch;int j; printf(n*Dijkstra算法*n);printf(输入一个城市:);fflush(stdin);scanf(%c,&ch);j=DFStrave(T,ch);printf(到第一个城市的最短路程为:%dn,Dj); while(pathj!=-1) printf( %d-%d n,j,pathj); j=pathj;void Dijkstrapath(Tu T) /dijkstra算法 int Dmax; int pathmax; int v0=0,Smax,min=200,k,j,i; for(i=0;iT.v;i+) Si=0; Di=T.bianv0i; if(Di=0) pathi=-1; else pathi=0; Sv0=1;Dv0=0; for(i=1;iT.v;i+) for(j=0;jT.v;j+) if(!Sj&Djmin)min=Dj;k=j; Sk=1; for(j=0;jT.v;j+) if(!Sj&Dk+T.biankjDj) Dj=Dk+T.biankj; pathj=k; visit(T,D,path);void main() Tu T; int Dmaxmax;int pathmaxmax; char ch1,ch2; int i,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(输出最短路程:%dn,Dij);printf(输出最短路径:n);printf(-%d-,j);while(pathij!=-1)printf(-%d-,pathij); j=pathij;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.beginS,S1,S2:semaphore;S:1;S1:S2:0;cobeginprocess R1xl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论