操作系统进程调度模拟算法(C实现)

本文介绍了如何使用C语言实现两种操作系统进程调度算法:先来先服务(FCFS)和短进程优先(SPF)。FCFS算法按照进程到达时间排序,依次执行,而SPF算法则每次选择当前剩余运行时间最短的进程进行调度。这两种算法各有特点,FCFS简单直观,SPF则更注重效率。
摘要由CSDN通过智能技术生成

1、“先来先服务”调度算法
编程思路:
对各进程按照到达时间进行排序,挑选最先到达的进程一次性执行完毕,判断是否所有进程都被调度,若是则结束,否则返回挑选最先到达的进程一次性执行完毕步骤,继续执行后续程序。按照进程进入的先后次序来分配处理器。先进入就绪队列的进程优先被挑选,运行进程一旦占有处理器将一直运行下去,直到运行结束或者被阻塞,这是非抢占式调度。
代码如下:

//排序: 按照进程的arrivetime(从小到大)对pcb数组中的N个进程进行排序 
void sort(pcb *p, int N)   
{
        
	for(int i=0; i < N-1; i++)
	{
   
		for(int j=0; j<N-1-i; j++)  
		{
   
			if(p[j].arrivetime > p[j+1].arrivetime)   
			{
       
				pcb temp;    
				temp=p[j];    
				p[j]=p[j+1];    
				p[j+1]=temp;    
			}
		}
	}
} 
 
//运行
void run(pcb *p, int N)     
{
   
	int k;    
	for(k=0; k<N; k++)    
	{
       
		if(k==0) //第1个进程   
		{
        
			p[k].starttime = p[k].arrivetime; //第1个进程到达之后即可执行   
			p[k].finishtime = p[k].starttime + p[k].servicetime; 
		}    
		else 
		{
       
			p[k].starttime = (p[k-1].finishtime >= p[k].arrivetime)? p[k-1].finishtime: p[k].arrivetime;    
			p[k].finishtime = p[k].starttime + p[k].servicetime;
		}    
	}    
	for(k=0; k<N; k++)    
	{
       
		p[k].zztime = p[k].finishtime - p[k].arrivetime;    
		p[k].dqzztime = p[k].zztime / p[k].servicetime;    
     }    
} 
  
//显示
void Print(pcb*p, int N)    
{
   
	int k;  
	printf("调用先来先服务算法以后进程运行的顺序是: ");
	printf("%s"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值