操作系统上机资料整合 FIFOLRUFCFSSJF算法都有 C语言 已调试.docx

上传人:b****4 文档编号:24332881 上传时间:2023-05-26 格式:DOCX 页数:15 大小:18.67KB
下载 相关 举报
操作系统上机资料整合 FIFOLRUFCFSSJF算法都有 C语言 已调试.docx_第1页
第1页 / 共15页
操作系统上机资料整合 FIFOLRUFCFSSJF算法都有 C语言 已调试.docx_第2页
第2页 / 共15页
操作系统上机资料整合 FIFOLRUFCFSSJF算法都有 C语言 已调试.docx_第3页
第3页 / 共15页
操作系统上机资料整合 FIFOLRUFCFSSJF算法都有 C语言 已调试.docx_第4页
第4页 / 共15页
操作系统上机资料整合 FIFOLRUFCFSSJF算法都有 C语言 已调试.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

操作系统上机资料整合 FIFOLRUFCFSSJF算法都有 C语言 已调试.docx

《操作系统上机资料整合 FIFOLRUFCFSSJF算法都有 C语言 已调试.docx》由会员分享,可在线阅读,更多相关《操作系统上机资料整合 FIFOLRUFCFSSJF算法都有 C语言 已调试.docx(15页珍藏版)》请在冰豆网上搜索。

操作系统上机资料整合 FIFOLRUFCFSSJF算法都有 C语言 已调试.docx

操作系统上机资料整合FIFOLRUFCFSSJF算法都有C语言已调试

一、20个命令,选8个。

1.shutdown

设置1分钟后重启

#shutdown-r分钟数,例如#shutdown–r2为两分钟后重启

设置定时关机

#shutdown-hhh:

mm,例如#shutdown–h19:

31为19点31分关机

2.ls

查看/home/test目录下文件情况

#ls/home/test

3.cp

将foo.txt文件拷贝到/home/test2目录下,命名为foo2.txt

#cp/home/test/foo.txt/home/test2/foo2.txt

4.rm

将Finished子目录及子目录中所有档案删除:

 

  #rm-rFinished 

5.mv

将foo.txt文件移动到/home/test3目录下,命名为foo3.txt

#mvfoo.txt/home/test3/foo3.txt

6.pwd

查看当前目录

#pwd

7.cd

切换目录到/home/test

#cd/home/test

8.mkdir

创建test目录到/home目录下

#mkdir/home/test

9.rmdir

删除/home/test目录

#rmdir/home/test

10.find

/home目录里查找文件1.txt

#find/home-name1.txt

/home目录里查找所有文本文件,注意单双引号使用与否的区别

#find/home-name“*.txt”

/home目录里查找除1.txt外的文件

#find/home!

-name1.txt

11.grep

查找文件file1中以b开头的行

#grep‘^b’file1

查找文件file1中以b结尾的行

#grep’b$’file1

查找文件file1中所有以an为头两个字符的3个字符,包括any,and等。

#grep‘an.’file1

12.chown

把文件shiyan.c的所有者改为wang

#chownwangshiyan.c

把目录/his及其下的所有文件和子目录的属主改成wang,属组改成users

#chown-Rwang.users/his

13.chmod

将foo.txt文件属主增加写权限,同组用户增加执行权限,其他用户删除执行权限;

$chmodu+w/home/usr1/foo.txt

$chmodg+x/home/usr1/foo.txt

$chmodo-x/home/usr1/foo.txt

14.groupadd

新建用户组grp2(简单使用)

#groupaddgrp2

创建用户组grp1(带参数使用)

#groupaddgrp1(groupadd[-ggid][-o][-r][-f]groupname)

建立一个新组,并设置组ID加入系统:

#groupadd-g2000groupname

此时在/etc/group文件中产生一个组ID(GID)是2000的项目。

15.cat

显示/home/test/foo.txt文件内容

#cat/home/test/foo.txt

用cat命令把foo2.txt和foo3.txt的内容合并到/home下的newfoo.txt

#cat/home/test2/foo2.txt/home/test3/foo3.txt>/home/newfoo.txt

16.more

分页查看新生成的newfoo.txt文件

#more/home/newfoo.txt

