进程管理实验报告.doc
《进程管理实验报告.doc》由会员分享,可在线阅读,更多相关《进程管理实验报告.doc(11页珍藏版)》请在咨信网上搜索。
姓名 任倩倩 倪晨 学号 2011210590 2011210542 实验成绩 华中师范大学计算机科学系 实 验 报 告 书 实验题目: 进程管理实验 课程名称: 操作系统 主讲教师: 叶俊民 教授 辅导教师: 叶俊民 教授 班 级: 1班 实验时间: 2013年11月10日 一、 实验目的: 通过实验理解进程的概念,进程的组成(PCB结构),进程的并发执行和操作系统进行进程管理的相关原语(主要是进程的创建、执行、撤消)。 二、实验内容: 用C语言编程模拟进程管理,至少要有:创建新的进程;删除进程;挂起某个进程的功能。 三、实验环境: Windows操作系统、VC++6.0、C语言 四、实验详细实现过程与算法流程 1、初始化的进程块状态如图所示: B表示正在运行,R表示就绪,W表示等待 Name Status priority Next P0 ‘W’ -1 6 ABC ‘R’ -1 -1 -1 -1 -1 -1 P6 ‘W’ 0 8 W1 ‘B’ -1 13 A8 ‘W’ 6 14 C9 ‘B’ 7 -1 -1 -1 -1 B13 ‘B’ 9 9 B14 ‘W’ 8 -1 -1 2、源程序: #include<stdio.h> #include<string.h> //进程控制块的数据结构 struct PCBSTRUCT{ char Name[10]; char status; //进程控制块所处的状态,b表示运行,r表示就绪,w表示等待 int next; int prior; }pcb[255]; int srun = 7;//运行队列头指针 int erun;//运行队列尾指针 int sready = 1;//就绪队列头指针 int eready;//就绪队列尾指针 int swait = 0;//等待队列头指针 int ewait;//等待队列尾指针 //初始化静态链表,运行队列7,9,13;等待队列0,6,8,14;就绪队列1; void init(){ strcpy(pcb[0].Name,"p0"); pcb[0].status='w'; pcb[0].prior=-1; pcb[0].next=6; strcpy(pcb[1].Name,"ABC"); pcb[1].status='r'; pcb[1].prior=-1; pcb[1].next=-1; eready=1; strcpy(pcb[6].Name,"p6"); pcb[6].status='w'; pcb[6].prior=0; pcb[6].next=8; strcpy(pcb[7].Name,"w1"); pcb[7].status='b'; pcb[7].prior=-1; pcb[7].next=13; strcpy(pcb[8].Name,"A8"); pcb[8].status='w'; pcb[8].prior=6; pcb[8].next=14; strcpy(pcb[9].Name,"C9"); pcb[9].status='b'; pcb[9].prior=7; pcb[9].next=-1; erun = 9; strcpy(pcb[13].Name,"B13"); pcb[13].status='b'; pcb[13].prior=9; pcb[13].next=9; strcpy(pcb[14].Name,"B14"); pcb[14].status='w'; pcb[14].prior=8; pcb[14].next=-1; ewait=14; } //插入就绪队列 void insertR(char* name){ for(int j = 0; j < 255; j++){ if(strcmp(pcb[j].Name,"-1") == 0){ strcpy(pcb[j].Name,name); pcb[j].next = -1; pcb[j].prior = eready; pcb[eready].next = j; eready = j; return; } } } //插入等待队列 void insertW(char* name){ for(int j = 0; j < 255; j++){ if(strcmp(pcb[j].Name,"-1") == 0){ strcpy(pcb[j].Name,name); pcb[j].next = -1; pcb[j].prior = ewait; pcb[ewait].next = j; ewait = j; return; } } } //创建一个进程并插入就绪队列 void creat(char* name){ for(int i = 0; i < 255; i++){ if(strcmp(pcb[i].Name,name) == 0){ printf("要创建的进程已存在!"); return; } } insertR(name); } //输出目前正在运行或等待或就绪的队列 void Print(char ch){ int p ;//当前进程控制块的序号 //输出等待队列 if(ch == 'w'){ p = swait; while(pcb[p].next != -1){ printf(pcb[p].Name ); printf("|"); p = pcb[p].next; } printf("%s\n",pcb[ewait].Name); } //输出就绪队列 else if(ch == 'r'){ p = sready; while(pcb[p].next != -1){ printf( pcb[p].Name ); printf("|"); p = pcb[p].next; } printf("%s\n",pcb[eready].Name); } //输出运行队列 else{ p = srun; while(pcb[p].next != -1){ printf( pcb[p].Name ); printf("|"); p = pcb[p].next; } printf("%s\n",pcb[erun].Name); } } void Givestatus(int s,int i){ strcpy(pcb[i].Name,"-1"); //pcb[s].prior = -1; pcb[i].next = -1; pcb[i].prior = -1; pcb[i].status = 'N'; } //撤销一个进程 void Delete(char* name){ if(strcmp("-1",name) != 0) for(int i = 0; i < 255; i++){ if(strcmp(pcb[i].Name,name) == 0){ if(i == srun ){ srun = pcb[i].next; Givestatus(srun,i); return ; } if(i == erun ){ erun = pcb[i].prior; pcb[erun].next = -1; Givestatus(srun,i); return ; } if(i == sready ){ sready = pcb[i].next; pcb[sready].prior = -1; Givestatus(erun,i); return; } if(i == eready ){ eready = pcb[i].prior; pcb[eready].next = -1; Givestatus(eready,i); return; } if(i == swait ){ swait = pcb[i].next; pcb[swait].prior = -1; Givestatus(swait,i); return; } if(i == ewait ){ ewait = pcb[i].prior; pcb[ewait].next = -1; Givestatus(ewait,i); return; } pcb[pcb[i].next].prior =pcb[i].prior; pcb[pcb[i].prior].next =pcb[i].next; pcb[i].next = -1; pcb[i].prior = -1; pcb[i].status = 'N'; return; } } } //挂起一个进程并插入等待队列 void Hangup(char* name){ for(int i = 0; i < 255; i++){ if(strcmp(pcb[i].Name,name) == 0 && pcb[i].status == 'b' ){ Delete(name);//从运行队列中删除的进程 insertW(name);//插入等待队列 return; } } printf("您要挂起的进程不存在!\n"); } void main(){ int choose;//选项 for(int i = 0; i < 255; i++){ strcpy(pcb[i].Name,"-1"); pcb[i].next = -1; pcb[i].prior = -1; pcb[i].status = 'N'; } init(); printf("Ready processes:"); Print('r'); printf("Wait processes:"); Print('w'); printf("Running processes:"); Print('b'); while(choose != 4){ printf("***************************************\n"); printf("choose:\n"); printf("1:Create a process:\n"); printf("2:Delete a process:\n"); printf("3:Hang up a process:\n"); printf("4:Quit!\n"); printf("***************************************\n"); printf("Input you choose!\n"); char name[10]; scanf("%d",&choose); if(choose != 1 && choose != 2 && choose != 3 && choose != 4) printf("\nThe choosees are 1,2,3,4,please input again!\n"); if(choose == 1){ printf("Input the name of the process you want to create:\n"); scanf("%s",name); creat(name); printf("Ready processes:"); Print('r'); printf("Wait processes:"); Print('w'); printf("Running processes:"); Print('b'); } else if(choose == 2){ printf("Input the name of the process you want to delete:\n"); scanf("%s",name); Delete(name); printf("Ready processes:"); Print('r'); printf("Wait processes:"); Print('w'); printf("Running processes:"); Print('b'); } else if(choose == 3){ printf("Input the name of the process you want to hang up:\n"); scanf("%s",name); Hangup(name); printf("Ready processes:"); Print('r'); printf("Wait processes:"); Print('w'); printf("Running processes:"); Print('b'); } } } 五、实验结果截图 输入选择1,2,3,4运行结果: 3、通过活动,使学生养成博览群书的好习惯。 B比率分析法和比较分析法不能测算出各因素的影响程度。√ C采用约当产量比例法,分配原材料费用与分配加工费用所用的完工率都是一致的。X C采用直接分配法分配辅助生产费用时,应考虑各辅助生产车间之间相互提供产品或劳务的情况。错 C产品的实际生产成本包括废品损失和停工损失。√ C成本报表是对外报告的会计报表。× C成本分析的首要程序是发现问题、分析原因。× C成本会计的对象是指成本核算。× C成本计算的辅助方法一般应与基本方法结合使用而不单独使用。√ C成本计算方法中的最基本的方法是分步法。X D当车间生产多种产品时,“废品损失”、“停工损失”的借方余额,月末均直接记入该产品的产品成本 中。× D定额法是为了简化成本计算而采用的一种成本计算方法。× F“废品损失”账户月末没有余额。√ F废品损失是指在生产过程中发现和入库后发现的不可修复废品的生产成本和可修复废品的修复费用。X F分步法的一个重要特点是各步骤之间要进行成本结转。(√) G各月末在产品数量变化不大的产品,可不计算月末在产品成本。错 G工资费用就是成本项目。(×) G归集在基本生产车间的制造费用最后均应分配计入产品成本中。对 J计算计时工资费用,应以考勤记录中的工作时间记录为依据。(√) J简化的分批法就是不计算在产品成本的分批法。(×) J简化分批法是不分批计算在产品成本的方法。对 J加班加点工资既可能是直接计人费用,又可能是间接计人费用。√ J接生产工艺过程的特点,工业企业的生产可分为大量生产、成批生产和单件生产三种,X K可修复废品是指技术上可以修复使用的废品。错 K可修复废品是指经过修理可以使用,而不管修复费用在经济上是否合算的废品。X P品种法只适用于大量大批的单步骤生产的企业。× Q企业的制造费用一定要通过“制造费用”科目核算。X Q企业职工的医药费、医务部门、职工浴室等部门职工的工资,均应通过“应付工资”科目核算。X S生产车间耗用的材料,全部计入“直接材料”成本项目。X S适应生产特点和管理要求,采用适当的成本计算方法,是成本核算的基础工作。(×) W完工产品费用等于月初在产品费用加本月生产费用减月末在产品费用。对 Y“预提费用”可能出现借方余额,其性质属于资产,实际上是待摊费用。对 Y引起资产和负债同时减少的支出是费用性支出。X Y以应付票据去偿付购买材料的费用,是成本性支出。X Y原材料分工序一次投入与原材料在每道工序陆续投入,其完工率的计算方法是完全一致的。X Y运用连环替代法进行分析,即使随意改变各构成因素的替换顺序,各因素的影响结果加总后仍等于指标的总差异,因此更换各因索替换顺序,不会影响分析的结果。(×) Z在产品品种规格繁多的情况下,应该采用分类法计算产品成本。对 Z直接生产费用就是直接计人费用。X Z逐步结转分步法也称为计列半成品分步法。√ A按年度计划分配率分配制造费用,“制造费用”账户月末(可能有月末余额/可能有借方余额/可能有贷方余额/可能无月末余额)。 A按年度计划分配率分配制造费用的方法适用于(季节性生产企业)- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 进程 管理 实验 报告
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文