第二题---进程调度。
一、实验目的。
多道程序设计中,经常是若干个进程同时处于就绪状态,必须依照某种策略来决定那个进程优先占有处理机。因而引起进程调度。本实验模拟在单处理机情况下的处理机调度问题,加深对进程调度的理解。
二、实验要求
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 描述问题。简述课题要解决的问题是什么,有什么要求和限制条件。二 总体设计。必须包含程序设...算法与数据结构课程设计
《算法与数据结构》课程设计
算法与数据结构课程设计报告