最新文章专题视频专题问答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
当前位置: 首页 - 正文

进程调度+C语言+操作系统实验

来源:动视网 责编:小OO 时间:2025-09-29 17:30:09
文档

进程调度+C语言+操作系统实验

操作系统原理实验——进程调度实验报告1目的与要求:1)本实验目的是通过对进程调度算法的实现和实验模拟,加深对操作系统进程调度操作功能和进程调度算法的完整理解,培养和提高学生对操作系统开发的兴趣,以及进程调度程序的开发与应用能力;2)理论上必须深刻理解优先权调度算法和时间片轮转调度算法的基本思想和原理;3)使用C或VC++编程语言编写优先权调度或时间片轮转算算法调度模拟程序;4)按照实验题目要求正确地完成实验内容(编写、调试算法程序,提交程序清单及及相关实验数据与运行结果)5)于2009
推荐度:
导读操作系统原理实验——进程调度实验报告1目的与要求:1)本实验目的是通过对进程调度算法的实现和实验模拟,加深对操作系统进程调度操作功能和进程调度算法的完整理解,培养和提高学生对操作系统开发的兴趣,以及进程调度程序的开发与应用能力;2)理论上必须深刻理解优先权调度算法和时间片轮转调度算法的基本思想和原理;3)使用C或VC++编程语言编写优先权调度或时间片轮转算算法调度模拟程序;4)按照实验题目要求正确地完成实验内容(编写、调试算法程序,提交程序清单及及相关实验数据与运行结果)5)于2009
操作系统原理实验——进程调度实验报告

1目的与要求:

1)本实验目的是通过对进程调度算法的实现和实验模拟,加深对操作系统进程调度操作功能和进程调度算法的完整理解,培养和提高学生对操作系统开发的兴趣,以及进程调度程序的开发与应用能力;

2)理论上必须深刻理解优先权调度算法和时间片轮转调度算法的基本思想和原理;

3)使用C或VC++编程语言编写优先权调度或时间片轮转算算法调度模拟程序;

4)按照实验题目要求正确地完成实验内容(编写、调试算法程序,提交程序清单及及相关实验数据与运行结果)

5)于2009年10月15日以前提交本次实验报告(含电子和纸质报告,由学习委员以班为单位统一打包提交)。

2 实验内容或题目

1)设计有5个进程并发执行的模拟调度程序,每个程序由一个PCB表示。

2)模拟调度程序可任选两种调度算法之一实现(有能力的同学可同时实现两个调度算法)。

3)程序执行中应能在屏幕上显示出各进程的状态变化,以便于观察调度的整个过程。

4)本次实验内容(项目)的详细说明以及要求请参见实验指导书。

3 实验步骤与源程序

#include

#include

#include

void Check();

typedef struct node

{

    char name[10];

    int span;//轮转时间

    int take;//占用时间

    int used;//已用的时间

    int need;//还需要的时间

    char status;//状态

    struct node *next;

}PCB;

PCB *ready,*finish,*tail,*rear;

void Print(PCB *p)

{

    while(p!=NULL)

    {

    printf("%3s%5d%5d%5d%5d%5c\\n",p->name,p->used,p->need,p->take,p->span,p->status);

p=p->next;

    }

}

void Creat(int N)

{    

    PCB *p;

    int time;

    char na[10];

    ready=NULL;       /*就绪队列头指针*/

    finish=NULL;      /*完成队列头指针*/

    tail=NULL;

    rear=NULL;

    printf("Enter name and time of round process \\n");

    for(int i=1;i<=N;i++)//创建就绪队列

    {

        p=(PCB *)malloc(sizeof(PCB));

        scanf("%s",na);

        scanf("%d",&time);

     strcpy(p->name,na);

     p->span=2;

     p->take=0;

     p->used=0;

     p->need=time;

     p->status='J';

     p->next=NULL;

        if(ready==NULL){ready=p;tail=p;}

     else{tail->next=p;tail=p;}

    }

    printf("……………………运行结果……………………\n");

}

void Print1()

{//输出ready与finish队列

    PCB *p;

    p=ready;

    printf("name,used,need,take,span,state\\n");

    Print(p);

    p=finish;

    Print(p);

    }

void Run()

{    

    Print1();

ready->used+=1;

ready->need-=1;

ready->take+=1;

ready->status='R';

    if(ready->need!=0)//进程时间need片是否为0

    {

        if(ready->takespan)

/*占用时间是否到轮转时间,没到就继续,到了就排到就绪队列尾*/

        {Run();}

        else

{

tail->next=ready;ready=ready->next;tail=tail->next;

tail->status='J';tail->take=0;tail->next=NULL;

Check();

}

    }

    else//进程撤销,放入撤销队列

    {

        if(finish==NULL)

        {finish=ready;rear=finish;}

        else

     {rear->next=ready;rear=rear->next;}

        ready=ready->next;rear->next=NULL;rear->status='F';rear->take=0;

Check();

    }

    //Check();由于上多次文调用Run本身递归,此句也会被多调用,产生在结束时的冗余结果;

}

void Check()

{

    if(ready!=NULL) {Run();}

    else Print1();

}

main()

{

    int N=0;

    printf("输入进程数目:");

     scanf("%d",&N);

     Creat(N);

     Check();

}

4 测试数据与实验结果(可以抓图粘贴)

 

文档

进程调度+C语言+操作系统实验

操作系统原理实验——进程调度实验报告1目的与要求:1)本实验目的是通过对进程调度算法的实现和实验模拟,加深对操作系统进程调度操作功能和进程调度算法的完整理解,培养和提高学生对操作系统开发的兴趣,以及进程调度程序的开发与应用能力;2)理论上必须深刻理解优先权调度算法和时间片轮转调度算法的基本思想和原理;3)使用C或VC++编程语言编写优先权调度或时间片轮转算算法调度模拟程序;4)按照实验题目要求正确地完成实验内容(编写、调试算法程序,提交程序清单及及相关实验数据与运行结果)5)于2009
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top