好文档 - 专业文书写作范文服务资料分享网站

操作系统 - 处理机调度

天下 分享 时间: 加入收藏 我要投稿 点赞

泉州师范学院 软件学院

《计算机操作系统》

课程设计

题 目: 处理机调度 班 级: 10软件工程(2)班 学 号: 姓 名: 指导教师:

2012 年 12 月 25 日

0

目录

第一章 概述 ............................................................................... 2 1.1 需求分析 ........................................................................ 2 1.2背景设计 ......................................................................... 2 第二章 概要设计 ....................................................................... 1 第三章 详细设计 ....................................................................... 2 3.1高响应比调度算法 ......................................................... 2 3.2时间片轮转法 ................................................................. 3 3.3短进程优先法 .................................................................. 4 第四章 调试分析与测试结果 ................................................... 5 第五章 总结 ............................................................................... 7 第六章 参考文献 ....................................................................... 8

1

第一章 概述

1.1 需求分析

进程是操作系统最重要的概念之一,进程调度是操作系统内核的重要功能,本实验要求用C语言编写一个进程调度模拟程序,使用短作业优先调度算法,高响应比调度算法,时间片轮转调度算法实现进程调度。可以手动阻塞与唤醒。并用MFC实现图形界面。本实验可加深对进程调度算法的理解。

1.2背景设计

在OS中,调度的实质是一种资源分配,调度算法即指:根据系统的资源分配策略所规定的资源分配算法。对于不同的系统和系统目标,通常采用不同的调度算法,如在批处理系统中,为照顾为数众多的短作业,采用短作业有限调度算法;在分时系统中,为保证系统具有合理的响应时间,采用轮转法进行调度。采用算法时,则要考虑多方面因素,以便达到最佳效果。

第二章 概要设计

设计一个有多个进程共行的进程调度程序。

进程调度算法:短作业优先调度算法,高响应比调度算法,时间片轮转调度算法 每个进程有一个进程控制块( PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、服务时间、进程状态等等。 struct progress

{

CString Name; //进程名称 CString Start; int RunningT;

//创建时间 //消逝时间

int ServiceT; //服务时间 int RemainT;//剩余时间 int id;//进程标识符 CProgressCtrl* pro;

//指向进度条的指针

int Rp;//进程成为就绪进程的时间

2

};

float prio;//进程优先权

进程的优先权为:响应时间/要求服务时间。 进程的运行时间以时间片为单位进行计算。 每个进程的状态可以是就绪、执行、阻塞、完成。

就绪进程获得 CPU后都只能运行一个时间片。用已占用CPU时间加1来表示。 当阻塞进程时,将当前运行的进程移动到阻塞队列,并从就绪队列将下个进程移动到进程执行区(本程序中就绪队列中第一个即为正在执行进程,后文不再赘述)。 当添加或唤醒进程时,将添加标记m_bchange置为真,并将进程添加进就绪队列。 在运行一个时间片中,检查添加标记m_bchange是否为真,若为真,则判断单选框选中的算法,并按各自算法进行模拟调度,详见详细设计。

当执行区进程完成时,将之移动到已完成的队列,并判断就绪队列中是否有进程:若有,则将下一个进程添加进就绪队列;若无,则弹出提示窗口。 重复以上流程,直到用户退出。

第三章 详细设计

3.1高响应比调度算法

该算法在添加标记m_bchange为真且单选框选中“高响应比优先”时调用,分别通过每个进程前的队列中进程RemainT之和除以该进程的ServiceT,求出优先级prio,并根据prio重新为就绪队列排序。最后将m_bchange置为假。 if ( m_bchange ) { if(iRadioButton==IDC_RADIO1) { //计算优先级 for (int i=1;i

3

for ( i=0;i

for (int j=0;j

if (Pro[j].prio

Tem=Pro[j+1]; Pro[j+1]=Pro[j]; Pro[j]=Tem; } } }

m_bchange=false;

}//end 排序

3.2时间片轮转法

该算法在添加标记m_bchange为真且单选框选中“轮转调度”时调用,直接将就绪队列相邻2个进程两两互换,最终达到将正在执行进程放置于就绪队列后,并将下一个将要执行的进程开始执行,输出结果,并将m_bchange置为真,以便继续轮转。

if(iRadioButton==IDC_RADIO2) { progress Tem; for ( int i=0;iSetRange(0,Pro[0].ServiceT); Pro[0].RemainT--; Pro[0].RunningT++; m_Zhixing.Format(\标识符:%d 进程名称:%s 创建时间:%s 需要时间:%d秒 剩余时间:%d秒 已运行时间:%d秒 优先权:%f\\r\\n\ Pro[0].id, Pro[0].Name, Pro[0].Start, Pro[0].ServiceT, Pro[0].RemainT, Pro[0].RunningT,

4

操作系统 - 处理机调度

泉州师范学院软件学院《计算机操作系统》课程设计题目:处理机调度班级:10软件工程(2)班学号:姓名:指导教师:<
推荐度:
点击下载文档文档为doc格式
055yc91ubr3qhtz4wkan
领取福利

微信扫码领取福利

微信扫码分享