操作系统课程设计六种算法.doc

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实用标准文案 精彩文档 《计算机操作系统》 课 程 设 计 报 告 学号:1367003270 班级:软技4班 姓名:张靖伟 目 录 1 实验:进程调度算法——时间片轮转算法 2 实验:银行家算法 3 实验:分区分配算法——BF和FF 4 实验:页面置换算法——FIFO和LRU 5 实验:磁盘调度算法——SCAN和SSTF 1实验:进程调度算法——时间片轮转算法 1.实验设计说明 用时间片轮转算法模拟单处理机调度。 建立一个进程控制块PCB来代表。PCB包括:进程名、到达时间、运行时间和进程后的状态。 进程状态分为就绪(R)和删除(C)。 为每个进程任意确定一个要求运行时间和到达时间。 按照进程到达的先后顺序排成一个队列。再设一个指针指向队首和队尾。 执行处理机调度时,开始选择对首的第一个进程运行。 执行: a)输出当前运行进程的名字; b)运行时间减去时间片的大小。 进程执行一次后,若该进程的剩余运行时间为零,则删除队首,并将该进程的状态置为C;若不为空,则将向后找位置插入。继续在运行队首的进程。 若进程队列不空,则重复上述的(5)和(6)步骤直到所有进程都运行完为止。 2.实验代码 /*****************时间片轮转调度算法*******************/ #include stdio.h #include stdlib.h #include string.h #define N 10 int time=0; bool spe=false; typedef struct pcb /*进程控制块定义*/ { char pname[N]; /*进程名*/ int runtime; /*服务时间*/ int arrivetime; /*到达时间*/ char state; /*进程状态*/ struct pcb*next;/*连接指针*/ }PCB; typedef struct back_team/*后备队列定义*/ { PCB*first,*tail; }BACK_TEAM; typedef struct pre_team/*就绪队列定义*/ { PCB*first,*tail; }PRE_TEAM; PCB*creat()/*创建PCB*/ { char s[N]; printf(请输入进程名:\n); scanf(%s,s); printf(请输入进程服务时间(/秒):\n); int t; scanf(%d,t); PCB*p=(PCB*)malloc(sizeof(PCB)); strcpy(p-pname,s); p-runtime=t; printf(请输入进程到达时间(/秒):\n); scanf(%d,t); p-arrivetime=t; p-state=R; p-next=NULL; getchar(); return p; } PCB*copy(PCB*p)/*复制一个进程*/ { if(!p) return NULL; PCB*s=(PCB*)malloc(sizeof(PCB)); strcpy(s-pname,p-pname); s-next=NULL; s-arrivetime=p-arrivetime; s-runtime=p-runtime; s-state=p-state; return s; } PCB*getnext(PCB*p,BACK_TEAM*head)/*得到队列中下一个进程*/ { PCB*s=head-first; if(!p) return NULL; while(strcmp(s-pname,p-pname)) s=s-next; return s-next; } void del(BACK_TEAM*head,PRE_TEAM*S)/*释放申请的空间*/ { PCB*p=head-first-next; while(p) { free(head-first); head-first=p; p=p-next; } head-first=head-tail=NULL; free(head); free(S); } BACK_TEAM*creatbt(BACK_TEAM*head)/*创建后备队列*/ { PCB*p=creat(); if(!head-first) head-first=p; else head-tail-next=p; head-tail=p; return head; } bool recognize(PRE_TEAM*s1)/*判断运行是否结束*/ { if(!s1

文档评论(0)

dmz158 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档