算法与数据结构课程设计进程调度算法

发布 2022-10-01 22:47:28 阅读 1049

第二题---进程调度。

一、实验目的。

多道程序设计中,经常是若干个进程同时处于就绪状态,必须依照某种策略来决定那个进程优先占有处理机。因而引起进程调度。本实验模拟在单处理机情况下的处理机调度问题,加深对进程调度的理解。

二、实验要求

1)要求学生设计并实现模拟进程调度的算法:时间片轮转及先来先服务。

2)理解进程控制块的结构。

3)理解进程运行的并发性。

4)掌握进程调度算法。

三、设计要求。

在多道程序运行环境下,进程数目一般多于处理机数目,使得进程要通过竞争来使用处理机。这就要求系统能按某种算法,动态地把处理机分配给就绪队列中的一个进程,使之运行,分配处理机的任务是由进程调度程序完成的。一个进程被创建后,系统为了便于对进程进行管理,将系统中的所有进程按其状态,将其组织成不同的进程队列。

于是系统中有运行进程队列、就绪队列和各种事件的进程等待队列。进程调度的功能就是从就绪队列中挑选一个进程到处理机上运行。

四、流程图。

五、实验过程。

进程名进程状态(1就绪 2等待 3运行) 所需时间优先数(0级最高)进程0 110 2

进程1 210 4

进程2 120 0

进程3 330 5

进程4 240 1

进程5 320 7

2.源**。

#include<>

#include<>

const int maxpcb=100; /定义最大进程数。

const int round_time=10;//定义轮转时间片。

/定义进程结构体

typedef struct pcb

char name[20];

int status;

int time;

int privilege;

int finished;

int wait_time;

pcb;pcb pcbs[maxpcb];

int quantity;

//读数据函数

int readdata()

file *fp;

char fname[20];

int i;

cout<<"input the file's name:";

cin>>fname;

if((fp=fopen(fname,"r"))null)else

return(0);

/重置数据,以供另一个算法使用

void init()

int i;

for(i=0;i

/先进先出算法

void fifo()

int i,j;

int total;

//输出fifo算法执行流

cout<<"fifo算法执行流:"

for(i=0;i

cout<<"总等待时间:"<

/时间片轮转法。

void roundtime()

int i,j;

int m=0;

//从第一个进程开始轮转。

cout<<

/主函数 void main()

int flag;

flag=readdata();

if(flag==1)

六、实验结果。

fifo调度输出结果。

时间片轮转调度输出结果。

ps:只显示运行态和就绪态,不显示的进程均为等待态。

round1

round2

round3

round4

完成的顺序是0 1 2 5 3 4

算法与数据结构课程设计

编号 120 说明书。进销存货物管理系统。学院 计算机科学与工程学院 专业 计算机科学与技术 学生姓名。学号。指导教师。2016年 6 月 26 日。摘要。本课程设计报告系统地阐述了我使用c 编写的进销存货物管理系统。首先,我对系统进行一个简要的概述。然后,我就系统的需求进行了详细的分析,这是设计工...

《算法与数据结构》课程设计

一 约瑟夫问题。1.算法及数据结构。由于约瑟夫问题是将x个人围坐一圈,所以采用单循环链表实现,又由于报数时间可能循环到开始,所以采用不带头结点的循环链表结构。1 在不带头结点的循环链表中查找第y个结点,用p作为第y个节点的指针。2 每一次都是y的倍数的结点出栈,直到循环到最后一个结点为止。2.源程序...

算法与数据结构课程设计报告

福建工程学院软件学院。题目。专业。姓名。学号。同组其他学生 学号。2015年月日。目录。一 需求分析 3 二 总体设计 3 三 详细设计 3 四 调试与测试 3 五 测试结果 3 六 用户手册 3 七 附录 3 描述问题。简述课题要解决的问题是什么,有什么要求和限制条件。二 总体设计。必须包含程序设...