操作系统实验处理机调度C语言实现

下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。

2.下载的文档,不会出现我们的网址水印。

3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。

文档包含非法信息?点此举报后获取现金奖励!

下载文档到电脑,查找使用更方便

20

积分

还剩页未读,继续阅读

关 键 词:操作系统

实验

处理机

调度

语言

实现

资源描述:

#include#include#include #include#define N 20

#define MAX 100

typedef struct PCB //pcb进程控制块定义

{

int num[N]; //进程序号

char name[10]; //进程名

char state; //进程状态

int tijiaotime; //进程到达时间

int runtime; //进程开始时间

int finishtime; //进程结束时间

int needtime; //服务时间

int pro;//进程优先级

struct PCB *next; //链接指针 指向下个作业的

}pcb;

struct PCB *head_input;

struct PCB *head_run;

struct PCB *head_run_pre;

unsigned long current; //记录系统当前时间的变量

int time=10000,n; //计时器

pcb *head=NULL,*p,*q;

void getInfo() //创建进程

{

int num;

printf("\n请输入要建立的进程个数:");

scanf("%d",&n);

for(num=0;numnum,&p->name,&p->tijiaotime,&p->needtime);

if(p->tijiaotime < time) time=p->tijiaotime;

q->next=p;

p->runtime=0;

p->finishtime=0;

p->next=NULL;

p->state=W;

q=p;

}

}

// *********************1.先来先服务调度算法*******************************

void run_fcfo(pcb *p1)//定义先来先到服务的算法

{

time = p1->tijiaotime > time? p1->tijiaotime:time;

p1->runtime=time;

printf("\n现在时间是%d,开始运行进程%s\n",time,p1->name);

time+=p1->needtime;

p1->state=F;

p1->finishtime=time;

printf("进程名 开始时间 所需时间 结束时间\n");

printf("%s %d %d %d ",p1->name,p1->runtime,p1->needtime,p1->finishtime);

}

void fcfo()//定义运行进程函数

{

int i,j,t;

for(j=0;jtijiaotimestate==W)

{

t=p->tijiaotime;

q=p; //标记当前未完成的进程

}

p=p->next;

}

run_fcfo(q);

}

}

// ************************2.优先级调度服务算法************************************

int readydata()

{ //建立就绪队列

if(head_input->next==NULL)

{

return 0;

}

struct PCB *p1=head_input->next,*pmax,*p2;

int maxpro=0xffff;

pmax=p1;

p2=head_input;

while(p1!=NULL)

{

if(p1->propro;

head_run_pre=p2;

pmax=p1;

}

p2=p1;

p1=p1->next;

}

head_run=pmax;

head_run_pre->next=head_run->next;

return 1;

}

void runprocess() //运行进程函数

{

head_run->runtime-=10;

head_run->pro++;

struct PCB *p1,*p2;

printf("时间片的大小 %d",current);

current+=10;

printf(" %s 开始\n",head_run->name);

printf("时间片的大小 %d",current);

printf(" %s 结束\n",head_run->name);

if(head_run->runtime<=0)

{//判断进程是否运行结束

}

else

{

p1=head_input;

p2=head_input->next;

p1->next=head_run;

head_run->next=p2;

}

}

int readyprocess()

{

while(1)

{

if(readydata()==0)

return 0;

else runprocess();

}

}

void Init()

{

head_input=new PCB;

head_input->next=NULL;

current=0;

int numpro;

printf("请重新输入要建立的进程个数:");

scanf("%d",&numpro);

printf("请依次输入 进程名 运行时间 优先级\n");

for(int i=0;iname);

scanf("%d",&p1->runtime);

scanf("%d",&p1->pro);

p1->state=C;

p1->next=NULL;

struct PCB *p2=head_input->next;

head_input->next=p1;

p1->next=p2;

}

}

// ************************3.时间片轮转调度服务算法************************************

void shijianpian()

{int b,i,X,t,k;

int a[MAX];//存放进程的剩余时间

int cnt[MAX];//存放进程调度次数

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

scanf("%d",&X);

printf("\n请输入时间片t大小:");

scanf("%d",&t);

printf("\n请依次输入各个进程的服务时间");

for(i=0;i=t)

{

a[i]-=t;

b+=t;

cnt[i]=cnt[i]+1;

printf("\n\t%d\t\t%d\t\t%d\t\t%d",i+1,cnt[i],b,a[i]);

}

else

{

b=b+a[i];

cnt[i]=cnt[i]+1;

a[i]=0;

printf("\n\t%d\t\t%d\t\t%d\t\t%d",i+1,cnt[i],b,a[i]);

}

else continue;

}

for(i=0;i=X)

k=0;

}

}

void main()

{

printf(" *******************************");

printf("\n 1. 按先来先到服务调度的算法模拟\n");

printf(" *******************************");

getInfo();

fcfo();

printf("\n *******************************");

printf("\n 2. 按优先级调度的算法模拟\n");

printf("\n *******************************\n");

Init();

readyprocess();

printf("\n *******************************");

printf("\n 3. 按时间片轮转调度的算法模拟\n");

printf(" *******************************\n");

shijianpian();

printf(" \n");

}

