广东工业大学 操作系统实验报告.doc

广东工业大学 操作系统实验报告.doc

ID:58459229

大小:1.10 MB

页数:64页

时间:2020-09-03

广东工业大学 操作系统实验报告.doc_第1页
广东工业大学 操作系统实验报告.doc_第2页
广东工业大学 操作系统实验报告.doc_第3页
广东工业大学 操作系统实验报告.doc_第4页
广东工业大学 操作系统实验报告.doc_第5页
资源描述:

《广东工业大学 操作系统实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、操作系统实验报告学院计算机专业计算机科学与技术班级200X级X班学号XXXXXXXX姓名XXX指导教师孙为军学号:XXXXXXXX姓名:XXX协作者:________实验__一__题目__进程调度___第12周星期__四_一、实验目的用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解。二、实验内容和要求设计一个有N个进程并发的进程调度程序。要求采用最高级优先数优先算法。每个进程有一个进程控制块PCB表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。进程的优先数以及

2、需要的运行时间可以事先人为地指定。进程的到达时间为进程输入的时间。进程的运行时间以及时间片为单位进行计算。每个进程的状态可以是就绪Wwait、运行Rrun、完成Ffinish三种状态之一。就绪进程获得CPU后就只能进行一个时间片。用已占用CPU时间加1来表示。如果运行一个时间片后,进程的已占用CPU时间已达到所需要的运行时间,则撤销该进程,如果运行一个时间片后进程的已占用CPU时间还未到达所需要的运行时间,也就是进程还需要继续运行,此时,应将进程的优先数减1,然后把它插入就绪队列等待CPU。每进行一次调度程序都打印一次运行进程、就绪队列、以及

3、各个进程的PCB,以便进程检查。重复以上过程,知道所有进程完成为止。三、实验原理及设计方案1、进程调度算法:采用多级反馈队列调度算法。其基本思想是:当一个新进程进入内在后,首先将它放入第一个队列的末尾,按FCFS原则排队等待高度。当轮到该进程执行时,如能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚为完成,调度程序便将该进程转入第二队列的末尾,再同样地按FCFS原则等待调度执行,以此类推。2、实验步骤:(1)按先来先服务算法将进程排成就绪队列。(2)检查所有队列是否为空,若空则退出,否则将队首进程调入执行。(3)检查该运行进程

4、是否运行完毕,若运行完毕,则撤消进程,否则,将该进程插入到下一个逻辑队列的队尾。(4)是否再插入新的进程,若是则把它放到第一逻辑队列的列尾。(5)重复步骤(2)、(3)、(4),直到就绪队列为空。四、流程图开始初始化PCB,随机生成数据是就绪队列为空?否结束就绪队列首进程投入运行时间片到,进程已占用CPU时间+1进程已占用CPU时间达到所需运行时间?是进程完成,撤销改进程否把进程插入就绪队列尾部五、程序清单#include"stdio.h"#include#include#definegetpch(typ

5、e)(type*)malloc(sizeof(type))#defineNULL0structpcb{/*定义进程控制块PCB*/charname[10];charstate;intsuper;intntime;intrtime;structpcb*link;}*ready=NULL,*p;typedefstructpcbPCB;//////////////////////////////////////////////////////////////sort()/*建立对进程进行优化级排列的函数*/{PCB*first,*second;in

6、tinsert=0;if((ready==NULL)

7、

8、((p->super)>(ready->super))){p->link=ready;ready=p;}else{first=ready;second=first->link;while(second!=NULL){if((p->super)>(second->super)){p->link=second;first->link=p;second=NULL;insert=1;}else{first=first->link;second=second->link;}}if(insert==

9、0)first->link=p;}}//////////////////////////////////////////////////////////////input()/*建立进程控制块函数*/{inti,num;system("cls");printf("请输入进程号?");scanf("%d",&num);for(i=0;iname);getchar();prin

10、tf("输入进程优先数:");scanf("%d",&p->super);getchar();printf("输入进程运行时间:");scanf("%d",

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。