您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 冶金工业 > Windows实习报告模板
操作系统实习一——实习报告1Windows实习报告模板学号:___________姓名:___________组号:___________操作系统实习一——实习报告2一、设计思路及主要代码分析:实习目的:通过本次实习了解操作系统中的进程、线程的区别与联系;掌握多进程、多线程的编程方法;深入了解操作系统原理;设计思路:1.进、线程压力测试部分:用循环的办法产生所要求的进程(线程),循环的退出条件是不能产生进程时,即CreateProcess()返回0时,同时统计产生的进程(线程)数目;对于子进程的运行方式(子线程类似处理),有两种:(1)子进程挂起或睡眠(Process_One.exe就是为这种情况设计的),挂起操作在父进程通过CREATE_SUSPENDED选项完成;(2)子进程死循环(Process_Two.exe就是为了这种情况设计的),即父进程产生子进程后子进程立即执行,并且执行一个死循环;2.进、线程性能测试部分:对于进程:考虑到进程的优先级,作了四组测试,即:HIGH_PRIORITY_CLASS、IDLE_PRIORITY_CLASS、NORMAL_PRIORITY_CLASS、REALTIME_PRIORITY;其中,Realtime优先级较高,其它依序次之;每组又作了三组测试得到三种进程时间:(1)产生单个进程所需要的时间;(2)产生500个进程后,计算每个进程的平均产生时间;(3)产生100个进程,并且打印出每个进程的创建时间(可以认为操作系统实习一——实习报告3是在系统不同的负荷下,产生的进程的时间的变化);对于线程,与进程一样也用三种方法测试时间;以上两种情况,子进程(线程)都有两种运行方式:挂起或者立即返回(即子进程一运行便结束返回),用以测试这两种方式对时间的影响(后面有实验数据说明);3.时间的测试方法:用一个比较精确的时间测试程序(在文件夹中);4.源代码在problem1文件夹下,包括测试时间的程序和源代码;主要代码:1.进程(线程)压力测试:oPreciseTimer.StartTimer();//时间计时开始while(true)//死循环产生进程{if(!CreateProcess(NULL,Process_One.exe,NULL,NULL,FALSE,dMode,NULL,NULL,&info,&pinfo))//产生进程函数;{//到达极限后退出oPreciseTimer.StopTimer();//计时停止__int64i64Diff=oPreciseTimer.GetTime();break;//退出}nProcess_Number++;//进程数加一操作系统实习一——实习报告4}2.优先级选择:if(nChoice_One==1)//通过输入选择优先级{if(nChoice_Two==1)//通过输入选择子进程运行方式dMode=HIGH_PRIORITY_CLASS|CREATE_SUSPENDED;elsedMode=HIGH_PRIORITY_CLASS;}elseif(nChoice_One==2){if(nChoice_Two==1)dMode=IDLE_PRIORITY_CLASS|CREATE_SUSPENDED;elsedMode=IDLE_PRIORITY_CLASS;}elseif(nChoice_One==3){if(nChoice_Two==1)dMode=NORMAL_PRIORITY_CLASS|CREATE_SUSPENDED;elsedMode=NORMAL_PRIORITY_CLASS;}else{if(nChoice_Two==1)dMode=REALTIME_PRIORITY_CLASS|CREATE_SUSPENDED;elsedMode=REALTIME_PRIORITY_CLASS;}3.进线程性能测试:if(nChoice_Three==1)//产生单个进程;{oPreciseTimer.StartTimer();//计时CreateProcess(NULL,Process_Two.exe,NULL,NULL,FALSE,dMode,NULL,NULL,&info,&pinfo);oPreciseTimer.StopTimer();__int64i64Diff=oPreciseTimer.GetTime();return;}操作系统实习一——实习报告5elseif(nChoice_Three==2)//产生多个进程求平均{oPreciseTimer.StartTimer();//计时while(true){if(nTemp==0){oPreciseTimer.StopTimer();__int64i64Diff=oPreciseTimer.GetTime();cout创建进程平均耗时:(double)i64Diff/nProcess_Numbermillisecondsendl;return;}CreateProcess(NULL,Process_Two.exe,NULL,NULL,FALSE,dMode,NULL,NULL,&info,&pinfo);//产生进程nTemp--;nProcess_Number++;}}else//打印出每个进程的创建时间{while(true){if(nTemp==0)return;oPreciseTimer.StartTimer();CreateProcess(NULL,Process_Two.exe,NULL,NULL,FALSE,dMode,NULL,NULL,&info,&pinfo);oPreciseTimer.StopTimer();if(nResult==0)return;__int64i64Diff=oPreciseTimer.GetTime();cout创建进程nProcess_Number:;cout耗时:(double)i64Diffendl;nTemp--;nProcess_Number++;}}二、程序结果及问题分析:操作系统实习一——实习报告6(注:第二台机器的测试数据只是作为映照证明,以第一台数据为主,另外,第二台机器的数据稳定性较第一台好)(一)、进程压力测试:1.实习要求:尽可能产生进程,得到进程数的最大极限;考虑两种子进程的运行方式:1.挂起或者睡眠;2.死循环;2.实验结果:试验次数第一台机器子进程挂起第一台机器子进程死循环第二台机器子进程挂起第二台机器子进程死循环第1次765(个)未知754(个)未知第2次721(个)未知754(个)未知第3次669(个)70754(个)未知第4次590(个)未知754(个)未知第5次555(个)未知754(个)未知第6次511(个)未知754(个)未知第7次470(个)43754(个)未知第8次423(个)32753(个)未知第9次360(个)未知753(个)未知第10次322(个)未知753(个)未知3.结果分析:第一、任何操作系统的资源都是有限的,故而可以申请的进程的最大数目也是有限的,这可以从上表中两台机器的实验结果中得到结论;第二、如果进程出现死循环状况,CPU占用率将持续100%,这时,便会出现诸如死机等状况,所以,这个时候所能够创建的进程数也会急剧减少,并且速度奇慢(由于多个进程抢占CPU);反之,如果将子进程挂起,则系统运行良好(只有一个进程抢占CPU);第三、如果给进程赋予不同的优先级(对于子进程挂起的运行方式),产生的进程数是相同的;操作系统实习一——实习报告7第四、操作系统或者硬件的差异可能导致结果不同:第一台(笔记本)的数据依次下降,而第二台则相对稳定;经多次试验后发现:第一台每次重起后产生的进程数就恢复到上次重起的水平了,而第二台在经过多次试验后,数据也会下降,只是没有第一台下降的速度快罢了;下降的大趋势可能是由于操作系统的累加性等原因造成的;(二)、线程压力测试:1.实习要求:尽可能产生线程,得到线程数的最大极限;考虑两种子线程的运行方式:1.挂起或者睡眠;2.死循环;2.实验结果:试验次数第一台机器子线程挂起第一台机器子线程死循环第二台机器子线程挂起第二台机器子线程死循环第1次2028(个)未知2030(个)未知第2次2028(个)未知2030(个)未知第3次2028(个)1872030(个)未知第4次2028(个)未知2030(个)未知第5次2028(个)2012030(个)未知第6次2028(个)未知2030(个)未知第7次2028(个)1512030(个)未知第8次2028(个)未知2030(个)未知第9次2028(个)1932030(个)未知第10次2028(个)2442030(个)未知3.结果说明:线程的死循环部分同样会造成死机等后果,但似乎比进程的要好得多;4.结果分析:第一、从试验结果上看,即使现成的数目是进程数目的好几倍,但是线程的产生速度依然比进程快得多(从直感上就能感觉出来);操作系统实习一——实习报告8第二、线程的数目是绝对统一的(但各个机器不太一样),这可以从上表中得出结论;那么可以看出,线程是隶属于进程的,操作系统为每个进程规定了线程的数目,他不依赖于系统现在的资源情况,这一点与进程有很大不同;同时,这也从一个侧面说明了,用户线程级对系统内核是不可见的;总之,上述两表明显看出进线程的不同级别性;第三、如果线程出现死循环状况,CPU占用率将持续100%,这时,也会出现诸如死机等状况,所以,这个时候所能够创建的线程数也会急剧减少,并且速度奇慢(由于多个线程抢占CPU);反之,如果将子线程挂起,则系统运行良好(只有一个线程抢占CPU);(三)、进程时间测试:1.实习要求:性能测试,测试系统创建单个进程的平均速率以及速率变化情况,并且对不同的优先级进行测试,研究优先级对其影响;2.实验结果:我分了如下几种情况分别作了实验:(1)产生单个进程时间(考虑了两种子进程运行方式:1.子进程挂起;2.子进程立即返回;):子进程优先级为:HIGH_PRIORITY_CLASS试验次数第一台机器子进程挂起创建时间(微妙)第一台机器子进程立返创建时间(微妙)第二台机器子进程挂起创建时间(微妙)第二台机器子进程立返创建时间(微妙)操作系统实习一——实习报告9第1次25763533726822389第2次25951024713123310第3次24911020511973346第4次69021003111932587第5次2369650912114402第6次6006985212083712第7次59081839015874416第8次25271000412214409第9次2500994613474613第10次5836636912093926平均值3971126891416.73711子进程优先级为:IDLE_PRIORITY_CLASS试验次数第一台机器子进程挂起创建时间(微妙)第一台机器子进程立返创建时间(微妙)第二台机器子进程挂起创建时间(微妙)第二台机器子进程立返创建时间(微妙)第1次2376601227141209第2次2501250412351188第3次2360251013471187第4次5851268011091356第5次2493239214571848第6次5930595415831551第7次2532621211391181第8次3400256813581193第9次5953235512001184第10次2513249714771201平均值3590.93559.31461.91309.8子进程优先级为:NORMAL_PRIORITY_CLASS试验次数第一台机器子进程挂起创建时间(微妙)第一台机器子进程立返创建时间(微妙)第二台机器子进程挂起创建时间(微妙)第二台机器子进程立返创建时间(微妙)第1次2376608813321183第2次2480253412011193第3次7033279412471175第4
本文标题:Windows实习报告模板
链接地址:https://www.777doc.com/doc-4210140 .html