版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机科学与应用系2操作系统课程设计一、实验目的通过优先权法与轮转调度算法的模拟加深对进程概念和进程调度过3、、、、、、、<3操作系统课程设计4=:^^_ready=:^^_ready-queue是否为NT1TY1YN更新新进程就绪队列进程优先数,优先数加1Y创建新进程并加入到ready_queue中N5HLLtineCPUtineHLLtineCPUtineStatereadyreadyreadyrecitlySreadyreadyreadyready(4)在运行过程中,当遇到阻塞,则该进程插入到阻塞队列block_queuezz*Di\process\Dtsibug\pEocess-eieleascsclcctanHLn'1ThisThisJisaexampleForpi'iorit^pprocess:ingInputthenumbei*oFPCBtobestart■3IDIDpr*TL«ii*i1tyCPUt7xnieALLlrinteStzalzeDDpriorityIBi323碉Dpriority6操作系统课程设计1143t^unnxnsrTheprocessno1ifconpletedt销昱殳』running->Destsrory期度开始变迁1=ready->l^unnin^rrunnxngiheprocess:nu3ifcumplet-edf:Funitiriigf-->Destriory*ircad.^™>mnninsfThepracessno2iscomplelbedlfTheidleD^ocessidrunningT^iil:peadj/—>running变迁1=ready->l^unnin^3htsprocessnu4ifcumplet-edf乍肖艮殳:,本次调度结束。leascselcctamLE=runningrunniinsf—>DeEti*oyrunningFunniiriigfDestriOiry27g"D:\process\Debug\process口1DpriorityCPUtime0QIDppio^ityg"D:\process\Debug\process口1DpriorityCPUtime0QIDppio^ityk>0GFULjLi0ne0heidlepeocessIdmnnIng变迁3L=^eadyrunnjmgheprocessnolisbluckedf32heprocessno2ifcompleted?变迁i=ready->runmipffhep护曲te:生雪nu1~F1=readyiwigZ.exeHLLtime032ALLtineIFunning—>blockedFunffiiFanning-running—>Destrory销毁土runningf■〉Dest^oi*^3If变迁running—>blockedblocked5487584574389574fgffffgfgf变迁1二readjy->runnioggfg389S43?89543758943?8954375(4)在运行过程中,当遇到阻塞,则该进程插入到阻塞队列block_queueStateStateStatereadyrenadyreadypenady(变迁丄二(变迁丄二™ady">running3322corniplei^edfcorniplei^edfheheidlepeocessidr-imning!+1::peadv一〉running异re^djy->ruvuniiogheprocessnu4IsblockedT21hepFoiCB&sno6ifCDimpleitKdfiruinnmg*runnIng'Desti^OFy8操作系统课程设计9操作系统课程设计材中介绍的算法做了哪些简单化处理优先权模拟时优先权是随机产生,在实际的系统中,系统进程的优先权高于一列,每次调度时,把CPU分配给首进程,并令其用完时,发出中断请求,调度程序便据此信号来停止该进程的执行,并将其送到就绪队列的末尾,如此反复,就可以保证就绪队列中的所有进程在一个给定的时间最高优先权调度算法,常用于批处理系统中,作为作业调度算法,也作为多种高的作业,装入内存,当用于进程调度算法时,该算法是把处理及分配给就绪队列//process.cpp:Define//#include"stdafx.h"#include"stdio.h"#include"stdlib.h"操作系统课程设计intALLtime;intState;PCB*next;voidprint(PCB*pcb);/*输出进程属性信息*/voidinsert();/*生成进程属性信息,插入进程就绪队列*/voidblock(PCB*pcb);/*调用destroy()将进程插入阻塞队列*/voidwakeup();/*唤醒进程,插入就绪队列*/voidproc_priority();/*优先权调度算法模拟*/voidproc_loop();/*轮转法调度算法模拟*/voidupdate(PCB*pcb);/*更新进程信息*/voidpushback_queue(PCB*queue,PCB*item);/*将item插入到队列的尾部*/voidinsert_queue(PCB*queue,PCB*item);/*将item插入到队列中,使得插入后,voidsort_queue(PCB*&queue);/*对queue中的结点进行排序,按照优先级从大到小PCB*ready_queue,*block_queue,*idleprocess;/*就绪队列,阻塞队列及闲逛进程指针变操作系统课程设计while(1)cout<<"\\**********PROCESS**********/"while(i){{}elseif(i==2){cout<<("\nThisisaexampleforroundrobinproces}{}}}}{cout<<("\nlDpriorityCPUtimeALLtimeState");while(temp!=NULL){cout<<"\n"<<temp_>ID<<""<<temp->CPUtime<<""<<temp->ALLtime;elseif(temp->State==1)cout<<("running");操作系统课程设计temp=temp->next;}}///////输出进程属性信息voidprint(PCB*pcb){temp=pcb;{cout<<"\n"<<temp_>ID<<""<<temp->CPUtime<<""<<temp->ALLtime;elseif(temp->State==1)cout<<("running");}}///////将item插入到队列中,使得插入后,队列中按照优先级从voidinsert_queue(PCB*queue,PCB*item){q=queue;p=q_>next;while(p!=0&&p->priority>=item->priority){}{}{}操作系统课程设计}voidpushback_queue(PCB*queue,PCB*item){q=queue,p=q_>next;while(p!=0){}}///////对queue中的结点进行排序,按照优先级从大到小voidsort_queue(PCB*&queue){while(queue->next){insert_queue(temp,p);}queue->next=temp->next;}///////生成进程属性信息,插入进程就绪队列,显示进程信息voidinsert(){PCB*newp=0;操作系统课程设计}////////生成n个进程属性信息,插入进程就绪voidinsert(intn){insert();}{idleprocess=(PCB*)malloc(sizeof(PCB));idleprocess->ID=0;idleprocess->next=ready_queue->next;//ready_queue->next=idl//也可以假定初始时系统中只有一个idle进程//输入初始进程的个数{}cout<<("\nIDpriorityCPUtimeALLtimeState'n");insert();cout<<"*就绪队列初始化成功"<<endl;}///////调用destroy()将进程插入阻塞队列{操作系统课程设计{}cout<<"\nTheprocessnprint(pcb);pcb->next=block_queue->next;block_queue->ne}///////{///////{PCB*temp=pcb->next;while{temp_>priority++;temp=temp->next;}}//////////////{wakeup()if(block_queue->next==0)/*此时while(true){while(p&&rand()%20!=1){}{}}print(p);insert_queue(ready_queue,p);操作系统课程设计}...运行进程,随机阻塞进程、产生新进程,插入就绪队列{{insert_queue(ready_queue,pcb);print(pcb);}{pcb->priority=pcb->priorityprint(pcb);if(rand()%3==1)/*PCB不是闲逛进程,满足条件侧阻塞此进程{if(pcb->CPUtime-2<pcb->Aelse/*已执行完毕,应该销毁进程{cout<<"Theprocessno"<<pcb->ID<<"iscompleted!销毁}}如果执行完,则释放,否则再次放入就绪队列操作系统课程设计{if(pcb->CPUtime>=pcb->ALLtime)/*释放*/{cout<<"Theprocessno"<<pcb->ID<<"}{}}}更新就绪队列的优先级数更新就绪队列的优先级数*/if(rand()%5==1){insert(3);}if(rand()%7==1)wakeup();}///////运行进程,随机阻塞进程、产生新进程,插入就绪队列,唤醒阻塞进程{{insert_queue(ready_queue,pcb);print(pcb);}{pcb->CPUtime=pcb->ALLprint(pcb);不是闲逛进程,满足条件侧阻塞此进程*/if(rand不是闲逛进程,满足条件侧阻塞此进程*/{_state=1;操作系统课程设计{cout<<"Theprocessno"<<pc}}if(rand()%5==1){insert(3);}if(rand()%7==1)wakeup();}///////优先权调度算法模拟voidproc_priority(){sort_queue(ready_queue);PCB*temp=0,*running=0;cout<<"*调度前:";for(;times<5;times++){running=ready_queue->next;ready_queue->next=running-cout<<"*调度开始"<<endl;Run_priority(running);}cout<<"\n*本次调度结束。"<<endl;}///////轮转调度算法模拟voidproc_loop(){PCB*temp=0,*running=0;cout<<"*调度前:";while(1){running=ready_queue->next;操作系统课程设计ready_queue->next=running-{times=times-running->ALLtime;〃每次运行一个进程减去ALLtime;{Run」oop(running);}elseif(_state)//如果运行时被阻塞,则运行2个时间单位{times=times+2;_state=0;cout<<"5487584574389574gfgfg38954378954375894378954375";}pushback_queue(block_queue,running);〃}{cout<<"\n*本次调度时间片到!";}}cout<<"\n*本次调度结束。"<<endl;}操作系统课程设计Linux进程管理一、实验目的析进程争用资源的现象,学习解决进程互斥的方法,了C++compiler宿写,是C/C++语言的编译器。因其后来可以多种语TASK_INTERRUPTIBLE可中断阻塞):Linux将阻塞态划分成TASK_UNINTERRUPTIBLETASK_STOPPEDTTASK_UNINTERRUPTIBL不可中断唤醒):处于该状态的进程只有当资源有效时被唤#include<stdio.h>{while(p1=fork()==-1);//操作系统课程设计{while((p2==fork())==-1);〃创建子进程if(p2==0)}}#include<stdio.h>{while(p仁fork()==-1);〃printf("daugheter%d\n",i);{while((p2==fork())==-1);〃创建子进程printf("son%d\n",i);printf("parent%d\n",i);}}#include<stdio.h>#include<unistd.h>#include<sys/wait.h>#include<sys/stat.h>#include<sys/types.h>#include<fcntl.h>voidmain(){charstr[80];fd=open("myfile",O_RDWR|O_CR{}{操作系统课程设计}printf("Iamaparentprocess,mypidis%d\n",getid());printf("Pleaseinputastring:\n");write(fd,str,sizeof(str));{}{{}{}printf("\nIamaparentprocess,mypidis%d\n",getid());printf("Pleaseinputastring:\n");printf("%s\n",str);}}}父进程捕捉键盘上来的中断信号(即按Del键);当捕捉到中断信号后,父进程用系统调#include<stdio.h>#in
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年燃气职业技能鉴定练习题及完整答案详解
- 桩基施工机械与材料安排
- 2026四川成都市新津区外国语实验小学校面向社会招聘教师18人备考题库带答案详解(黄金题型)
- 2026广西梧州市龙圩区招(补)录城镇公益性岗位人员11人备考题库带答案详解(预热题)
- 2026中运博(扬州)文化服务有限责任公司工作人员招聘15人备考题库附参考答案详解(突破训练)
- 2026湖北武汉市第三医院眼科招聘备考题库附参考答案详解(突破训练)
- 2026广东梅州市人民医院招聘博士研究生备考题库及参考答案详解(新)
- 2026年4月江苏扬州市邗江区卫生健康系统事业单位招聘专业技术人员20人备考题库带答案详解(基础题)
- 2026黑龙江五大连池市乡镇卫生院招聘医学相关专业毕业生1人备考题库带答案详解(达标题)
- 2026安徽亳州市蒙城县中医院招聘卫生专业技术人员75人备考题库及答案详解【典优】
- 2026黑龙江省纪委监委派驻省管企业纪检监察组及省纪检监察干部学院公开招聘工作人员42人笔试备考题库及答案解析
- 重庆市康德2026届高三高考模拟调研卷(四)政治试卷(含答案详解)
- 原材料质量控制办法
- 2026年行测国考真题及答案
- 催告股东履行出资的法律函件模板
- 2026云南红河州建水滇南云水环境治理有限公司招聘1人备考题库及一套答案详解
- QC08000培训课件教学课件
- 2024版2026春新人教版数学三年级下册教学课件:数学广角:重叠问题
- 2026年河南经贸职业学院单招职业适应性测试必刷测试卷含答案
- 销售回款提成合同范本
- 2020-2025年护师类之护士资格证题库练习试卷A卷附答案
评论
0/150
提交评论