广工_操作系统_实验报告

上传人:第*** 文档编号:34020904 上传时间:2018-02-20 格式:DOC 页数:48 大小:830KB
返回 下载 相关 举报
广工_操作系统_实验报告_第1页
第1页 / 共48页
广工_操作系统_实验报告_第2页
第2页 / 共48页
广工_操作系统_实验报告_第3页
第3页 / 共48页
广工_操作系统_实验报告_第4页
第4页 / 共48页
广工_操作系统_实验报告_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《广工_操作系统_实验报告》由会员分享,可在线阅读,更多相关《广工_操作系统_实验报告(48页珍藏版)》请在金锄头文库上搜索。

1、操作系统实验报告学 院_计算机学院_专 业_软件工程_班 级_ _学 号_ _姓 名_ _指导教师 (2010 年 10 月)学号: 姓名: 协作者:_实验_一_题目_ 进程调度_第 周星期_ _一、实验目的用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解。二、实验内容和要求编写并调试一个模拟的进程调度程序,采用“轮转法”调度算法对五个进程进行调度。每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行的时间、已用 CPU 时间、进程状态等。进程的优先数以及需要的运行时间事先由人为指定(也可以随机数产生) 。如果运行一

2、个时间片后进程的已占用 CPU 时间已达到所需要的运行时间,则撤销该进程,如果还未达到,则把它送回队尾。三、实验主要仪器设备和材料实验环境硬件环境:IBM-PC 或兼容机软件环境:C 语言编程环境四、实验原理及设计方案1、实验原理将程序顺序的输入进程队列后,开始执行程序,当运行了一个时间片后,如果进程所占的 CPU 时间达到所需的运行时间时,该进程完成,并撤销该进程,否则则把进程送回队尾。2、设计方案用一个进程控制块(PCB)表示进程。输入进程名称,优先级,运行时间后,通过模拟系统对进程采用“轮转法”调度,得到各个时间片进程的运行情况。3、相关数据结构的说明struct pcb / 定义进程控

3、制块 PCBchar name10; / 进程名称char state; / 进程当前状态int super; / 进程优先级int ntime; / 进程运行所需时间int rtime; / 进程已运行时间struct pcb* link; / 连接到队列中下一个进程的指针4、程序流程图(详细)5、给出程序中源程序名和可执行程序名。源程序名:pcb.cpp可执行程序名:pcb.exe输入数据:in.txt输出数据:out.txt6、程序清单(源程序中要附有详细的注释)#include #define getpch(type) (type*)malloc(sizeof(type)struct

4、pcb/ 定义进程控制块 PCBchar name10; / 进程名称char state; / 进程当前状态int super; / 进程优先级int ntime; / 进程运行所需时间int rtime; / 进程已运行时间struct pcb* link;*ready,*p,*rear;typedef struct pcb PCB;void push() / 建立将进程按 FCFS 排入队列的函数rear-link = p;rear = p;p-link = NULL;p-state = w; / 插入队尾后把状态改成w void input() / 建立进程控制块函数int i,num

