操作系统实验报告

内容发布更新时间 : 2024/4/19 8:11:46星期一 下面是文章的全部内容请认真阅读。

运行时间、版本号、所有进程信息、CPU使用率等),并以比较容易的方式显示。

三、实验过程及结果

1.配置网络环境:在(服务.cmd).里面进行以下操作:在服务里选择3按回车 完成后,可在本地连接看到VMware已连接上网络 在虚拟机设置中设置以太网网络连接方式为

网关地址填虚拟机的网管,IP地址设为虚拟机的一个子网: 四、总结: 在linux系统下,make是我们经常用到的编译命令,所以关于make代码和他的操作指令一定要记清楚。所以,熟练掌握了make和makefile工具之后,源码安装软件就变的像windows下安装软件一样简单。 实验四进程控制与管理 一、实验目的 1. 掌握GCC编译器的用法,学会利用GCC编辑器来编辑C语言程序,学会利用GDB调试器来调试C语言程序。 2. 理解进程和程序的区别和联系, 3. 掌握在Linux环境下观察进程运行情况和CPU工作情况的命令。 4. 了解fork()系统调用,掌握利用fork()创建进程的方法。 5. 了解Linux系统其他与进程相关的系统调用,如exec、wait和exit等。 6. 了解Linux常用的进程通信机制。 二、实验内容

1. 利用Linux的进程管理命令ps、top来监视和跟踪进程,体会进程和程序的

关系。

2. 利用Linux的文字编辑器编写文件复制的C语言程序,并用gcc编译该程序,

然后运行该程序。

3. 编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,

在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示'a',子进程分别显示字符'b'和字符'c'。试观察记录屏幕上的显示结果,并分析原因。

4. 修改上述程序,每一个进程循环显示一句话。子进程显示'daughter…'

及'son……',父进程显示'parent……',观察结果,分析原因。 5. 用fork()创建一个进程,再调用exec()用新的程序替换该子进程的内容。

三、实验过程及结果 1、利用Linux的进程管理命令ps、top来监视和跟踪进程,体会进程和程序的关系。 <1>从用户身份切换到ROOT身份 <2>输入命令ps查看进程 <2>输入命令top跟踪进程 2、利用Linux的文字编辑器编写一个计算机100个自然数和的C语言程序,并用gcc编译该程序,然后运行该程序。 <1>创建一个.C文件并进入进行编辑 <2>用GCC进行编译,再查看文件,发现产生执行文件a.out <3>执行这个可执行文件得到结果5050 1、编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示'a',子进程分别显示字符'b'和字符'c'。试观察记录屏幕上的显示结果,并分析原因。 <1>穿件一个.C文件并进行编写程序代码 <2>反复执行2次该程序

<3>可以看出两次执行的结果abc出现的顺序不同,原因是,3个进程的输出次序是随机的,并不会按规定的顺序出现,所以会出现上述结果。

4、修改上述程序,每一个进程循环显示一句话。子进程显示'daughter…'及'son……',父进程显示'parent……',观察结果,分析原因。 <1>重新修改代码

<3>执行这段程序 <4>原分析:

因和之前一样,可以看出执行的结果3个单词出现的顺序不同,原因是, 3个进程的输出次序是随机的,并不会按规定的顺序出现,所以会出现上述结果。 5、用fork()创建一个进程,再调用exec()用新的程序替换该子进程的内容。 <1>

编写代码 <2>

执行的结果 结果表明execl替代了son的内容 四、实验总结和体会 这个实验考察的是进程之间存在很多可能性以及对编辑器的使用。本次实验学习了在linux环境下用gcc编译器运行c语言程序,在linux环境下编写程序用到了vi编辑器,知道了该编辑器也需要各种命令来操作。编写C语言程序时用到了fork()函数,再调用execl()用新的程序替换该子进程的内容。 实验五进程调度模拟程序的设计与实现 一、实验目的 1. 了解进程调度的概念,掌握常用进程调度算法的原理。 2. 掌握Linux程序设计编辑、编译和调试的技巧。 二、实验内容 1. 编写程序实现进程调度调度算法先来先服务、优先级高优先和时间片轮转调度算法。(编程语言不限) 2. 输入数据,输出运行结果。 三、实验过程及结果

1先来先服务?

#i?nclude? float?t,d;?? struct? {

?int?id;?

float?ArriveTime;? float?RequestTime; ?float?StartTime;? float?EndTime; ?float?RunTime;? float?DQRunTime; ?int?Status;? }arrayTask[4]; GetTask() ?{ ?int?i;? float?a;? for(i=0;i<4;i++)? {arrayTask[i].id=i+1; ?printf(\printf(\scanf(\arrayTask[i].ArriveTime=a;? printf(\?scanf(\arrayTask[i].RequestTime=a; ?arrayTask[i].StartTime=0; ?arrayTask[i].EndTime=0;? arrayTask[i].RunTime=0;? arrayTask[i].Status=0;? ?}? }? int?fcfs()? ?{?? int?i,j,w=0;?

for(i=0;i<4;i++)?? {??

if(arrayTask[i].Status==0)? ?{??

t=arrayTask[i].ArriveTime;?? w=1;? ?}?? if(w==1)

??break;? ?}??

for(i=0;i<4;i++)? ??{??

if(arrayTask[i].ArriveTime

?for(i=0;i<4;i++)? ?{??

if?(arrayTask[i].ArriveTime==t)?? return?i;? ?}?? }?? int?sjf() {? int?i,x=0,a=0,b=0; ?float?g;? for(i=0;i<4;i++)? {? if(arrayTask[i].Status==1)? {g=arrayTask[i].EndTime; ?x=1;? }? }? if(x==0){? t=arrayTask[0].ArriveTime;? for(i=0;i<4;i++) ?{? if(arrayTask[i].ArriveTime

for(i=0;i<4;i++)? {

if(arrayTask[i].EndTime>g)? g=arrayTask[i].EndTime; ?}?

for(i=0;i<4;i++)?

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4 ceshi