用linux 编制一段程序fcfs.c,对所输入的若干作业,输入、输出数据样例如下表所示。按FCFS算法模拟调度,观察、记录并分析调度的输出结果情况
时间: 2023-11-17 07:07:25 浏览: 121
linux中fcfs进程调度算法c++模拟实现
5星 · 资源好评率100%
好的,我了解了,我可以与您进行对话。关于您的问题,您想了解如何使用Linux编写一个FCFS算法的程序来模拟调度吗?
如果是的话,您可以按照以下步骤操作:
1. 打开您的Linux终端。
2. 创建一个新的C语言文件,可以使用vi编辑器或其他文本编辑器来创建。比如,您可以输入以下命令来创建一个名为fcfs.c的程序:
```
vi fcfs.c
```
3. 编写程序代码,在开始时包括必要的头文件和变量。在本例中,程序将接受从标准输入中输入的若干作业,并对它们进行FCFS调度。
请参考以下代码示例:
```c
#include<stdio.h>
#include<stdlib.h>
typedef struct{
int job_id;
int arrival_time;
int burst_time;
int completion_time;
} job;
int main(){
int n, i;
float avg_waiting_time=0.0, avg_turnaround_time=0.0;
job *j;
printf("Enter the number of jobs:\n");
scanf("%d", &n);
j=(job*)malloc(n*sizeof(job));
printf("Enter the arrival and burst time of each job:\n");
for(i=0;i<n;i++){
scanf("%d %d", &j[i].arrival_time, &j[i].burst_time);
j[i].job_id=i+1;
}
j[0].completion_time=j[0].arrival_time+j[0].burst_time;
for(i=1;i<n;i++){
if(j[i].arrival_time>j[i-1].completion_time){
j[i].completion_time=j[i].arrival_time+j[i].burst_time;
}
else{
j[i].completion_time=j[i-1].completion_time+j[i].burst_time;
}
}
for(i=0;i<n;i++){
printf("Job %d: arrival time = %d, burst time = %d, completion time = %d\n", j[i].job_id, j[i].arrival_time, j[i].burst_time, j[i].completion_time);
avg_waiting_time+=j[i].completion_time-j[i].arrival_time-j[i].burst_time;
avg_turnaround_time+=j[i].completion_time-j[i].arrival_time;
}
avg_waiting_time/=n;
avg_turnaround_time/=n;
printf("Average waiting time = %f\n", avg_waiting_time);
printf("Average turnaround time = %f\n", avg_turnaround_time);
free(j);
return 0;
}
```
4. 编译并运行程序。您可以使用以下命令进行编译:
```
gcc fcfs.c -o fcfs
```
该命令将把程序编译成一个可执行文件,命名为fcfs。
您可以使用以下命令来运行程序:
```
./fcfs
```
在程序执行期间,您需要按照提示输入每个作业的到达时间和执行时间。
5.观察、记录并分析输出结果。程序将输出每个作业的到达时间、执行时间和完成时间,以及平均等待时间和平均周转时间。您可以将这些数据用于分析和比较不同的调度算法。
希望这能帮助您解决您的问题。如果还有其他问题,请随时问我。
阅读全文