os30操作系统编程进程或作业先来先服务、高优先权、按时间片轮转调度算法剖析.docxVIP

  • 30
  • 0
  • 约9.84千字
  • 约 13页
  • 2021-01-20 发布于山东
  • 举报

os30操作系统编程进程或作业先来先服务、高优先权、按时间片轮转调度算法剖析.docx

进程或作业先来先服务 。。实验要求 .1. 完成实验任务并将有关的实验结果保存在电脑磁盘上。 .2. 将有关的实验结果写成 WORD文档,发邮件到老师的邮箱里。 .3. 要写出实验题目,操作步骤和相应的实验结果。 .4. 老师的邮箱: cscqliao@scut.edu.cn 姓名:  年级专业班级  日期  年 月  日 成绩 编程进程或作业先来先服务、  验证  设计 课程名称  计算机操作系统  实验名称  高优先权、按时间片轮转调度  实验类型  综合  创新 算法 (4  学时 ) 【实验目的、要求】 实验目的:( 1)通过编写程序实现进程或作业先来先服务、高优先权、按时间片轮转调度算法,使学生进一步掌握进程调度的概念和算法,加深对处理机分配的理解。 ( 2)了解 Windows2000/XP 中进程(线程)的调度机制。 ( 3)学习使用 Windows2000/XP 中进程(线程)调度算法,掌握相应的与调度有关的 Win32 API 函数。 实验要求:( 1)经调试后程序能够正常运行。 2)采用多进程或多线程方式运行,体现了进程或作业先来先服务、高优先权、按时间片轮转调度的关系。 3)程序界面美观。 【实验内容】 在 Windows XP 、 Windows 2000 等操作系统下,使用 C 语言,利用相应的 WIN32 API 函数,编写程序实 现进程或作业先来先服务、高优先权、按时间片轮转调度算法。 【实验环境】(含主要设计设备、器材、软件等) Pc 电脑一台 【实验步骤、过程】 (含原理图、流程图、关键代码,或实验过程中的记录、数据等) 定义 : 先来先服务算法:如果早就绪的进程排在就绪队列的前面,迟就绪的进程排在就绪队列的后面, 那么先来先服务( FCFS:first come first service )总是把当前处于就绪队列之首的那个进程 调度到运行状态。 2) 轮转法就是按一定时间片 ( 记为 q) 轮番运行各个进程。如果 q 是一个定值,则轮转法是一种对各 进程机会均等的调度方法。 3) 优先级调度的基本思想是, 把当前处于就绪队列中优先级最高的进程投入运行, 而不管各进程的 下一个 CPU周期的长短和其他因素。 实验步骤: ( 1)需求分析: 了解基本原理, 确定程序的基本功能,查找相关资料, 画出基本的数据流图; 2)概要设计:确定程序的总体结构、模块关系和总体流程; 3)详细设计:确定模块内部的流程和实现算法; 4)上机编码和调试; 5)运行测试; 6)编写实验报告。 流程图: (先来先服务流程图) (高优先权流程图) (按时间片轮转调度) 程序说明及实现 : 先来先服务调度算法: 高响应比优先实现进程调度 .( 用 C 语言实现 ), 优先级调度程序: 该程序由主程序、构造队列子程序、打印子程序、运行子程序构成。 时间片轮转法程序: 在此程序中由于程序比较小,未进行分模块设计。直接采用单一模块。 先来先服务 i ncludestdio.h float t,d; /* 定义两个全局变量 */ struct /* 定义一个结构体数组,包括进程的信息 */ { int id; float ArriveTime; float RequestTime; float StartTime; float EndTime; float RunTime; float DQRunTime; int Status; }arrayTask[4]; /* 定义初始化的结构体数组 */ GetTask()/* 给结构体数组赋值,输入到达,服务时间 */ { int i; float a; for(i=0;i4;i++) {arrayTask[i].id=i+1; printf(input the number); printf(input the the ArriveTime of arrayTask[%d]:,i); /* scanf(%f,a); arrayTask[i].ArriveTime=a; printf(input the RequestTime of arrayTask[%d]:,i); scanf(%f,a); arrayTask[i].RequestTime=a; arrayTask[i].StartTime=0; arrayTask[i].EndTime=0; arrayTask[i].RunTime=0; arrayTask[i].Status=0; /* 开始默认的标志位零 */ } } int fcfs() /* 定义 FCFS中寻找未执行的进程的最先到达时间 { int i,j,w=0; /* 在结构体数组中找到一个未执行的进程 */ for(

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档