版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、筝波大考NINGBO UNIVERSITY实验报告实验题目姓名:学号:一课程名称:操作系统实验所在学院:信息科学与工程学院专业班级:计算机任课教师:实验项目名称处理机调度一、实验目的与要限1 、给出所选实验题目。2 、给出源程序文件名和执行程序文件名。源程序中要有详细的注释。3、给出程序中使用的数据结构和符号说明。4、给出程序的流程图。5、给出运行结果。6、总结收获体会和对题解的改进意见及见解。二、实验设备及软件:装有Linux操作系统的PC机一台、实验方法(原理、流程图)设计一个按时间片轮转法调度的算法链接指针到达时间估计运行时间进程状态如右图所示。系统设置一个队头和一再指向下一个进程。 同
2、时还1 .进程控制块内容和先来先服务调度的算法一样, 个队尾指针,分别指向队列的第一个和最后一个进程。2 .为每个进程确定一个要求运行时间和到达时间。3 .按进程到达的先后次序排成一个循环队列。4 .处理机调度时,开始选择队首第一个进程运行,另外 设一个当前运行进程指针,指向当前正运行的进程。5 .本实验是模拟,所选进程并不实际运行,只是执行: 估计运行时间减1和输出当前运行进程名。应判断该进程的剩余运行时间是否为 为完成状态,并撤出就绪队列。7 .若就绪队列不空,重复上述8 .程序中应有显示和打印语句,6 .进程运行一次后,应将当前运行进程指针下移一个位置,0。若不为0,则等待下一轮调度;若
3、为 0,则则状态改5, 6步。显示每次选中进程名字和队列变化情况。进程名链接 指针到达时间估计运行时间进程状态程序流程图如下:四、实验过程、步骤及内容在下述三种调度算法中选择一题进行编程实验:1 .设计一个按先来先服务调度的算法;2 .设计一个按动态优先级调度的算法;3 .设计一个按时间片轮转法调度的算法; 本次实验选择按时间片轮转法调度的算法: 时间片轮转算法参考代码:#define N 20#include <stdio.h>#include <stdlib.h>/*#include<conio.h>*/typedef struct pcb/*进程控制块
4、定义*/ char pnameN;int runtime;int arrivetime;char state;struct pcb *next; PCB;PCB head_input; /就绪队列头指针PCB head_run; /运行队列头指针 static char R='r' ,C='c'unsigned long current; /记录系统当前时间 void inputprocess(); /* 建立进程函数 */ int readyprocess(); /*建立就绪队列函数*/ int readydata(); /*判断进程是否就绪函数 */ int
5、 runprocess(); /* 运行进程函数 */ int readyprocess() while (1) if (readydata()=0) return 1; elserunprocess();int readydata() /判断就绪队列是否为空 PCB *p1,*p2,*p3;if (head_input.next=NULL) if (head_run.next=NULL)return 0;else return 1;p1 = head_run.next;p2 = &head_run;while (p1 != NULL) p2 = pl;pl = p2->next
6、;pl = p2;p3 = head_input.next;p2 = &head_input;while (p3 != NULL) if ( ( unsigned long )p3->arrivetime <= current) && (p3->state = R) printf( "Time slice is %8ld( time %4ld); Process %s start.n" current, (current+500)/1000, p3->pname);p2->next = p3->next;p3-&g
7、t;next = p1->next;p1->next = p3;pl = p3;p3 = p2;p2 = p3;p3 = p3->next;return 1;int runprocess() PCB *p1,*p2;if (head_run.next = NULL) current+;return 1; else pl = head_run.next;p2 = &head_run;while (p1 != NULL) p1->runtime-; /时间片大小为1 current+;if (p1->runtime <= 0) printf( "
8、;Time slice is %8ld( time %4ld); Process %s end.n" current, (current+500)/1000, p1->pname);p1->state = C;p2->next=p1->next;free(p1);p1=p2->next;else p2 = p1;pl = p2->next;return 1;void inputprocess() PCB *p1,*p2;int i,num;unsigned long max = 0;printf( "How many processes
9、do you want to run:" );scanf( "%d",&num);p2 = &head_input;for (i=0; i<num; i+) p1=(PCB*)malloc( sizeof (PCB);p2->next = p1;printf( "No.%3d process input pname:" ,i+1);scanf( "%s",p1->pname);printf("runtime:");scanf( "%d",&(p
10、1->runtime);printf("arrivetime:");scanf( "%d",&(p1->arrivetime);p1->runtime = (p1->runtime)*1000;p1->arrivetime = (p1->arrivetime)*1000;p1->state = R;if ( unsigned long )(p1->arrivetime) > max)max = p1->arrivetime;p2 = p1;p2->next = NULL;void
11、main()printf( "ntime 1 = 1000 time slice'n" );current = 0;inputprocess();readyprocess();system( "stty -echo" );getchar();system( "stty echo");五、实验数据(现象)处理分析进一步生成可执行文件时出现错误 1:nbunbu* gcc shiyanS -o shiyanfishiyanS. c:3:19: fatal error: canto *h;没有那个文件或目录 tfinclude &l
12、t;xonto'h)Aconpildtton terminated *解决办法:#include <conio.h>是一个控制输出的头文件,getch()函数不能使用, 所以去掉头文件并且修改getch()函数。具体修改部分如下图所示:void main()(printf("ritirie 1 = 1000 tine);匚uent = 6;inputpe匚reedyprocess();systemf"stty - echo");getcharf);systenf "stty echo11);进一步生成可执行文件时出现错误 2:st)t
13、ydn8+c:94:15: warning: Lncanpdttt>l.e Implicit declar of bullkin function*naLloc* enabled by defiult pl«(PCB*)RalLoc(slz«of(PCB)j解决办法:malloc的功能与头文件#include <stdlib.h>有关,但是本参考代码没有 给出头文件,所以添加头文件以后 malloc的功能可以实现了。*shiyanBx x#defln& N 2。#tnclude«stdio*#lnclude<stdlit>.h
14、>/*#include<conto|*h>+/ .* JJk T-p-a H-all I * I I h i生成可执行文件并运行:nbunbu:$ gcc &hlyan9.c -o sht/anS nbugnbu./shtyanStime 1 = 1000 time sliceHow Eny processes do you want to rur:|进行第一次测试:time 1 = 1000 time sliceHow many processes do you want to run;5inputpname:adNo. 1 process runtime:3 at
15、vettme:5No.2 processinputpname:bbruntime:4 arrlvettme:7 Mo. 3 process runtime:5 arrtvettme:9 No. A processinputinput7+已停止 nbunbu:$ ./shtyanfipnameiccpname:AZ./shtyanStime 1 = 1000 time sliceHow many processes do you wantto run:5No. 1 process runtime:? arrtvettme:©inputpname:aaMo.2 processinputp
16、name:bbruntine;3 arrlvettne:2 No. 3 process runtine:4 arrtvettme:5 No. 4 process runtime:5 arrtvettne:9 No. 5 process runtime:5 arrtvettme:12inputinputinputpname:ccpname:ddpname:eeTime slice is Time slice is0( 2600(tine time0);2);Process aa start.Process aa end.Time slice is2000(time2);Process bb st
17、art.Time slice is5600(time5);Process bb end.Time slice is5600(time5);Process cc start.Time slice is9000(tine9);Process cc end.Time slice is9600(time9);Process dd start.Time slice is12000(time12);Process ee start.Time slice is15999(time16);Process dd end.Time slice is19000(time19);Process ee end.进行第二
18、次测试:nbugnbu:./shtyanBtine 11G0O time sliceHow many processes do you wantto run:4No. 1 process runtime:2 arrtvettmezO No. 2 process runtine;3 arri.vetime:2 No. 3 process runtine:4 arrivetime:5 No. 4 process runtime:9 arrivetvFie:9inputinputInputInputpnaneibbphane:ccpnanezddTimesliceis0(time0);Process
19、aastart .Tinesliceis2000(time2);Processaaend.Tinesliceis2000(time2);Processbbstart,Timesliceis5000(tine5);Processbbend.Tinesliceis5000(time5);Processccstart .TimesliceIs9060(timeD;Processccend.Tinesliceis9000(tine9);Processddstart.Ttnesliceis18000(time18);Processddend.进行第三次测试:tine 1 = 1000 time slic
20、eHow many process.es do you wantto run:4Mo 1 process runtime:12 arrtvettme:0 M。* 2 process ruintine: 9 arrivettme:l Mq* 3 process runtime:45 arrivetime:5inputinputtnputNo.pnane:aapnane;bbpnaneiccTimesliceis0(time0);ProcessamstartTiresliceis1000(timeProcessbbstartTimeslicets5060(time5);ProcessccstartTineslicets25999(time26);Pro
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 47005-2026增材制造激光定向能量沉积钛合金制件技术规范
- 光伏发电技术及应用
- 2026山东安全员C证考试题库
- 学习弘扬井冈山精神专题党课讲稿三篇
- 环保意识培养策略-第2篇-洞察与解读
- 包装材料耐微生物性-洞察与解读
- 伤寒环境传播途径-洞察与解读
- 可降解药物载体设计-洞察与解读
- 农田生物多样性功能评价-洞察与解读
- 年产2万吨硫酸镁、6万吨小苏打及6万吨焦亚硫酸钠技改项目可行性研究报告模板-拿地立项申报
- 冷链工程施工安全监管规范
- 统编版四年级语文上册第1-8单元全册单元测试卷(共8套含答案)
- 导医服务中的心理疏导技巧
- 氮气安全培训材料课件
- 房屋安全鉴定培训资料课件
- 小型病险水库除险加固初步设计技术指南(湖南省)
- 水培蔬菜课件
- 专题04方程与不等式(安徽专用)2021~2025中考1年模拟数学真题专项试题
- 2024-2025学年初中数学专项练习:费马点与加权费马点详细总结(含解析)
- 30万吨年产量的乙二醇合成工艺设计10000字【论文】
- 装修项目班组管理制度
评论
0/150
提交评论