17.man

强制man命令在第2节文件夹中查找poll帮助内容

#man2poll

man是按照手册的章节号的顺序进行搜索的,比如:

#mansleep

只会显示sleep命令的手册,如果想查看库函数sleep,就要输入:

#man3sleep

18.date

查看当前时间。

#date

19.cal

显示当月的日历

#cal

显示当年日历

#cal-y

显示2012年的日历

#cal2012

显示2012年的6月的日历

#cal62012

20.wc

统计文件1.txt的字节数

#wc-c/home/1.txt

统计文件1.txt的行数

#wc-l/home/1.txt

统计文件1.txt的字数

#wc-w/home/1.txt

统计文件1.txt,2.txt的文本信息

#wc-lcw/home/1.txt/home/2.txt

或#wc/home/1.txt/home/2.txt

二、shell编程(循环)

①找出100以内所有7的倍数。

提示:

利用取余数运算%,当余数为0表示判断一个数是另一个数的整数倍。

#!

/bin/bash

x=1

while[$x–le100];

do

a=$(expr$x%7)

if[$a–eq0];then

echo“$x”

fi

x=$(expr$x+1)

done

题目2:

创建以下bash文件并执行

计算指定整数范围内的素数/质数的个数。

例如,#./2.sh5060将输出50和60之间的素数个数2。

