最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

操作系统实验三 时间片轮转法完成进程调度

来源:动视网 责编:小OO 时间:2025-10-01 10:26:16
文档

操作系统实验三 时间片轮转法完成进程调度

实验三:时间片轮转法完成进程调度一、实验目的:(1)加深对进程的理解(2)理解进程控制块的结构(3)理解进程运行的并发性(4)掌握时间片轮转法进程调度算法二、实验内容:(1)建立进程控制块(2)设计三个链队列,分别表示运行队列、就绪队列和完成队列(3)用户输入进程标识符以及进程所需的时间,申请空间存放进程PCB信息。(4)每一个时间片结束输出各进程的进程号,CPU时间(即已经占用的CPU时间),所需时间(即还需要的CPU时间),以及状态(即用W表示等待,R表示运行,F表示完成)三、实验程序:#
推荐度:
导读实验三:时间片轮转法完成进程调度一、实验目的:(1)加深对进程的理解(2)理解进程控制块的结构(3)理解进程运行的并发性(4)掌握时间片轮转法进程调度算法二、实验内容:(1)建立进程控制块(2)设计三个链队列,分别表示运行队列、就绪队列和完成队列(3)用户输入进程标识符以及进程所需的时间,申请空间存放进程PCB信息。(4)每一个时间片结束输出各进程的进程号,CPU时间(即已经占用的CPU时间),所需时间(即还需要的CPU时间),以及状态(即用W表示等待,R表示运行,F表示完成)三、实验程序:#
实验三:时间片轮转法完成进程调度

一、实验目的:

(1)加深对进程的理解

(2)理解进程控制块的结构

(3)理解进程运行的并发性

(4)掌握时间片轮转法进程调度算法

二、实验内容:

(1)建立进程控制块

(2)设计三个链队列,分别表示运行队列、就绪队列和完成队列

(3)用户输入进程标识符以及进程所需的时间,申请空间存放进程PCB信息。

(4)每一个时间片结束输出各进程的进程号,CPU时间(即已经占用的CPU时间),所需时间(即还需要的CPU时间),以及状态(即用W表示等待,R表示运行,F表示完成)

三、实验程序:

#include

#include

#include

typedef struct node

{

 进程标识符*/

   int prio;   /*进程优先数*/

 进程时间轮转时间片*/

 进程占用CPU时间*/

 进程到完成还要的时间*/

 计数器*/

 进程的状态*/

 链指针*/

}PCB;

PCB *finish,*ready,*tail,*run; //队列指针

int N,t; //进程数,时间片的大小

void firstin()

{

 就绪队列头指针赋值给运行头指针

 进程状态变为运行态

 就绪队列头指针后移到下一进程

}

void prt1(char a)//输出标题函数

{

 优先级法

 进程名 占用CPU时间 到完成还要的时间 轮转时间片 状态\\n");

}

void prt2(char a,PCB *q)//进程PCB输出

{

 优先级法的输出

 8c\\n",q->name,q->cputime,q->needtime,q->round,q->state);

}

void prt(char algo)//输出函数

{

 输出标题

 如果运行指针不空

 输出当前正在运行的PCB

 输出就绪队列PCB

 

 输出完成队列的PCB

 while(p!=NULL)

 {

 } 

 getchar(); //按住任意键继续

}

void insert(PCB *q)//时间片轮转的插入算法

{

 待插入的PCB指针

 就绪队列头指针

 做pl的前驱指针

  }

  else

  {

 否则插入在就绪队列的头

  }

void create(char alg)//时间片轮转法创建链表进程PCB

{

   run=NULL;    

 输入进程名及其需要运行的时间(中间以空格隔开):\\n"); 

 进程的状态

printf("*************时间片轮转法进程调度过程*************\\n");

 prt(alg);  

 run=ready;  

ready=ready->next;

run->state='R';

}

void timeslicecycle(char alg)//时间片轮转法

{

 处理时间加t

 完成需要时间减t

 运行完将其变为完成态,插入完成队列

 当进程完成时

 

 就绪队列不空,将第一个进程投入进行

 

 

 将进程插入到就绪队列中等待轮转

 将就绪队列的第一个进程投入运行

 

}

void main()//主函数

{

 算法标记

 输入进程的个数:");

 输入进程数

 定义时间片大小:");

 输入时间片大小

 创建进程

 时间片轮转法调度

}//main()

四、实验结果:

五、实验小结:

 时间片轮转调度是一种最古老,最简单,最公平且使用最广的算法。时间片轮转调度中关键的一点是时间片的长度的选取。本实验可以自己设置时间片大小t,在试验过程中基本满足了实验要求。通过本次实验,我更加了解了时间片轮转调度算法,通过翻看课本,对其的理解更加的深刻了,在以后的学习中,我会更加努力地学习操作系统的相关课程。当然,实验中也遇到了问题,但都不是理论上的问题,而是编程的问题,根本原因还是编程基础不牢,以后会在编程方面加倍努力。

文档

操作系统实验三 时间片轮转法完成进程调度

实验三:时间片轮转法完成进程调度一、实验目的:(1)加深对进程的理解(2)理解进程控制块的结构(3)理解进程运行的并发性(4)掌握时间片轮转法进程调度算法二、实验内容:(1)建立进程控制块(2)设计三个链队列,分别表示运行队列、就绪队列和完成队列(3)用户输入进程标识符以及进程所需的时间,申请空间存放进程PCB信息。(4)每一个时间片结束输出各进程的进程号,CPU时间(即已经占用的CPU时间),所需时间(即还需要的CPU时间),以及状态(即用W表示等待,R表示运行,F表示完成)三、实验程序:#
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top