进程调度3.doc_第1页
进程调度3.doc_第2页
进程调度3.doc_第3页
进程调度3.doc_第4页
进程调度3.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

湖南科技学院计算机与信息科学系实 验 报 告实验名称 进程调度课 程 名 称计算机操作系统所 属 系 部 班 级计科0902班时 间2011年12 月 1日 第 3,4 节地 点E305姓 名姜泽政学 号200908001217成 绩本 组 成 员(一人一组)一、实验要求1、复习进程的状态及其转换;2、深入理解同步与互斥的概念及p、v操作;3、上机前仔细阅读参考程序,并在参考程序的基础上,对程序作相应的修改;给出实验数据与结果二、实验目的进程调度时进程管理的主要内容之一,通过设计,编制,调试一个简单的进程调度模拟系统,对进程调度,进程运行状态变换及PV操作加深理解和掌握。三、实验环境 每人一台电脑,在下实现。四、实验内容1、模拟批处理多道操作系统的进程调度;采用剥夺式优先算法,对三个进程进行模拟调度2、模拟实现同步机构避免并发进程执行时可能与时间相关的错误;模拟PV操作同步机构,用PV操作解决进程进入临界区的问题。五、实验程序数据结构1,进程控制块PCBStructInt id;Char status;Int priorrty;Int waiter1;2,信号量StructInt value;Int water2;sem23,现场保护栈Char stack114每个进程都有一个为10个字的现场保护栈,用来保护被中断时的断点地址等。以及全局变量Int i; char addr;int m1,m2;六、实验输入数据 输入进程: 输入PCB参数 3,4,,5进程以此类推。七、实验输出数据与分析总结,按任意键开始一次时间片调度: 进行了一次进程调度轮回,每一个进程公平的获得了一定时间的CPU使用。进程全部运行完毕,正常退出。实验结果的分析及说明实验结果很明显的看出时间片轮转片算法的实质,即每一个进程按顺序公平的获得一定的CPU使用时间,如果没有运行结束,那么它将排到队尾等待下一次调度。等待队列中的进程也会有次序的排队等待调度。八、教师评语 教师签字: 年 月 日 程序中源程序和可执行程序: void main(); /*主函数,用来进行调度操作*/void newPCB(); /*建立PCB块并将他们组成一个队列*/void pushPCB(); /*将新的PCB块放到链表末尾*/void showPCB(); /*调度一次时间轮转算法并显示*/void pinrtSort(); /*排序输出各个进程的PCB*/代码清单:/*本程序实现模拟进程的时间片轮转调度算法,即每一个进程按照在队列中的顺序平均获得cpu执行时间,如未能在时间片中完成,则该进程回到队尾等待调度,直到运行完毕Author juju*/#include#include#include#includestatic int id=0;int process_num;int current_process;struct pcbchar name20;int id;char state;int need_time;int run_time;struct pcb*next;*p,*q,*first_pcb=NULL;typedef struct pcb PCB;/*排序输出各个进程PCB*/void printSort()int i;q=first_pcb;for(i=0;iid)printf(|%stt|%dtt|%ctt|%dtt|%dn,q-name,q-id,q-state,q-need_time,q-run_time); i+;q=first_pcb;elseq=q-next;if(q=NULL)q=first_pcb;i+;/*调度一次PCB并显示*/void showPCB()int i;first_pcb-run_time+;first_pcb-state=r;/*进程执行完毕,将其清除出链表*/if(first_pcb-run_time)=(first_pcb-need_time)current_process-;printf(进程%s已经运行完毕,first_pcb-name);system(pause);first_pcb=first_pcb-next;if(first_pcb=NULL)printf(所有进程都已经运行完毕);system(pause);return;first_pcb-state=r;system(cls);/*显示运行的进程和就绪的进程*/q=first_pcb-next;printf(-当前运行的进程是:进程%snn,first_pcb-name);printf(-在等待队列的进程是:);while(q!=NULL)printf(进程%s,q-name);q=q-next;/*显示相应的PCB块*/printf(nn-进程详细PCB-);printf(nn|进程名tt|进程IDtt|进程状态t|进程所需时间t|进程运行时间n);printSort();/*进行一次时间片轮换调度算法,将队首的进程放到队尾,之前第二位进程获得cpu时间片*/q=first_pcb;while(q-next!=NULL)q=q-next;first_pcb-state=w;q-next=first_pcb;first_pcb=first_pcb-next;q-next-next=NULL;printf(n);printf(运行调度);system(pause);/*将新的PCB块放到链表末尾*/void pushPCB(int i)q-next=p;q=p;if(i=process_num-1)q-next=NULL;/*建立PCB块并将他们组成一个队列*/void newPCB()int i;printf(请输入进程数:);scanf(%d,&process_num);q=(PCB*)malloc(sizeof(PCB);first_pcb=(PCB*)malloc(sizeof(PCB);for(i=0;iname);printf(请输入进程需要的运行时间:);scanf(%d,&p-need_time);p-id=id+;p-run_time=0;p-state=w;if(i=0)first_pcb=q=p;p-next

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论