操作系统概论实践作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
章节作业
第1章Shell命令操作实践作业
(1)在当前登录用户的主目录下创建子目录mysub,进入mysub目录。
答: mkdir mysub && cd mysub
(2)显示当前目录路径。
答: pwd
(3)显示用户名和用户主目录
答: echo $HOME $USER
(4)将用户主目录添加到可执行文件搜索路径
答: export PATH=$PATH:$HOME
(5)显示添加后的可执行文件搜索路径
答: echo $PATH
(6)列出主目录下所有以”.ba”或“.pr”打头的文件名及其属性并将其存入my1文件中答: ls -l $HOME/*.ba $HOME/*.pr > my1
(7)列出进程状态信息中含'tty'的进程,并将其存入my2文件中
答: ps -ef | grep tty > my2
(8)将my1和my2串联成一个新文件my3
答: cat my1 my2 > my3
(9)将当前目录下的所有文件压缩归档到myf.tar.gz文件中
答: tar cvf myf.tar.gz *
(10)将my3移动到上级目录中
答: mv my3 ../
(11)删除文件my1和my2
答: rm my1 my2
(12)启动vi文本编辑程序
答: vi
(13)在vi中输入(3) ~ (11)步的操作命令,并将其存入文件mysh
答:按i 进入编辑模式,按esc退出编辑模式,按: 输入命令:save mysh, 输入命令:wq 保存退出
(14)将vi放入后台运行
答: vi &
(15)将文件mysh访问权限改为文件主可执行
答: chmod +x mysh
(16)将文件mysh复制到上级目录中
答: cp mysh ../
(17)令vi返回前台,从中追加睡眠1分钟和返回前台的命令,从vi保存退出
答: fg 后面追加sleep 60 && fg
(18)以后台运行方式启动mysh
答: mysh &
(19)找到执行睡眠命令的的进程号
答: ps -fu $USER | grep mysh | awk '{print $2}'
(20)用发送信号命令向睡眠命令进程号发送终止信号,让mysh停止执行。
答: kill -15 pid
第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
int fx(int x);
int fy(int y);
void main()
{
int x,y;
printf("please input x:");
scanf("%d",&x);
int ffx,ffy;
ffx=fx(x);
printf("please input y:");
scanf("%d",&y);
ffy=fy(y);
int z;
z=ffx+ffy;
printf("%d",z);
}
int fx(int x)
{
int ffx;
if(x==1)
ffx=1;
else
ffx=fx(x-1)*x;
return ffx;
}
int fy(int y)
{
int ffy;
if(y==1||y==2)
ffy=1;
else if(y>2)
ffy=fy(y-1)+fy(y-2);
return ffy;
}
第3章与存储管理有关的操作系统算法实践作业
参照“强化实践能力培养课程内容”中“内存页面置换算法实践能力培养考核选例”程序,编写一个能演示LRU内存页面置换算法的程序,它可根据给定的一组页面引用序列号和实存页数,显示LRU置换页的过程,能统计和报告LRU置换算法情况下依次淘汰的页号、缺页次数(页错误数)和缺页率。
答:#include"stdio.h"
#include"stdlib.h"
void CopyL(intSour[],int Dist[] ,int x); //数组Sour复制到数组Dist,复制到x个数
void SetDI(intDiscL[]); //随机生成磁道数
void Print(intPri[],int x); //打印输出数组Pri
void DelInq(int Sour[],intx,int y); //数组Sour把x位置的数删除,并把y前面的数向前移动,y后的数保持不变(即会出现2个y)
void FCFS(int Han,intDiscL[]); //先来先服务算法(FCFS)
void SSTF(int Han,intDiscL[]); //最短寻道时间优先算法(SSTF)
int SCAN(int Han,intDiscL[],int x,int y); //扫描算法(SCAN)
void CSCAN(int Han,intDiscL[]); //循环扫描算法(CSCAN)
//void N_Step_SCAN(intHan1,int DiscL[]); //N步扫描算法(NStepScan)
void PaiXu(); //寻道长度由低到高排序
void Pri();
int NAll=0;
int Best[5][2]; //用作寻道长度由低到高排序时存放的数组
int Limit=0; //输入寻找的范围磁道数i
int Jage;
float Aver=0;
int main()
{
int i;