me;}Р if(p->arrivetime < time) time=p->arrivetime;Р q->next=p;Р p->starttime=0;Р p->finishtime=0;Р p->turnaroundtime=0;Р p->weightedturnaroundtime=0;Р p->next=NULL;Р p->state='F';Р q=p; Р }Р}Рvoid main()Р{Р printf("先来先服务算法模拟");Р getInfo();Р p=head;Р fcfs();Р}Р3.实验结果Р测试用例Р Р进程名Р到达时间Р服务时间РAР0Р1РBР1Р100РCР2Р1РDР3Р100Р4.实验结果分析Р 先来先服务算法顾名思义先到的先参与调度,本利中按照A、B、C、D的顺序。因为只有非抢占方式,所以先到的进程必须执行完来才能执行下一个进程,下一个进程的开始时间也就取决于到达时间和上一个进程的结束时间中较晚的一个,如C进程的到达时间是2,但是B进程的完成时间是101,所以C进程的开始时间为101。Р 由实验结果可以看出,短作业C的带权周转时间竟高达100,而长作业D的带权周转时间仅为1.99,据此可知,FCFS算法有利于CPU繁忙的作业,而不利于I/O繁忙型的作业(进程)。Р5.实验心得Р 本次实验设应用链表结构进行存储并排序,条理清晰,易于理解,程序编写完成以后,实现类预期对结果。界面设计比较清晰明了,易于阅读。Р 本程序中灵活地设计调用函数和函数嵌套来简化程序,例如在查找未执行进程和对未执行进程执行时分别设计了void fcfs()和void run_fcfs(),多个进程运行时均要调用这两个函数,简化了代码。Р 另外,在编写程序之前,由于先画来流程图,对应流程图的顺序来实现程序,能对程序有个全局的把握,提高了编写速度,减少了错误。