操作系统课设-进程调度模拟设计(先来先服务、优先级法).docVIP

  • 6
  • 0
  • 约9.68千字
  • 约 21页
  • 2019-03-17 发布于湖北
  • 举报

操作系统课设-进程调度模拟设计(先来先服务、优先级法).doc

武汉理工大学《操作系统》课程设计说明书 PAGE1 / NUMPAGES19 进程调度模拟设计 ——先来先服务、优先级法 1.需求分析 1.1设计目的 1.阅读操作系统的处理机管理章节内容,对进程调度的功能以及进程调度算法有深入的理解。 2.掌握一种计算机高级语言的使用。 要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 1.2设计要求 1.能够选择不同的调度算法(要求中给出的调度算法); 2.能够输入进程的基本信息,如进程名、优先级、到达时间和运行时间等; 3.根据选择的调度算法显示进程调度队列; 4.根据选择的调度算法计算平均周转时间和平均带权周转时间。 2. 功能设计 2.1数据结构 1.进程的结构定义: struct Node{ int num; string name; double run_time; double arrive_time; double start_time; double end_time; int priority; double turn; double turn_weight; Node *next; }; 其中,num表示进程序号,name表示进程名称,run_time;表示进程运行时间,arrive_time表示进程到达时间,start_time表示进程开始执行的时间,end_time表示进程执行结束的时间,priority表示进程的优先级别(用1、2、3……表示,且越大优先级越高),turn表示该进程的周转时间,即进程结束时间减去进程开始到达时间,turn_weight表示带权周转时间,即进程的周转时间除以进程的运行时间。 2.使用链表储存进程(逆序存储) 开 始 开 始 功能号:0:退出 功能号:0:退出 1:输入进程信息 2:FIFO服务算法 3:优先级算法 选择 3输入进程信息 输入进程信息,不限制进程个数 输入进程信息,不限制进程个数 num= num= -1 ? N N Y Y 结束输入 结束输入进程信息 Node *PCB_create(){ Node *head; head=new Node; head-next=NULL; int n; string na; double r; double a; int p; coutendl 进程号:; cinn; cout 进程名:; cinna; cout进程运行时间:; cinr; cout进程到达时间:; cina; cout 进程优先级:; cinp; coutendl; Node *tp; tp=new Node; tp-num=n; tp-name=na; tp-run_time=r; tp-arrive_time=a; tp-priority=p; tp-next=head-next; head-next=tp; while(true){ cout 进程号:; cinn; if(n==-1) break; cout 进程名:; cinna; cout进程运行时间:; cinr; cout进程到达时间:; cina; cout 进程优先级:; cinp; coutendl; Node *tp; tp=new Node; tp-num=n; tp-name=na; tp-run_time=r; tp-arrive_time=a; tp-priority=p; tp-next=head-next; head-next=tp; } return head; } 2.2先来先服务算法设计 2.2.1 FIFO进程算法 Node *FIFO(Node *head){ Node *tp=head-next; Node *FIFO_link=new Node; Node *temp=new Node; temp-next=FIFO_link; FIFO_link-num=tp-num; FIFO_link-name=tp-name; FIFO_link-run_time=tp-run_time; FIFO_link-arrive_time=tp-arrive_time; FIFO_link-end_time=tp-end_time; FIFO_link-priority=tp-priority;

文档评论(0)

1亿VIP精品文档

相关文档