5、;printf( 请输入进程数量 );scanf(%d,p=getpch(PCB); / 给 p 分配空间 for( i=0; iname);printf( 输入进程优先等级:);scanf(%d,printf( 输入进程所需运行时间:);scanf(%d,p-rtime = 0; / 为进程的已运行时间初始化为 0 p-state = w; / 为进程的状态初始化为 w p-link = NULL; push();void disp(PCB* pr) / 建立进程显示函数printf(n qnametstatetsupertndtimetruntime n);printf(| %st,pr-

6、name);printf(|%ct,pr-state);printf(|%dt,pr-super);printf(|%dt,pr-ntime);printf(|%dt,pr-rtime);printf(n);void check() / 建立进程查看函数system(cls);PCB *pr;pr=ready-link;while(pr!=NULL) / 队列从头到尾显示进程 disp(pr);pr = pr-link; void destroy() / 建立进程撤消函数disp(p); printf(n 进程 %s 已完成。n,p-name);free(p); / 释放 p void run

7、ning() / 建立进程就绪函数 p-rtime+; / 已运行时间增加 if(p-rtime = p-ntime) / 当已运行时间等于所需运行时间时 p-state = f; / 状态更新为f ready-link = p-link; destroy(); / 调用 destory()函数,释放 p p = ready-link;system(pause); / 暂停,可了解当前状态 else / 如果进程还没达到所需运行时间,则把进程送入队尾 ready-link = p-link;push();p = ready-link; int main()/ 主函数int t=0; / 定义

8、t 表示已用的时间片 rear = getpch(PCB); / 为 rear 分配内存 ready = rear; / 把 ready 指向 rear input(); / 输入进程 p = ready-link;check();while(ready-link) / 当进程队列中还有进程时运行 t+;p-state = r; / 将进程状态设置为 ready check(); printf(第%d 个时间片:,t);printf(正在运行n);system(pause); / 显示正在运行的进程队列 running();check(); printf(第%d 个时间片:,t);printf

9、(运行完成n);system(pause); / 显示运行完成后的进程队列 printf(n 全部进程已运行完成!n);system(pause);return 0;五、实验结果及分析1、运行结果(要求截图) (能动态说明执行结果) (要求截图尺寸大小适中)(1)输入数据(2)开始运行,进程队列如图(3)经过 3 个时间片,进程【333】完成(4)经过 9 个时间片,进程【555】完成(5)经过 10 个时间片,进程【111】完成(6)经过 12 个时间片,进程【444】完成(7)经过 13 个时间片,进程【222】完成(8)全部进程运行完成2、实验结果的分析及说明程序输出与编写程序的目的一致

10、,直观的反应了轮转法进程调度的运行规则,显示了完成各个进程运行所需要的时间,以及各个进程完成的顺序。六、调试总结及心得体会(调试过程中小结、所遇问题及解决方法、心得体会)整个调试过程中并未遇到太大的问题,程序编写过程也很顺利,运行程序模拟进程调度之后,更直观的了解了轮转法进程调度的过程。七、思考题1、 分析不同调度算法的调度策略,比较不同调度算法的优缺点,总结它们的适用范围。答:动态有限权算法:动态优先权是指在创建进程时所创建的优先权,会随进程的推进或者等待时间的增加而改变,以便获得更好的调度性能。处理机为每个进程分配一定的时间片,在就绪队列中,优先权高的进程将优先获得处理机,进程在进去运行完

11、响应的时间片后,如没完成,优先权减 1,从新回到就绪队列等待分配处理机。时间片的轮转法:系统将所有进程排成一个队列,按照先来先服务的原则,对队列首的进程进行处理,每个进程在用完自己的时间片后,从新回到队尾进行排队。每运行一次,进程的需要时间减 1,直到就绪队列为空!学号: 姓名: 协作者:_实验_二_题目_ 作业调度_第 周星期_ _一、实验目的本实验要求学生模拟作业调度的实现,用高级语言编写和调试一个或多个作业调度的模拟程序,了解作业调度在操作系统中的作用,以加深对作业调度算法的理解。二、实验内容和要求作业调度算法:采用基于先来先服务的调度算法。可以参考课本中的方法进行设计。 对于多道程序系

12、统,要假定系统中具有的各种资源及数量、调度作业时必须考虑到每个作业的资源要求。三、实验主要仪器设备和材料硬件环境:IBM-PC 或兼容机软件环境:C 语言编程环境四、实验原理及设计方案1、实验原理采用多道程序设计方法的操作系统,在系统中要经常保留多个运行的作业,以提高系统效率。作业调度从系统已接纳的暂存在输入井中的一批作业中挑选出若干个可运行的作业,并为这些被选中的作业分配所需的系统资源。对被选中运行的作业必须按照它们各自的作业说明书规定的步骤进行控制。2、设计方案(1)作业调度程序负责从输入井选择若干个作业进入主存,为它们分配必要的资源,当它们能够被进程调度选中时,就可占用处理器运行。作业调

13、度选择一个作业的必要条件是系统中现有的尚未分配的资源可满足该作业的资源要求。但有时系统中现有的尚未分配的资源既可满足某个作业的要求也可满足其它一些作业的要求,那么,作业调度必须按一定的算法在这些作业中作出选择。先来先服务算法是按照作业进入输入井的先后次序来挑选作业,先进入输入井的作业优先被挑选,当系统中现有的尚未分配的资源不能满足先进入输入井的作业时,那么顺序挑选后面的作业。(2) 假定某系统可供用户使用的主存空间共 100k,并有 5 台磁带机。3、相关数据结构的说明struct time / 定义一个时间结构体int h;int m; t;struct jcb / 定义一个作业结构已cha

14、r name10; / 作业名称struct time submittime; / 提交时间struct time starttime; / 开始时间struct time needtime; / 需要运行的时间struct time finishtime; / 完成时间char state; / 状态 struct jcb* link; / 连接到下一个作业的指针;4、程序流程图(详细)5、给出程序中源程序名和可执行程序名。源程序名:jcb.cpp可执行程序名:jcb.exe输入数据:in.txt输出数据:out.txt6、程序清单(源程序中要附有详细的注释)#include#include#define getpch(type) (type*)malloc(sizeof(type)struct time / 定义一个时间结构体int h;int m; t;struct jcb / 定义一个作业结构已char name10; / 作业名称struct time submittime; / 提

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号