操作系统课程设计与实现
实验一、进程管理与进程同步
实验目的:
了解进程管理的实现方法,理解和掌握处理进程同步问题的方法并完成程序设计。
实验内容:
实现银行家算法、进程调度的过程模拟。
实验步骤:
理解银行家算法的核心机制;
设计相应数据结构;
编程实现;
测试。
理解进程的三状态调度过程;
设计调度算法;
编程实现;
测试。
实验结果:
所实现的系统提供一个用户界面,可以在上边发出资源申请命令,系统应能给出是否可以接受申请,并且有结论输出;
所实现的系统根据一个进程调度命令文件,模拟进程的各种调度过程,用适合的表达方式表示出来。
//进程调度的过程模拟
// : Defines the entry point for the console application.
//
#include ""
#include ""
#include <>
#include ""
#include ""
int r[3]={0};
void readFile(prdy &ready)
{
int pid,runtime,iotime,ioclock,key=0;
prdy p[4];
FILE *fp=NULL;
p[0] = ready;
p[1] = (prdy)malloc(sizeof(rdy));
p[2] = (prdy)malloc(sizeof(rdy));
p[3] = (prdy)malloc(sizeof(rdy));
p[1]->next = NULL;
p[2]->next = NULL;
p[3]->next = NULL;
//p->next = NULL;
if((fp = fopen("","rb"))==NULL){
printf("打开文件失败!");
}
do{
key ++;
fscanf(fp,"%d",&pid);
p[key]->que = pid;
fgetc(fp);
fscanf(fp,"%d",&runtime);
p[key]->rtm = runtime;
fgetc(fp);
fscanf(fp,"%d",&ioclock);
p[key]->iotm = ioclock;
fgetc(fp);
fscanf(fp,"%d",&iotime);
p[key]->iolong = iotime;
fgetc(fp);
p[0]->next = p[key];
p[0] = p[0]->next;
if(key == 3) break;
//用三个指针变量来存储中间的输入。因为同一个指针变量指向相同的空间,会使结果
//中出现的值都为一样的;
}while(true);
fclose(fp);
}
void delFromReady(prdy &ready){
prdy p,q;
p = ready;
q = p->next;
p->next = q->next;
}
void insertToSus()
{
printf("阻塞过程中... ...\n");
}
void delFromSus()
{
printf("阻塞结束!\n");
}
void insertToReady(prdy &ready,prdy runQue)
{
prdy p;
p = ready;
while(p->next){
p = p->next;
}
runQue->next = NULL;
p->next = runQue;
}
void roundrun(prdy &ready)
{
prdy p, runQue;
int time;
p = ready;
do{
getchar();//接受任意键
//runQue = insertToRun(p->next);//就绪队列拿出一个进程放入运行队列
runQue = p->next;
delFromReady(ready);
time = r[runQue->que] ++;
if(time == runQue->iotm){
for(int i=0;i < runQue->iolong;i++){
insertToSus();
}
delFromSu
操作系统课程设计与实现论文 来自淘豆网m.daumloan.com转载请标明出处.