资源预览内容
第1页 / 共40页
第2页 / 共40页
第3页 / 共40页
第4页 / 共40页
第5页 / 共40页
第6页 / 共40页
第7页 / 共40页
第8页 / 共40页
第9页 / 共40页
第10页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
操作系统实验报告学 院 计算机学院 专 业 计算机科学与技术 班 级 2班 学 号 姓 名 指导教师 (200 9年5 月) 计算机 学院 计算机科学与技术 专业 2 班 学号: 姓名: 协作者:_ 教师评定: 考勤情况程序运行情况程序质量实验技能创新精神实验报告设计文档实验_一_题目_ 进程调度_ _ 第 5 周星期 1 实验_二_题目_ 作业调度_ 第 7 周星期 1 实验_三(综合性)题目_主存空间的分配与回收_ 第 9 周星期 1 实验_四 _题目_ 文件系统 _第 11 周星期 1 实验平台:(宋体5号字)1、 计算机及操作系统:台式机,windows xp sp32、 编程环境:Microsoft Visual C+ 6.0源程序名和可执行程序名:实验一:时间片轮转法.cpp 时间片轮转法.exe实验二:作业调度.cpp和作业调度.exe实验三(综合性):主存空间的分配和回收.cpp和主存空间的分配和回收.exe实验四:文件系统.cpp和文件系统.exe备注:学号:3106006475 姓名: 杨振风 协作者:_实验_一_题目_ 进程调度_第 5 周星期_ 一 _一、实验目的 用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解二、实验内容和要求设计一个有 N个进程共行的进程调度程序。进程调度算法: 采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法。 每个进程有一个进程控制块( PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。 进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为进程输入的时间。 进程的运行时间以时间片为单位进行计算。 每个进程的状态可以是就绪 W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。 就绪进程获得 CPU后都只能运行一个时间片。用已占用CPU时间加1来表示。 如果运行一个时间片后,进程的已占用 CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。 每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的 PCB,以便进行检查。重复以上过程,直到所要进程都完成为止。三、实验主要仪器设备和材料 台式机,Microsoft Visual C+ 6.0四、实验原理及设计方案1、实验原理; 时间片轮转法的基本思想:所有就绪队列按FCFS排成一个队列。总是把处理机分配给队首的进程,各个进程占用的CPU时间相同。如果运行进程用完它的时间片后还未完成,就把它送回到就绪队列的末尾,把处理机重新分配给队首的进程,直至所有的进程运行完毕为止。2、设计方案 设计一个数据结构包含各个进程的调度情况,然后用分程序实现各个功能。3、相关数据结构的说明struct pcb /* 定义进程控制块PCB */ char name10; 定义进程名char state; 状态int super; 优先数int ntime; 需要时间int rtime; 已运行时间struct pcb* link; 指针域*ready=NULL,*first,*p; typedef struct pcb PCB;4、程序流程图(详细)结束初始化PCB,输入进程信息各进程按FCFS排列就绪队列空开始就绪队列队首进程投入运行空不空已达到时间片到运行进程占用CPU时间+1运行进程已占用CPU时间达到所需运行时间把运行进程插入就绪队列尾进程已完成撤消该进程未达到5、给出程序中源程序名和可执行程序名。 时间片轮转法.cpp 时间片轮转法.exe6、程序清单(源程序中要附有详细的注释)(代码部分:分成两栏(字号小五)#include stdio.h #include #include #define getpch(type) (type*)malloc(sizeof(type) #define NULL 0 int len;struct pcb /* 定义进程控制块PCB */ char name10; char state; int super; int ntime; int rtime; struct pcb* link; *ready=NULL,*first,*p; typedef struct pcb PCB; sort()if(ready=NULL)ready=p; first=ready;ready-link=first;elseready-link=p;ready=p;ready-link=first;input() /* 建立进程控制块函数*/ int i,num; printf(n *实验一 进程调度(时间片轮转法)*n); printf(n 请输入进程数:); scanf(%d,&num); for(i=1;iname); printf(n 输入进程优先数:); scanf(%d,&p-super); printf(n 输入进程运行时间:); scanf(%d,&p-ntime); printf(n); p-rtime=0;p-state=w; p-link=NULL; sort(); /* 调用sort函数*/ int space() int l=1; PCB* pr=first; while(pr!=ready) l+; pr=pr-link; return(l); disp(PCB * pr) /*建立进程显示函数,用于显示当前进程*/ printf(n qname t state t supertndtime t runtime n); printf(|%st,pr-name); printf(|%ct,pr-state); printf(|%dt,pr-super); printf(|%dt,pr-ntime); printf(|%dt,pr-rtime); printf(n); check() /* 建立进程查看函数 */ PCB* pr; printf(n * 当前正在运行的进程是:%s,p-name); /*显示当前运行进程*/ disp(p); pr=first; printf(n *当前就绪队列状态为:n); /*显示就绪队列状态*/ while(pr!=p) disp(pr); pr=pr-link; destroy() /*建立进程撤消函数(进程运行结束,撤消进程)*/ printf(n 进程 %s 已完成.n,p-name); ready-link=first;len-;free(p); running()(p-rtime)+;if(p-rtime=p-ntime) destroy();elseready=p;main() /*主函数*/ int h=0;char ch;input(); len=space();while(len!=0) ch=getchar(); h+; printf(n The execute number:%d n,h); p=first; first=p-link;p-state=R; check(); running(); p-state=w;printf(n 按任一键继续.); /ch=getchar(); printf(nn 进程已经完成.n); ch=getchar(); 五、实验结果及分析1、运行结果(要求截图)(能动态说明执行结果)首先,输入进程名及各个进程的运行时间 2、第一次运行的情况3、4、5、6、7、8、9、10、六、调试总结及心得体会 这个算法主要参考书上给的最高优先数法,每输入一个进程放在队尾,最后构成一个单向的循环链表。在运行时,每个进程的运行时间加一,而剩余需要时间减一,如果满足所需要的运行时间,就把该进程移出这个循环链表。这个试验的难度值不大,主要参考书上给的思想。学号:3106006475 姓名: 杨振风 协作者:_实验_二_题目_ 作业调度_第 7 周星期_ 一 _实验目的:本实验要求学生模拟作业调度的实现,用高级语言编写和调试一个或多个作业调度的模拟程序,了解作业调度在操作系统中的作用,以加深对作业调度算法的理解。实验内容和要求:1、为单道批处理系统设计一个作业调度程序(1)、编写并调试一个单道处理系统的作业调度模拟程序。(2)、作业调度算法:分别采用先来先服务(FCFS),最短作业优先(SJF)、响应比高者优先(HRN)的调度算法。 (3)、由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的 CPU时限等因素。(4)、每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。作业的状态可以是等待W(Wait)、运行R(Run)和
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号