2010操作系统 实验2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1要求:
1)本实验目的是通过对进程调度算法的实现和实验模拟,加深对操作系统进程调度操作功能和进程调度算法的完整理解,以及进程调度程序的开发与应用能力;
2)理论上必须深刻理解优先权调度算法和时间片轮转调度算法的基本思想和原理;
3)独立使用C或VC++编程语言编写优先权调度或时间片轮转算算法调度模拟程序;
4)按照实验题目要求独立正确地完成实验内容(编写、调试算法程序,提交程序清单及及相关实验数据与运行结果)
5)于2012年10月30日以前提交本次实验报告,由班长统一打包提交)。
2 实验内容或题目
1)设计有5个进程并发执行的模拟调度程序,每个程序由一个PCB表示。
2)模拟调度程序可任选两种调度算法之一实现(有能力的同学可同时实现两个调度算法)。
3)程序执行中应能在屏幕上显示出各进程的状态变化,以便于观察调度的整个过程。
实验二进程调度实验
一、目的与任务
目的:通过对进程调度程序的编写,加深对进程的概念及进程调度算法的理解.
任务:编写基于优先权或时间片轮转调度的进程调度模拟程序
二、实验原理
进程调度算法:采用最高优先数的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法。
每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。
进程的优先数及需要的运行时间可以事先人为的指定(也可以由随机数产生)。进程的到达时间为进程的输入的时间。
进程的运行时间以时间片为单位进行计算。
每个进程的状态可Array以是就绪W(Wait)、
运行R(Run)、或完成
F(Finish)三种状态之
一。
就绪进程获得CPU
后都只能运行一个时间
片。用已占用CPU时间
加1表示。
如果运行一个时间
片后,进程的已占用
CPU时间已达到所需
要的运行时间,则撤销
该进程,如果运行一个
时间片后,进程的已占
用CPU时间还未达到
所需要的运行时间,也
就是进程还需要继续运
行,此时应该将进程的
优先数减1(即降低一
级),然后把它插入就绪
队列等待CPU。
每进行一次调度程
序都打印一次运行进
程、就绪队列、以及各
个进程的PCB,以便进
行检查。
重复以上过程,直
到所要的进程都完成为
止。
三、实验过程
【提示】
(1)实验准备
要实验的Windows下的多线程实验,应做如下准备:
a) 在新建中选”Win32 Console Application”->An empty project
b) 选”工程”->”设置”选项,在”设置”中选择“C/C++”标签,在”Project Option”中,将”MLd”参数改成“MTd”(如图1-1)。
图1-1 编程环境设置
以上两步对实验成功至关重要,否则,即是代码无误,在连接时同样会出现问题。
(2)Windows下进程的创建
在创建一个线程时,Windows会做大量的工作——创建一个新的地址空间,为进程分配资源以及创建一个基线程。
CreateProcess函数的原型如下:
虽然有很多参数,不过在现阶段的实验级别,大多数参数只要用默认值即可。