还剩37页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
信舱汇兼试验课程:计算机操作系统学生姓名:XXX学号:XXXX专业班级:软件年月日20231225PCB p;//一种PCB型的变量,用来保留队首元素int i;for(i=0;iv=number-l;i++)〃建立进程信息cout«”请输入pcb「Vi«”]的信息!”vvendl;cout«n以(name,runtime,state(初始为R),priority)格式输入!endl;cin»pcb[i].name;cin»pcb[i].runtime;cin»pcb[i|.state;cin»pcb[i].priority;cout«endl;)typedef priority_queuePCB,vectorPCB,PCBSortCriterion pQueue;〃以//PCBSortCriterion为//优先准则的I优先队列pQueue q,〃优先队歹I」pQueue一种对象,对这个队列进行主操作temp;//优先队列pQueue的一种对象,是q日勺一种拷贝对象,作为实现打印输出〃日勺一种中间变量forint j=O;jv=number-l;j++〃将进程入队建立优先队列q.pushpcb[j];〃输出进程控制块的初始状态信息coutvv”进程控制块的初始状态信息为:“vvendl;temp=q;while!temp.emptyO{p=temp.top;p.print;temp.popO;}cout«endl;intn=0,〃进程执行欧J次数m=0;〃完毕进程的个数while!q.empty〃对进程进行调度cout«n第v++n次运行”;p=q.top;cout«q.top.name«n!n«endl;p.runtime-=l;p.priority-1;q.popO;ifp.runtime!=O//表明该进程尚未执行完,继续入队进行操作{q.pushp;else{〃表明该进程已经执行完,设置其状态为Z,并将其保留到pl中p.state=Zf;pl[m++]=p;cout”运行后日勺状态为:”endl;//打印出运行后的进程状态temp=q;〃拷贝输出队列while!temp.emptyp=temp.top;p.print;temp.popO;ifm0〃输出完毕日勺进程的信息for i=0;i=m-l;i++pl[i].print;cout«endl;cout«endl;}systemnpausen;return0;int maincoutvsetw40v进程模拟调度设计”endl«endl;coutv”提醒输入1选择先来先服务算法,输入2选择优先级法,输入3选择轮转法,输入4退出程序vvendl«endl;cout«H
1、先来先服务\n
2、优先级法\n
3、时间片轮转法\n
4.多级反馈轮转法\n
5.动态优先级法\n
6.退出”endl«endl;int choice;int go=l;whilegocoutv”请输入你的J选择”;cin»choice;switchchoice〃调用先来先服务算法求解case1:FCFS;break;//调用优先级法求解case2:PRIO;break;〃调用时间片轮转法求解case3:LZF;break;〃调用多级反馈轮转法求解case4:DJFKLZ;break;case5:DTYXJF;break;case6:coutv退出endl;go=0;break;〃返回首页case7:coutv”选择有误,请重新输入选择!《endl;break;systemnpausen;return0;程序运行成果:初始化界面:进程模拟调度设计输入选择时间片轮转法,输霆3法转法先优先来先服务法:请朝入迓程层数目2井口王口口王j口王II口王井I【一II井一一八二III进I进进进进程序号进程名到达时间开始时间执行时间结束时间2b3381a4811均周转时间平巫6均熊见周转日枪
1.66667静态优先级法:需先口王口王口王口王口、、・留进进王级进进进序・口王口王口王口王口-王A品级力士进进进作进进进程序号进程名优先级到达时间开始时间执行时间结束时间24716511FTTT
1.25I%/时间片轮转法:-iszo7--7-JD4RR:••••:d545tt1ltt.2t.t6543212••—..^0b43,-sis34b2tt输入进程个数:I2输入进程时间片长度1输入第个进程的名字,进程花费时间和优先级:1a345输入第个进程的名字,进程花费时间和优先级:23调度开始了・・・进程名字花费时间剩余时间优先级状态44IS3哪绪244优先级一项是指进程运行后的优先级?进程已经执行完毕a运行b410运行b40-1进程已经执行完毕,b所有进程都已经执行完毕?Press anykey tocontinue
432、143421动态优先级法:输入进程(当进程到达时间为时,结束输入)踵茬三―一前相而无荻―a一35b401进程名剩余时间优先级进程状态a35Rb46R鬻詈用杀褊优先级进程状态b46Ral7R掘调度进程名为二b惟程茗“弱荼研恸优先级进程状态al7Rb28R翦昼进繇褊优先级进程状态i b28R翦磐进繇褊优先级进程状态bl9Rsr鲁黑濡多级反馈轮转法:快人就绪队列的个数:MUIt ipleReadsFQueue Inf ornation**********MM口MMMM1MX个MM就绪队列世先缈该就绪队列的时间片=2第就绪队列2疣先级=47输入通翻队列的时间抬储入第个进程名字1「前人第个进程需要的时间14push the a intoReady Queue输入第个进程名字2跖入第个进程需要的时间.2ush theb intoReady Queue***The firsttine Read^Queue Infornation***进程名优先级抡数时间需要时间进程状态计数器cpua46204W0b44206W0ush thea intoReady Queue!!就绪队列・・・b44206w0146322w0运行队列••・a4632push theb intoReady Queuea4632b4432国亍队列・•・b44;heahas Finished沈绪队列・•・44完成队列・•・Ml46ush theb intoReady Queue品成队列・・・MVhe bhas finished4644
4.一开始认为波及到操作系统日勺模拟编程时都是高不可攀的,然而在仔细阅读书本以及试验I阐明后,发现只要弄清晰了优先级数调度欧实现原理后其实并不难,用优先队列就可以了通过这I J个试验一来加深了对优先级数调度的理解,二来也加强了自己的编程实践能力!试验三死锁防止一银行家算法时实现
一、试验名称死锁防止一银行家算法的实现
二、试验目的
1、掌握死锁产生的原因和必要条件
2、掌握银行家算法的实现
三、试验成果分析#include iostreamusing namespace std;#define mp50〃最大进程数#define mr100/最大资源数int keyong[mr];〃可用资源数组int MAX[mp][mr];〃最大需求矩阵int fenpei[mp][mr];〃分派矩阵int need[mp][mr];〃剩余需求矩阵intp[mp];〃记录序列bool FINISHlmp];〃系统与否有足够资源分派int Work|mr];〃工作数组int m,n;〃m个进程,n个资源int1=0;void Init;//初始化bool Safe;void jc;void main{Init;Safe;ifl!=mjc;}void Init//初始化算法{int i,j;cout<〈”请输入进程的J数目cin»m;coutvv”请输入资源的I种类cin»n;coutv〈”请输入每个进程最多所需的各资源数,按照“mvxn〈”矩阵输入H«endl;fori=0;im;i++forj=0;jn;j++cin»MAX[i][j];cout«”请输入每个进程已分派时各资源数,也按照“vmxnv矩阵输入H«endl;fori=0;im;i++forj=0;jn;j++cin»fenpei[i][j];need[i][j]=M AX[i][j]-fenpei[i][j];ifneed[i][j]0{coutv〈”您输入日勺第”i+l〈”个进程所拥有日勺第”vj+lv”个资源数错误,请重新输入:“endl;j-;continue;}cout«”请输入各个资源既有的数目:“endl;fori=0;in;i++{cin»keyong[i];}coutv”剩余需求矩阵:endl;fori=0;im;i++forj=0;jn;j++{cout«need[i][j]«n n;ifj==n-lcout«endl;coutvv”各资源既有数量:vendl;fori=0;in;i++cout«keyong[i]«H n;cout«endl;bool Safe/*安全性算法*/{int ij,k;fori=0;in;i++Work[i]=keyong[i];fori=0;im;i++{FTNISH[i]=false;〃判断进程i与否已执行fori=0;im;i++ifFINISH[i]==true{continue;else{forj=0;jn;j++{ifneed[i][j]Work[j]{break;{FINISH[i]=true;fork=0;kn;k++{Work[k]+=fenpei[i][k];//进程i执行完后回收资源}p[l++]=i;i=・l;elsecontinue;ifl==mcout“系统是安全的I,«endl;coutv安全序歹U:H«endl;fori=0;il;i++cout«p[i];ifi!=l-lcout«H-n;cout«,,n«endl;return true;}cout«”会发生死锁,发生死锁日勺进程是:“《endl;fori=0;im;i++ifFINISH[i]==falsecout«endl;return false;voidjcQint ij,k,q;i=0;whileimFINISH[i]=false〃寻找没执行日勺forj=0;jn;j++key ong[j]+=fenpei[i][j];〃回收fenpei[i][j]=O;}ifSafecout死锁已解除endl;elsei++;Safe;输入进程已拥有资源数总需求资源数
10.
0.
1.
20.
0.
1.
2.
22.
0.
0.
02.
7.
5.
030.
0.
3.4C
6.
6.
5.
642.
35443.
5.
650.
3.
3.
20.
6.
5.2请输入进程的数目5请瓠遨源的强类4请输入每个进桂最多所需的各资源数「按照矩阵输入5x40012275066564356■篇又冷个进程己分配的各资源数.也按照矩阵输入5x400122000003423540332请输入各个资源现有的数目2100请输入需申请的进程号3请输入进程需要的资源数33100不存在安全序列.会发生死锁,?回收进程申请的资源数系统是安全的1安全序列是Pill—P
[4]—P[5J—P
[2]—P
[3]试验一熟悉Windows XP中的进程和线程一■、试验名称Windows XP熟悉中的进程和线程
二、试验目的1Windows I、熟悉中任务管理器的使用
2、通过任务管理器识别操作系统中的进程和线程的有关信息3^spy++.exe Windows掌握运用来察看中各个任务的更详细信息
三、试验成果分析
1、启动操作系统自带的任务管理器Ctrl+Alt+DeL taskmgr.措施直接按组合键或者是在点击任务条上的“开始”“运行”,并输入exe
四、心得体会通过这次试验,我理解了有关资源申请分派、检测以及防止死锁等概念,理解死锁和防止死锁的详细实行措施死锁的解除实质上就是怎样让释放资源的进程可以继续运行.为理解除死锁就要剥夺资源,试验四存储管理
一、试验名称储存管理
二、试验目的
1、掌握物理内存和虚拟内存日勺基本概念,理解绝对地址和相对地址;2Windows、理解中内存管理机制,掌握页式虚拟存储;
3、掌握虚拟存储管理中有关缺页处理措施等内容,巩固有关虚拟存储管理日勺教学内容;
4、理解内存分派原理、尤其是以页面为单位的虚拟内存分派原理;
5、掌握常用的页面置换算法
三、试验成果分析#define MAXSIZE20#include iostream.hint label=0;〃标识此页与否已经装入内存int input=0;〃用于输入作业号int worknum=0;〃记录作业个数int storesize=0;〃系统分派日勺存储块数int interrupt=O;〃中断次数int quencefMAXSIZE];//队列,FIFO算法日勺重要数据构造int workstep[MAXSIZE];〃用于记录作业走向void main/*初始化*/forint i=O;iMAXSIZE;i++quence[i]=O;workstep[i]=0;cout«”请输入存储区块数”;cin»storesize;cout”请输入作业走向输入结束\nn;forint j=O;jMAXSIZE;j++COUt”页面号n«j+l;cin»input;workstep[j]=input;ifinput==O{cout输入结束!\nH;break;worknum++;if workstep10]==0coutvv”未输入任何作业,系统将退出!\nH;return;coutvv”置换状况如下:\nH;forint k=0;kworknum;k++label=0;/*看队列中与否有相等的页号或空位置*/forint l=0;lstoresize;14-+/*与否有相等H勺页号*/ifquence[l]==workstep[k]coutv内存中有workstep[k]”号页面,不必中断!\n”;labels1;//标识此页面已装入内存break;/*与否有空位置*/ifquence[l]==Oquence
[1]=workstep|k|;cout发生中断,但内存中有空闲区,workstep[k]”号页面直接调入!\nn;inteirupt++;label=l;break;/*上述状况都不成立则调出对首,将调入页面插入对尾刃iflabel==0{coutvv”发生中断,将vquence
[0]”号页面调出,workstep[k]v”号装入!\nn;interrupt++;forint m=0;mstoresize;m++quence[m]=quence[m+1];quence[storesize-1]=workstep[k];cout”作业,,«worknum«n个,«n中断,«interrupt«,,次,H«n缺页率:H«floatinterrupt/floatworknum*100«n%\nn;请面知面一知面面知面知面面如一一赖加一随可洋一如二二二二二二二一二二二曼二二‘二二二二二衣E:\操作系统\Debug\Cpp
32.exe道选接操任卷型贡面静情貌200230234$345_24映页次数缺页率:
50.714286oy¥¥^lpolpolpolpO37:--2342532«*******£FI FOjTp页面*****1LRU贝间置换OPT00443*****按其它键结MMXMMXM缺页次数缺页率
50.714286lOOCMXMXIOOCMMMlOOOOOOOOOOC FIXXXXXFOj^Ja1***1LRU画面*****o OPT页面置换*****^其它键结xxxxxxx请选择操作类型〉”,
1.0o200XXXXXXXXXXXXXXXXXXXXXXXX230234缺页次数缺页率:
40.571429235xxxxxxxxxxxxxxxxxxxxxxxx FIFojrpxxxxx页面*****1LRU页画置换*****^其它键请选择操作类型OPT ZTWXMXXXMxxxxxxxxxxxxxxxxxxxxxxxx<)£,1,0心得体会通过上机,我理解了许多有关操作系统的专业知识无论是在批处理系统还是分时系统中,顾I客进程数一般都多于处理机数、这将导致它们互相争夺处理机此外,系统进程也同样需要使用处理机这就规定进程调度程序按一定的方略,动态地把处理机分派给处在就绪队列中的某一种进程,以使之执行这次试验课上机是我理解了许多知识,让我愈加理解了处理系统,我相信我可以把处理系统用好与任务管理器Tindovs应用程序进程性能联网用户淮taskmgr.exe7228xp020:00044,124K3,372K淮匚Bai duAnUpdate.exe7004xp000:000016,064K10,828K淮淮QQExternal.exe6308xp040:00008,368K12,656K淮bddownloader.exe6256xp000:000114,236K11,188K®BDALeakfixer.exe6216xp000:0001816K12,760K®®Bai duSdSvc.exe6028SYSTEM080:000329,200K31,176K淮淮TXPlatform.exe5908xp000:00001,708K2,140K淮BaiduSdTray.exe5600xp000:000350,448K40,692K淮BaiduAnlray.exe5144xp010:00028,912K44,392K淮QQProtect.exe4668xp010:000120,156K23,080K淮QQ.exe3876xp010:001444,656K101,756K标淮sogoupinshengj i.exe3744xp000:001848,464K34,636K标®picpick.exe3708xp000:00034,924K64,404K标淮标淮SogouCloud.exe3400xp000:000043,644K146,248K标淮OSPPSVC.EXE3296NETWORK SERVICE000:000314,356K9,020K标淮Thunder,exe3268xp000:000525,128K107,800K标®BDASWDeskGuide.exe3232xp000:000011,020K7,764K淮标淮svchost.exe3208SYSTEM000:00003,300K1,252K标淮Bai du.exe3080xp000:00001,924K14,596K标淮Bai du.exe2664xp000:00001,264K7,444K标淮BaiduHips.exe2656SYSTEM000:000123,216K21,260K标港标ThunderPlatform.exe2588xp000:000121,052K16,004K标闻Bai duAnSvc.exe2564SYSTEM000:000018,040K16,024K标标wmiprvse.exe2420SYSTEM000:00005,512K2,048K标标BaiduProtect.exe2364SYSTEM000:000421,208K13,336K标标匚WINWORD.EXE2320xp000:002335,708K58,752K标标svchost.exe2252SYSTEM000:00004,556K2,604K标标IMECMNT.EXE2156xp000:00004,524K2332K标标型t标标后alm exe2068WCAL SERVICE000:
00003.880K
1.324K文件任)选项)查看W)关机也)帮助凶©回显示所有用户的进程6)结束进程更)]映像名称FID用户名CPU CPU时间内存使用虚拟内..bddownloader.exe7312SYSTEM00:00:009,980K9,20K进程数55CPU使用20%提交更改1400M/3937M2I、调整任务管理器的“查看”中日勺有关设置,显示有关进程的如下各项信息,并完毕下表:表一记录进程欧I各项重要信息序进程名称进程ID线程数占用内优先占CPU时间虚拟内号量存级存1Bddownloader.exe7312329980k原则0:00:009200k2Taskmgr.exe722834124k高0:00:043372k3BaiDuSdTray.exe5144308588k原则0:00:1543652k4protect,exe46681120700k原则0:00:0123572k5TXPlatform.exe590831716k原则0:00:002128k6Explorer,exe58161730340k原则0:00:1121720k»UEEUEutUEUEUEE,UEUEUEUEUEbtUEucill,UEUEUEUEUEUEut:UEUEA3“Word”,I、启动办公软件在任务管理器中找到该软件的登记,并将其结束掉winlogon.exe^Isass.exe csrss.exe再从任务管理器中分别找到下列程序:smss.exe,试着结束它们,观测到的反应是任务管理器无法结束进程,原因是该系统是系统进程4“exphrer.exe,、在任务管理器中找到进程将之结束掉,并将桌面上你打开I日勺所有窗口最小化,看看你的计算机系统起来什么样日勺变化桌面上图explorer.exe标菜单都消失了、得到的结论是管理桌面图标的文献explorer.exe0tl(说出进程作用)5“spy++.exe”、运行应用软件,点击按钮“卷二切换到进程显示栏上,查看“explorer.exe”进程日勺各项信息,并填写下表:鱼进程3+%1W00001418BAIDU ANTRAY+各进程ddOCI15ECIBOIDUSDTRAY进程000016B8EXPLORERO线程O线程0线程O线程00000104EXPLORER000003EC EXPLORER00000904EXPLORER0000QA0CO线程O线程O线程O线EXPLORER00000^90EXPLORER00001280EXPLORER000013D8EXPLORER程O线程000014C0EXPLORER00001820EXPLORER线程o线程o线程o线程00001824EXPLORER0000188C EXPLORER00001B28EXPLORER00001BE4线程0线程0线程O线EXPLORER©00001C04EXPLORER00001CC4EXPLORER00001F94EXPLORER程O线程00001FCO EXPLORER00001FC8EXPLORER王进程+浮耀O00001FCC EXPLORERE%00001714TXPLATFORM nnnm7RR RAiniisnwr进程explorer.exe中日勺各个线程序号进程ID线程ID基本优先级目前优先级CPU时间上下文开关1000016B8000001048100:00:0649983362000016B8000003EC15150:00:0083000016B8000009048100:00:00114000016B800000A0C8100:00:00135000016B800001280880:00:078171386000016B8000013D88100:00:002326翳聚—E078EXPLORER、注意某些线程前有“+”,如图所示阐明两者之6O LS00000198EXPLORER,间的差异前有“+”其器线程下有窗口
四、心得体会通过本次试验,我理解到了系统中进程的管理与操作,我理解了怎样切出任务管理器,任windows务管理器应用与其他与进程有关的知识,明白了有些系统程序不可以关闭,系统中的进程与线程虽然诸多,不过其中有许多关联,只要弄清晰其中的关联那么就可以运用好进程与线程,到达我们的目曰勺I每个进程下都包括着许多线程,我们控制进程来到达控制线程的目日勺只有我们理解好掌握还进程,我们才能更好的运用线程,更好的控制运用计算机I试验二进程调度
一、试验名称进程调度
二、试验目的1PCB、使学生深入理解进程的概念,并在此基础上掌握有关、进程队列的概念2I、掌握进程基本状态的转化;
3、掌握进程调度的方略、详细实行措施以及系统性能的评价措施
三、试验成果分析简化的试验代码如下#includeiostream#includequeue〃调用STL中区优先队列usingnamespacestd;〃定义一种PCB进程类class PCBpublic:char name]10];//进程日勺名字int runtime;//该进程日勺运行时间int priority;//该进程日勺优先级char state;//该进程H勺状态PCB*next;〃指向下个进程的指针void printconst〃输出进程区I信息cout«nname=,,«name«,,runtime=,«runtime«n,state=n«state«n,priority=n«priority«nn«endl;;class PCBSortCriterion{//优先队列的I优先准则类public:bool operatorconst PCBpl,constPCBp2const〃仿函数确定优先准则,从大到小return p
1.priorityp
2.priority;}};PCB*pcb=new PCB[number];//一种PCB时数组用来保留就绪进程PCB*pl=new PCB[number];//一种PCB的I数组用来保留已经结束时进程cout«endl;。
个人认证
优秀文档
获得点赞 0