操作系统进程调度先来先服务FCFS
一,实验的流程图
二,实验代码
注:本代码主要来自豆丁,加入本人的部分修改。。//本FCFS是用不带都结点的链表完成。当然也可以用其他数据结构 #include<stdio.h>#include<stdlib.h>typedef struct PCB //定义进程控制块 { char ID[3]; //进程号 char name[10]; //进程名 char state; //运行状态 int arrivetime; //进程到达时间 int servicetime; //进程服务时间 int starttime; //进程开始时间 int finishtime; //进程完成时间 float turnaroundtime; //进程周转时间 float weightedturnaroundtime; //进程带权周转时间 struct PCB *next; //指向下一个进程的指针 }pcb;int time; //计时器int n; //进程个数pcb *head=NULL,*p,*q; //进程的指针void run_fcfs(pcb *p1){ time=p1->arrivetime>time?p1->arrivetime:time; p1->starttime=time; printf("\n现在时间是%d,开始云行作业%s\n",time,p1->name); time+=p1->servicetime; p1->state='T'; p1->finishtime=time; p1->turnaroundtime=p1->finishtime-p1->arrivetime; p1->weightedturnaroundtime=p1->turnaroundtime/p1->servicetime; printf("ID 到达时间 开始时间 服务时间 完成时间 周转时间 带权周转时间\n"); printf("%s%6d%10d%10d%8d%10.1f%10.2f\n",p1->ID,p1->arrivetime,p1->starttime,p1->servicetime,p1->finishtime, p1->turnaroundtime,p1->weightedturnaroundtime); } void find_fcfs() //寻找未完成的pcb{ int i,j; p=head; for(i=0;i<n;i++) { if(p->state=='F') { q=p; //用q指针把未完成的pcb"摘"下来 run_fcfs(q); } p=p->next; } } void found_fcfs() //获得进程信息并创建进程{ int num; printf("\n进程个数为:"); scanf("%d",&n); for(num=0;num<n;num++) { p=(pcb*)malloc(sizeof(pcb)); printf("请依次输入:\nID 进程名 到达时间 服务时间\n"); scanf("%s\t%s\t%d\t%d",&p->ID,&p->name,&p->arrivetime,&p->servicetime); if(head==NULL) { head=p;q=p;time=p->arrivetime; } 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("先来先服务模拟算法:"); found_fcfs(); p=head; find_fcfs(); }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
**
三,用于测验的结果:
**
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow
操作系统进程调度先来先服务FCFS相关推荐
- 【操作系统 - 1】先来先服务FCFS和短作业优先SJF进程调度算法
操作系统系列 学习至此,发现很多学了但很久没用的知识,久而久之,慢慢遗忘.等哪天还需要的话,却发现已经忘得差不多了,即使整理了文档(word等),还是得从头再学一遍.读研第一学期,发现很多东西都可以从 ...
- 操作系统-进程调度(FCFS和SJF)
文章目录 进程调度(FCFS和SJF) 问题描述 实验环境 输入 输出 测试数据 实验设计 数据结构 函数的功能.参数和输出 主要函数算法设计 详细设计 流程图 实验结果与分析 结果展示与描述 结果分 ...
- 操作系统之文件管理:9、磁盘的结构与磁盘调度算法(先来先服务FCFS、最短寻找时间优先SSTF、扫描算法SCAN、循环扫描算法C-SCAN、LOOK调度算法、C-LOOK调度算法)
9.磁盘的结构 磁盘结构 思维导图 磁盘.磁道.扇区.盘面.柱面 如何在磁盘中读/写数据? 磁盘的物理地址 一次磁盘读/写操作需要的时间 磁盘调度算法 1.先来先服务FCFS 2.最短寻找时间优先SS ...
- 《操作系统》实验一:先来先服务FCFS和短作业优先SJF进程调度算法
[实验题目]:先来先服务FCFS和短作业优先SJF进程调度算法 [实验学时]:4学时 [实验目的] 通过这次实验,加深对进程概念的理解,进一步掌握进程状态的转变.进程调度的策略及对系统性能的评价方法. ...
- 操作系统实验 作业调度算法 先来先服务FCFS调度算法
作业调度算法 先来先服务FCFS调度算法 作业调度的原理: 非抢占调度 把作业从外存调入内存 作业调度算法: 先来先服务FCFS 短作业优先SJF 静态优先级调度 高响应比优先调度 实验原理 作业调度 ...
- 操作系统之进程管理:6、调度算法(先来先服务FCFS、最短作业优先SJF、最高响应比优先HRRN、时间片轮转法、优先级调度、多级反馈队列)
6.调度算法 适用于早期批处理机系统的调度算法 思维导图 1.先来先服务FCFS 2.最短作业优先SJF 非抢占式最短作业优先 抢占式最短作业优先(最短剩余时间优先算法) 注 3.最高响应比优先HRR ...
- 先来先服务(FCFS)调度算法(Java实现)
文章目录 前言 一.先来先服务(FCFS)是什么? 二.先来先服务(FCFS)算法分析 三.实现代码 1.作业数据类 2.作业调度类 3.运行结果 总结 前言 在操作系统中作业调度的主要任务是根据PC ...
- c语言实现页面调度算法实验报告,c语言实现调度算法程序设计实验报告-先来先服务fcfs.docx...
c语言实现调度算法程序设计实验报告-先来先服务fcfs 实验报告 <操作系统>课程综合性实验报告 课程设计报告 课程设计题目:先来先服务(FCFS)调度算法模拟 专业:计算机科学与技术班级 ...
- 操作系统:先来先服务调度算法以及短作业优先调度算法C语言实现
FCFS(先来先服务)和SJF(短作业优先)调度算法 先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度.当在作业调度中采用该算法时,每次调度都是从后备作业 ...
最新文章
- 飞天茅台超卖事故:Redis分布式锁请慎用!
- mysql之 double write 浅析
- [BUUCTF-pwn]——pwnable_orw (ORW)
- Layui中设置公共的全局变量接口
- SSAS系列——【02】多维数据(维度对象)
- P3242 [HNOI2015] 接水果(整体二分、扫描线、dfs序)
- Mysql案例5:取得平均薪资最高的部门的部门名称
- java 集成 kafka 0.8.2.1 适配jdk1.6
- 一款简单实用的桌面电子邮件客户端
- selenium+python学习总结-mac
- 实体框架提供程序类型无法加载?
- Python中的break和continue的使用方法
- java集群之间共享数据_多个JVM之间,数据共享的问题?
- 双缓冲-- double framebuffer
- centos安装php扩展imagick-高性能处理图片
- 第九届蓝桥杯单片机省赛题‘彩灯控制器’程序实现
- win7网络无法连接其他计算机,Win7局域网不能访问如何解决?
- 优酷 Android 包瘦身治理思路全解
- Ubuntu 20.04安装字体
- 聘用协议_聘用合同谈判
热门文章
- 对PostgreSQL中后台进程内存挂载的初步学习
- 浅析Java与C#的事件处理机制(转)
- c语言数组指定位置插入和删除_Apache POI在指定位置插入表格
- android下获取无线wif信号、ssid、MAC等操作类
- 构造函数内部原理 包装类
- mysql开启布隆过滤器_海量数据去重之布隆过滤器
- Oracle DMP 导入导出
- python寻找字符串中的英文字符,python如何解析字符串中出现的英文人名?
- 【软件开发底层知识修炼】六 Binutils辅助工具之- addr2line与strip工具
- Pycharm中运行Python代码的几种方式