实验一 进程管理.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验一 进程管理

实验一 进程管理 专业:计算机系班级:xx软件工程 学号:xxx姓名:xxx 实验地点: xxx 实验时间: xxx 指导教师:xxx 【实验目的】 加深对进程概念及进程管理各部分内容的理解。 熟悉进程管理中主要数据结构的设计和进程调度算法、进程控制机构、同步机构、通讯机构的实施。 【实验环境】 具备Windows或MS-DOS操作系统、带有Turbo C 集成环境的PC机。 【实验内容】 一.阅读实验程序 程序代码见【实验例程】。 二.编译实验例程 用Turbo C 编译实验例程。 三.运行程序并对照实验源程序阅读理解实验输出结果的意义。 【实验例程】 #includestdio.h #define TRUE 1 #define FALSE 0 #define MAXPRI 100 #define NIL -1 struct { int id; char status; int nextwr; int priority; } pcb [3]; struct { int value; int firstwr; } sem[2]; char savearea[3][4],addr; int i,s1,s2,seed, exe=NIL; init() { int j; for (j=0;j3;j++) { pcb[j].id=j; pcb[j].status=r; pcb[j].nextwr=NIL; printf(\n process%d priority?,j+1); scanf(%d,i); pcb[j].priority=i; } sem[0].value=1; sem[0].firstwr=NIL; sem[1].value=1; sem[1].firstwr=NIL; for(i=1;i3;i++) for(j=0;j4;j++) savearea[i] [j]=0; } float random() { int m; if (seed0) m=-seed; else m=seed; seed=(25173*seed+13849)%65536; return(m/32767.0); } timeint(ad) char ad; { float x; x=random(); if((x0.33)(exe==0))return(FALSE); if((x0.66)(exe==1))return(FALSE); if((x1.0)(exe==2))return(FALSE); savearea[exe][0]=i; savearea[exe][1]=ad; pcb[exe].status=t; printf(times silce interrupt\n process%d enter into ready.\n,exe+1); exe=NIL; return(TRUE); } scheduler() { int pd; if ((pd=find())==NIL exe==NIL) return(NIL); if (pd!=NIL) { if (exe==NIL) { pcb[pd].status=e; exe=pd; printf(process%d is executing.\n,exe+1); } else if(pcb[pd].prioritypcb [exe].priority) { pcb[exe].status=r; printf(process%d enter into ready\n,exe+1); pcb[pd].status=e; exe=pd; printf(process%d is executing\n,exe+1); } } i=savearea[exe][0]; addr=savearea[exe][1]; return(exe); } find() { int j,pd=NIL,w=MAXPRI; for (j=0;j3;j++) if(pcb[j].status==r) if(pcb[j].priorityw) { w=pcb[j].priority;pd=j; } if (pd==NIL) for(j=0;j3;j++) if (pcb[j].status==t) if (pcb[j].priorityw) { w=pcb[j].priority;pd=j; } return(pd); } p(se,ad)

文档评论(0)

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

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

1亿VIP精品文档

相关文档