2024年处理机调度实验报告.doc

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

试验汇报

(學院)系:信息工程學院

专业:网络工程

姓名:?

班级:

學号:

指导教師:

12月26曰

操作系统试验汇报

姓名

學号

曰期

12月26曰

试验室

机房152

指导教師

设备编号

实习題目

设计一种按优先数调度算法实現处理器调度的程序

一、试验内容

选择一种调度算法,实現处理器调度。

二、试验目的

在采用多道程序设计的系统中,往往有若干個進程同步处在就绪状态。當就绪進程個数不小于处理器数時,就必须根据某种方略来决定哪些進程优先占用处理器。本实习模拟在單处理器状况下的处理器调度,协助學生加深理解处理器调度的工作。

三、试验過程

1、数据构造设计:

(1)全局变量

structPCB //定义构造体PCB

{

charNAME[10]; //表达進程名字

intTIME; //表达進程所需要的运行時间

intPRIORITY; //表达進程的优先级

charSTATE; //表达進程的状态,為r時表达就绪,為e時表达已执行完

structPCB*next;

};

(2)局部变量

insert()函数:

指针变量head為指向链表的頭指针;

指针变量tail為一种遍历链表指针;

指针变量pretail為一种指向tail所指向的結點前一种結點的指针,用来查找插入位置;

指针变量p指向新申請到的新結點;

create()函数中:

指针变量p指向新申請到的新結點;

整型变量i用来实現for循环。

display()函数:

指针变量h為指向链表的頭指针;

module()函数

指针变量run為一种遍历链表指针;

main()函数

2、算法设计

主函数

voidmain()

函数功能:初始化某些信息,再通過菜單项选择择要执行的操作:

主函数流程如图1所示。

2)创立函数PCB*creat(PCB*head)用来建立一种就绪進程链表,其中每個結點為一种PCB构造体,此链表是一种按照PRIORITY(進程优先数)排序的有序链表,此函数返回建立的链表的頭指针。

入口参数:無

出口参数:建立的链表的頭指针

函数流程图如图二所示:

(3)输出模拟函数:PCB*module(PCB*head)

用来模拟進程运行,并将成果显示給顾客,此函数没有返回值。此函数只是依次把链表的第一种進程結點运行一次,然後变化优先数和执行完所需時间,再插入到链表中去,并保持链表有序,假如一种進程結點执行時间变為0,则将其從链表裏删除,并且释放内存,一直反复下去,直到此链表為空,由于此函数中插入結點和create

入口参数:建立的链表的頭指针

出口参数:無

函数流程图如图三所示

四、程序实現及运行成果截图

1、源程序文献夹

处理机

頭文献

#includestdio.h

#includestdlib.h

#includemalloc.h

#includestring.h

structPCB //定义构造体PCB

{

charNAME[10]; //表达進程名字

intTIME; //表达進程所需要的运行時间

intPRIORITY; //表达進程的优先级

charSTATE; //表达進程的状态,為r時表达就绪,為e時表达已执行完

structPCB*next;

};

PCB*insert(PCB*head,PCB*p)

{

structPCB*tail,*pretail;//tail為一种遍历指针,pretail是指向tail所指的前一种結點的指针

pretail=tail=head;

if(head==NULL)

{

head=pretail=tail=p;

p-next=NULL;

}

else

while((p-PRIORITY=tail-PRIORITY)(tail-next!=NULL))

{

pretail=tail;

tail=tail-next;

}

if((p-PRIORITY)(tail-PRIORITY))

{

if(head==tail) //假如此時链表中只有一种進程結點

{

p-next=head;

head=p;

}

else

您可能关注的文档

文档评论(0)

132****5705 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:5104323331000004

1亿VIP精品文档

相关文档