当前位置:首页 > 小型仿真操作系统实验报告
综合实验报告
( 2009-- 2010年度第六学期)
名 称:操作系统原理综合实验B 题 目:小型仿真操作系统的设计 院 系: 班 级: 学 号: 学生姓名: 指导教师:
设计周数: 一周
成 绩:
日期:
实验一:单处理器系统的进程调度
1.实验目的
在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。当就绪进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器。本实验模拟在单处理器情况下的处理器调度,帮助学生加深了解处理器调度的工作。 2.实验内容与要求
(1)设计多个进程并发执行的模拟调度程序,每个程序由一个PCB表示。 (2)模拟调度程序可任选两种调度算法之一实现。
(3)程序执行中应能在屏幕上显示出各进程的状态变化,以便于观察调度的整个过程。 3.实验原理
建立进程循环链表,进程信息包括进程名和需要运行的时间,每次运行一次,系统的运行时间加1,当运行到所需时间时将其状态设为1,说明此进程运行完毕,删除此进程,直到所有进程都运行完毕。 4.实验源程序
#include
int Name[5]={'1','2','3','4','5'}; struct PCB {
char name;//PCB名字 int RunTime;//PCB已运行时间 int RequestTime;//PCB要求运行时间 char status;//PCB状态
struct PCB* head;//指向上一个PCB结构体的指针变量 struct PCB* next;//指向下一个PCB结构体的指针变量 };
struct PCB pcb1,pcb2,pcb3,pcb4,pcb5,*p,*q; ////定义PCB各参数的初值,输入各个进程的运行时间 Value() {
pcb1.name=Name[0]; pcb2.name=Name[1]; pcb3.name=Name[2]; pcb4.name=Name[3];
1
pcb5.name=Name[4]; ///定义PCB状态,初态为'R' pcb1.status='R'; pcb2.status='R'; pcb3.status='R'; pcb4.status='R'; pcb5.status='R';
///定义PCB运行时间,初值为0 pcb1.RunTime=0; pcb2.RunTime=0; pcb3.RunTime=0; pcb4.RunTime=0; pcb5.RunTime=0;
///给PCB的要求运行时间赋值 cout< cout<<\请给各个PCB的要求运行时间赋值(int):\ cout<<\第一个PCB \要求运行的时间为:\ cin>>pcb1.RequestTime; cout<<\第二个PCB \要求运行的时间为:\ cin>>pcb2.RequestTime; cout<<\第三个PCB \要求运行的时间为:\ cin>>pcb3.RequestTime; cout<<\第四个PCB \要求运行的时间为:\ cin>>pcb4.RequestTime; cout<<\第五个PCB \要求运行的时间为:\ cin>>pcb5.RequestTime; return 0; } ///////////使PCB连接成循环队列 Connect() { ///////PCB的前驱 pcb1.head=&pcb5; pcb2.head=&pcb1; 2 pcb3.head=&pcb2; pcb4.head=&pcb3; pcb5.head=&pcb4; ////////PCB的后续 pcb1.next=&pcb2; pcb2.next=&pcb3; pcb3.next=&pcb4; pcb4.next=&pcb5; pcb5.next=&pcb1; return 0; } ///////显示输入 display() { cout<<\ cout<<\进程名称 \下一进程名\运行时间\ cout<<\要求时间\状态\ cout<<\ return 0; } /////PCB执行 Run() { Value(); Connect(); // struct PCB pcb1,pcb2,pcb3,pcb4,pcb5,*p,*q; char a; int num,n,PcbNum=5,Number=5,flag=1;//PcbNum表示进程执行过程中进程的个数,n表示已执行完毕的进程个数 q=NULL; //flag=1时程序继续 cout< cout<<\请选择你想要运行的进程:\ cin>>num; cout< 3
共分享92篇相关文档