实验一-处理机调度实验报告.docx
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
实验一 处理机调度 一、实验内容 选择一个调度算法,实现处理机调度。 二、实验目的 多道系统中,当就绪进程数大于处理机数时,须按照某种策略决定哪些进程优先占用处理机。本实验模拟实现处理机调度,以加深了解处理机调度的工作。 三、实验题目 1、设计一个按优先权调度算法实现处理机调度的程序; 2、设计按时间片轮转实现处理机调度的程序。 PCB内容要求 : 进程名/PID; 要求运行时间(单位时间); 优先权; 状态: PCB指针; 1、可随机输入若干进程,并按优先权排序; 2、从就绪队首选进程运行:优先权-1 要求运行时间-1 要求运行时间=0时,撤销该进程 3、重新排序,进行下轮调度; 源代码: #include <stdio.h> #include <stdlib.h> 实验一-处理机调度实验报告全文共9页,当前为第1页。#include <string.h> 实验一-处理机调度实验报告全文共9页,当前为第1页。 #include <windows.h> typedef struct pcb { char PID[50]; int needTime;//需要运行时间 int priority;//优先权 char state[20];//进程状态 struct pcb *next; }PCB; typedef struct { PCB* front; PCB* rear; }ProcessQueue; void SelectAlgorithm(); void CreateQProcess(ProcessQueue &Q,char*,int time,int pri,char*); void ProcessSchedule(); void InitQueue(ProcessQueue &Q); void visitQueue(ProcessQueue &Q); bool RunProcess(PCB* rp,ProcessQueue &Q); bool NonPreemptivePriority(ProcessQueue &Q);//非抢占式优先权调度 void delProcess(PCB* delp); bool RunProcessPreem(PCB* rp,ProcessQueue &Q);//抢占式优先执行进程 bool PreemptivePriority(ProcessQueue &Q); void RR(ProcessQueue &Q); int main() { int iSel; int i = 0; SelectAlgorithm(); ProcessQueue readyQ;//就绪进程队列 PCB newpcb; InitQueue(readyQ); printf("请选择调度算法:"); do { scanf("%d",&iSel); } while (!(iSel == 1 "" iSel == 2 "" iSel == 3)); while(i < 3) { 实验一-处理机调度实验报告全文共9页,当前为第2页。 printf("请输入要创建的进程:\n"); 实验一-处理机调度实验报告全文共9页,当前为第2页。 fflush(stdin); gets(newpcb.PID);fflush(stdin); scanf("%d",&newpcb.needTime);fflush(stdin); scanf("%d",&newpcb.priority);fflush(stdin); gets(newpcb.state);fflush(stdin); CreateQProcess(readyQ,newpcb.PID,newpcb.needTime,newpcb.priority,newpcb.state); printf("创建了一个进程\n"); ++i; } visitQueue(readyQ);//显示的是各个进程的优先权 switch(iSel) { case 1: while(NonPreemptivePriority(readyQ));//非抢占优先权调度 break; case 2: PreemptivePriority(readyQ);//抢占式优先权调度 break; case 3: RR(readyQ); break; } return 0; } void SelectAlgorithm() { printf("1.非抢占式优先权调度\n"); printf("2.抢占式优先权调度\n"); printf("3.时间片轮转调度\n"); } void InitQueue(ProcessQueue &Q)//初始化进程队列 { Q.front = Q.rear = (PCB*)mallo
- 粉丝: 167
- 资源: 3万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
- 1
- 2
前往页