展开阅读全文

温馨提示:

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。

2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。

3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。

4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。

5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。

6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。

7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

关于本文

本文标题:操作系统实验处理机调度C语言实现

链接地址:https://www.renrendoc.com/p-79168893.html

处理机调度实验c语言,操作系统实验处理机调度C语言实现相关推荐

  1. C语言 操作系统实验 四种调度(最高响应比优先算法 HRN)

    注: 本文是四个调度算法的第一篇算法. 本文是根据CSDN上某一FCFS调度算法魔改来的,所以FCFS的算法不会发到网站. 我是个菜鸡,发文是为了纪念自己完成了代码,以及累计自己的经验. 如有知识错误 ...

  2. 网上linux实验平台,Linux操作系统实验教程

    第一部分 Linux操作系统基本原理. 第1章 Linux操作系统简介 1.1 Linux的渊源和发展简史 1.2 Linux的基本特性 1.3 Linux内核的开发模式与内核版本号 1.4 Linu ...

  3. 操作系统实验一linux,操作系统实验一 Linux基本操作.doc

    操作系统实验一 Linux基本操作 实验.实验目的Red hat Linux平台. 三.实验原理及相关知识 1. 参阅相关Linux操作系统的安装手册,熟悉Linux的基本安装和配置: 2. 参阅相关 ...

  4. 实验四linux操作系统实验报告(1),操作系统实验报告

    一. 实验目的及实验环境 (一) 实验环境 Linux 操作系统 (二)实验目的 实验1 掌握Linux基本命令 和开发环境 掌握常用的Linux shell命令: 掌握编辑环境VIM: 掌握编译环境 ...

  5. 计算机操作系统安装实验报告,计算机操作系统实验报告.doc

    计算机操作系统实验报告.doc (12页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.9 积分 计算机操作系统实验报告实验一一.实验目的 在单处理 ...

  6. 北航linux内核编译及烧录实验报告,北航操作系统实验Lab1笔记

    Loading... # 北航操作系统实验Lab1 ## Exercise 1.1 - **修改交叉编译路径为 `/OSLAB/compiler/usr/bin/mips_4KC-`** ![ex1_ ...

  7. Linux基于bash命令实验报告,Linux操作系统实验报告1

    Linux操作系统实验报告1 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文档所 ...

  8. linux文件目录操作实验报告,Linux操作系统实验4文件和目录操作

    <Linux操作系统>课程实验报告 实验4 文件和目录操作 一.实验目的 1.理解Linux文件系统的结构和目录组织方式: 2.掌握Linux常用目录和文件命令的使用. 二.实验内容与要求 ...

  9. 山东大学linux实验报告,山东大学操作系统实验四

    一.实验内容: 抽烟者问题.假设一个系统中有三个抽烟者进程,每个抽烟者不断地卷烟并抽烟.抽烟者卷起并抽掉一颗烟需要有三种材料:烟草.纸和胶水.一个抽烟者有烟草,一个有纸,另一个有胶水.系统中还有两个供 ...

最新文章

  1. hashcode、equals和==简单总结
  2. 练习题知识点整理_C++
  3. es6的Map()构造函数
  4. jdbc写入和读取过程
  5. react 组件传值
  6. 陶哲轩实分析 命题7.2.5 证明
  7. python中文单词_python – 如何显示中文单词,而不是unicode单词
  8. Toxophily(hdu2298三分+二分)
  9. Rost CM使用手册
  10. 2018年最令人惊讶的WordPress统计数据
  11. 语音转写和语音听写_如何在Windows 10上使用语音听写
  12. 原装世嘉土星SS手柄(Sega Saturn)改USB接口,实现低延时USB格斗手柄
  13. STM32F103C8T6 操作矩阵键盘
  14. python小模块----cookie
  15. 2022-2028全球及中国云端税务软件行业研究及十四五规划分析报告
  16. win7下开启wifi热点共享网络的方法
  17. 电子科技大学计算机博士要求,博士研究生发表论文的要求-电子科技大学.PDF
  18. 山东女子学院计算机专业分数线,山东女子学院历年录取分数线汇总、
  19. 手把手搭建一个【卷积神经网络】
  20. 教你如何轻松搞定云上打印管理

热门文章

  1. 10kv开关柜价格_什么是10KV开闭所,开闭所主要是什么作用?一起来探个究竟
  2. 苹果ipa签名工具免越狱下载_苹果iphone免越狱使用iTunes 一键下载旧版本app
  3. 【UGV】Mec 麦轮版小车结合角度传感器实现直线行走示例
  4. Ardino基础教程 10_光控声音
  5. 【复习】服务器主板——Leez P710
  6. 硬核创客DIY遥控氦气球飞行器——会飞的鲨鱼的诞生的全过程
  7. 美丽的童话故事都是从城堡开始...
  8. kubernetes一次生产故障日记
  9. 【个人成长学习讨论小组】练习2:角色
  10. 阿里云获得SAP HANA 2T实例公共云认证