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

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", p

你可能感兴趣的:(操作系统,操作系统,算法)