赞
踩
操作系统原理高优先权调度算法
《操作系统原理》
课 程 设 计 报 告 书
题 目: 高优先权调度算法
学 号:
学生姓名:
专 业:
指导教师:
5月30日
目 录
1 功能描述1
2 系统设计1
2.1总体设计1
2.2详细设计1
2.3程序运行流程图1
3 系统实现2
3.1程序代码3
4 系统测试与分析7
4.1程序运行开始界面见图2和图37
4.2高优先权程序正常运行8
教师评分表13
1 功能描述
先权是指在创建进程时所赋予的优先权,是可以随进程的推进或随其等待时间的增加而改变的,以便获得更好的调度性能。高优先权优先调度算法可以使紧迫型作业进入系统后能得到优先处理。此算法常被用于批处理系统,作为作业调度算法,也作为多种操作系统中的进程调度算法,还可用于实时系统。该算法用于作业调度时,系统将从后备队列中选择若干个优先权最高的作业装入内存。当用于进程调度时,该算法是把处理机分配给就绪队列中优先权最高的进程。
2 系统设计
2.1总体设计
验内容利用C语言来实现对N个进程采用动态优先权优先算法的进程调度。优先数改变的原则:进程每运行一个时间片,优先数减1。
2.2详细设计
在运行界面里输入进程名称,进程优先级和进程时间;
每运行一个时间单位,作业的优先权级数减一;
在运行出的用户界面中显示初始作业名,作业状态,优先权级数,需要服务的时间,已经运行的时间;
每次调度前后显示作业队列;
2.3程序运行流程图
程序运行流程图见流程图1
3 系统实现
用c++编写的高优先权调度算法算法。
3.1程序代码
程序源代码如下:
#include
#include
struct PCB{
char p_name[20];
int p_priority;
int p_needTime;
int p_runTime;
char p_state;
struct PCB* next;
};
void HighPriority();
void RoundRobin();
void Information();
char Choice();
struct PCB* SortList(PCB* HL);
int main()
{
Information();
char choice = Choice();
switch(choice)
{
case '1':
system("cls");
HighPriority();
break;
default:
break;
}
system("pause");
return 0;
}
void Information()
{
printf(" 按回车键进入演示程序");
getchar();
system("cls");
}
char Choice()
{
printf("\n\n");
printf(" 1.演示最高优先数优先算法。");
printf(" 按1继续:");
char ch = getchar();
return ch;
system("cls");
}
void HighPriority()
{
struct PCB *processes, *pt;
//pt作为临时节点来创建链表,使用for语句,限制进程数为5个
processes = pt = (struct PCB*)malloc(sizeof(struct PCB));
for (int i = 0; i != 5; ++i)
{
struct PCB *p = (struct PCB*)malloc(sizeof(struct PCB));
printf("进程号No.%d:\n", i);
printf("输入进程名:");
scanf("%s", p->p_na
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。