(注:

素数指,只能被1和自身整除的整数。

#!

/bin/bash

#checkarguments

if[$#-lt2];then

echo"argumentnumbererror!

"

exit1

fi

a=$1

b=$2

#oneisnotprime

If[$a-gt1];then

a2=$a

else

a2=2

fi

num=0

x=$a2

while[$x-le$b];do

#checkxisprimeornot

flag=1

y=2

while[$y-lt$x];do

c=$(expr$x%$y)

if[$c-eq0];then

flag=0

fi

y=$(expr$y+1)

done

if[$flag-eq1];then

echo"$x"

num=$(expr$num+1)

fi

x=$(expr$x+1)

done

echo"numberofprimesin[$a,$b]is$num."

三、用C语言编程实现先来先服务(FCFS)、最短作业优先(SJF)、先进先出(FIFO)、最近最少用(LRU)算法

//FCFS

#include"stdio.h"

#include"stdlib.h"

intmain()

{

inti,num,n;

intrt[100];//运行时间

intat[100];//到达时间

intet[100];//结束时间

intct[100];//周转时间

floattotaltime,avgtime;//总时长,平均周转时长

printf("一共有几道作业:

");

scanf("%d",&n);

printf("按作业的到达顺序输入各作业需要的运行时间\n");

for(i=0;i

{

printf("作业%d运行时间:

",i+1);

scanf("%d",&rt[i]);

printf("到达时间:

");

scanf("%d",&at[i]);

}

printf("FCFS;\n");

for(i=0;i

{if(i==0)

et[i]=at[i]+rt[i];

else

et[i]=et[i-1]+rt[i];

ct[i]=et[i]-at[i];

printf("p%d:

rt=%d,at=%d,et=%d,ct=%d\n",i+1,rt[i],at[i],et[i],ct[i]);

}

totaltime=0.0f;

for(i=0;i

totaltime+=(float)ct[i];

avgtime=totaltime/n;

printf("totalcyclingtimeofFCFSis:

%.2f.\n",totaltime);

printf("averagecyclingtimeofFCFSis:

%.2f.\n",avgtime);

return0;

}

 

//SJF

#include"stdio.h"

#include"stdlib.h"

intmain()

{

inti,n,j,next;

intrt[100];//运行时间

intat[100];//到达时间

intyunxingtime;//结束时间

floattotaltime,avgtime;//总时长,平均周转时长

printf("一共有几道作业:

");

scanf("%d",&n);

printf("按作业的到达顺序输入各作业需要的运行时间\n");

for(i=0;i

{

printf("作业%d运行时间:

",i+1);

scanf("%d",&rt[i]);

printf("到达时间:

");

scanf("%d",&at[i]);

}

j=0;

printf("SJF;\n");

for(i=1;i

{if(at[j]>at[i])

j=i;}//求出最先到达的

totaltime=0.0f;

totaltime=(float)rt[j];

yunxingtime=rt[j]+at[j];

printf("p%d:

rt=%d,at=%d,et=%d\n",j+1,rt[j],at[j],yunxingtime);

for(j=1;j

{next=n+1;

for(i=0;i

{if(at[i]!

=0)

{if(at[i]<=yunxingtime)

{if(next==n+1)

next=i;//在上一个作业结束之前到达的作业

elseif(rt[next]>rt[i])

next=i;//当两个作业都符合上一个作业结束之前到达,则比较它们的执行时间

}

}}

yunxingtime+=rt[next];

totaltime+=yunxingtime-at[next];

printf("p%d:

rt=%d,at=%d,et=%d\n",next+1,rt[next],at[next],yunxingtime);

at[next]=0;

}

avgtime=(float)totaltime/n;

printf("totalcyclingtimeofFCFSis:

%.2f.\n",totaltime);

printf("averagecyclingtimeofFCFSis:

%.2f.\n",avgtime);

return0;

}

 

//FIFO

#include"stdio.h"

intmain(intargc,char*argv[])

{

inti,j,k,k2,t;

intn1;

intn2;

intpageseq[100];

intmempages[10][2];

intn3;

intn4;

intreplacedPage;

printf("总页面:

");

scanf("%d",&n1);

if(n1<1)

{

printf("页面错误!

\n");

return1;

}

printf("pagenumber:

");

scanf("%d",&n2);

 

for(i=0;i

{

printf("%d-thpageis:

",i+1);

scanf("%d",&t);

pageseq[i]=t;

}

n3=0;

n4=0;

for(i=0;i

{

for(j=0;j

{

if(mempages[j][0]==pageseq[i])

break;

}

if(j==n3&&n3

mempages[n3][0]=pageseq[i];

mempages[n3][1]=i+1;

n3++;n4++;

}

elseif(j==n3){

intminv;

minv=mempages[0][1];k2=0;

for(k=1;k

if(minv>mempages[k][1]){

k2=k;

minv=mempages[k][1];

}

}

replacedPage=mempages[k2][0];

mempages[k2][0]=pageseq[i];

mempages[k2][1]=i+1;

n4++;

printf("page%din,page%dout.%d-thmissingpage.\n",pageseq[i],replacedPage,n4);

}

else{

printf("page%disinmemory.\n",pageseq[i]);

}

}

printf("Totally%dmissingpages!

\n",n4);

return0;

}

 

//LRU

#include"stdio.h"

intmain(intargc,char*argv[])

{

inti,j,k,k2,t;

intn1;

intn2;

intpageseq[100];

intmempages[10][2];

intn3;

intn4,w;

intreplacedPage;

printf("总页面:

");

scanf("%d",&n1);

if(n1<1)

{

printf("页面错误!

");

return1;

}

printf("pagenumber:

");

scanf("%d",&n2);

 

for(i=0;i

{

printf("%d-thpageis:

",i+1);

scanf("%d",&t);

pageseq[i]=t;

}

n3=0;

n4=0;

for(i=0;i

{

for(j=0;j

{

if(mempages[j][0]==pageseq[i])

break;

}

if(j==n3&&n3

mempages[n3][0]=pageseq[i];

mempages[n3][1]=0;

if(j==0)

mempages[n3][1]=0;

else

for(w=0;w

mempages[w][1]++;

n3++;n4++;

}

elseif(j==n3){

intminv;

minv=mempages[0][1];

k2=0;

for(k=1;k

if(mempages[k][1]>minv){

k2=k;

minv=mempages[k][1];

}

}

replacedPage=mempages[k2][0];

mempages[k2][0]=pageseq[i];

mempages[k2][1]=0;

for(w=0;w

if(w!

=k2)

mempages[w][1]++;

n4++;

printf("page%din,page%dout.%d-thmissingpage.\n",pageseq[i],replacedPage,n4);

}

else{mempages[j][1]=0;

for(w=0;w

if(w!

=j)

mempages[w][1]++;

printf("page%disinmemory.\n",pageseq[i]);

}

}

printf("Totally%dmissingpages!

\n",n4);

return0;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1