欢迎来到天天文库
浏览记录
ID:52698131
大小:62.33 KB
页数:5页
时间:2020-03-29
《操作系统CPU占用率控制实验报告.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、操作系统实验报告05610901班姓名:李岩学号:05610901CPU占用率控制信息对抗技术5实验一:CPU占用率控制一、实验目的1、通过编写和调试程序以加深对CPU调度的理解;2、熟悉Windows任务管理器CPU信息的获取和使用方法;二、实验要求编写程序实现下面任意一题:1、CPU占用率为一条直线,固定在50%;2、CPU占用率为一条正弦曲线。三、实验原理在任务管理器的一个刷新周期内,CPU忙(执行应用程序)的时间和刷新周期总时间的比率,就是CPU的占用率,也就是说,任务管理器中显示的是每个刷新周期内CPU占用率的统计平
2、均值。通过控制程序在任务管理器的刷新期间内忙/闲的比例,就可以控制管理器的CPU占有率。问题的关键在于如何控制两个loop的时间。四、实验内容及结果1、实现CPU占用率为一条直线,固定在50%;分析:GetTickCount()可以得到“系统启动到现在”的毫秒值,最多能够统计到49.7天。另外,利用Sleep()函数,最多也只能精确到1毫秒。因此,可以在“毫秒”这个量级做操作和比较。步骤1 要操纵CPU的usage曲线,就需要使CPU在一段时间内跑busy和idle两个不同的循环,从而通过不同的时间比例来获得调节CPU占用率
3、的控制。步骤2利用GetTickCount()来实现busyloop的循环,用Sleep()实现idleloop。实验源程序:#includeintmain(void){//50%intbusyTime=10;intidleTime=busyTime;_int64startTime;SetThreadAffinityMask(GetCurrentProcess(),0x00000001);while(true){startTime=GetTickCount();//获取从系统从开机到此刻5//为止运行的时
4、间while((GetTickCount()-startTime)<=busyTime){;}Sleep(idleTime);}return0;}实验结果:(图一CPU占用率为一条直线,固定在50%)2、CPU占用率为一条正弦曲线。分析:可以用sin函数的幅度来表示忙状态占用的时间的大小,当sin函数达到最大值时,CPU占用率为100%,空闲时间大小为0,当sin函数达到最小值时,CPU占用率为0%,忙时间大小为0。步骤1首先设定采样参数,设一个周期内采样点的个数和步进单位的大小。步骤2根据sin函数的大小分别计算忙时间和空闲
5、时间的大小,通过计数完成周期采样。步骤3同第一题用GetTickCount()来实现忙状态的循环,用Sleep()实现空闲状态循环。通过计数实现周期采样。实验源程序:#include#include#includeconstdoubleSPLIT=0.05;//步进量为0.055constintCOUNT=200;//刷新周期内采样200个点constdoublePI=3.14159265;constintINTERVAL=300;//正弦幅值最大单位int_tmain
6、(){DWORDbusySpan[COUNT];DWORDidleSpan[COUNT];inthalf=INTERVAL/2;doubleradian=0.0;for(inti=0;i7、;startTime=GetTickCount();while((GetTickCount()-startTime)<=busySpan[j]);//如果没有到忙截止时间则循环等待Sleep(idleSpan[j]);//执行休眠idleSpan[j]时间大小j++;}return0;}voidmain(){_tmain();}实验结果(图二CPU占用率为一条正弦曲线。)五、实验收获5通过本次实验,从原理上加深了对CPU调度的理解,并且对于windows任务管理器中CPU占用率的获取方法有了了解。在具体编程中,通过控制刷新周期8、内CPU工作忙状态和闲状态的时间比例,来获得预期的CPU占用率曲线,体会了人为控制CPU调度的过程。在原理和具体的编程方法上有了巩固和提高。5
7、;startTime=GetTickCount();while((GetTickCount()-startTime)<=busySpan[j]);//如果没有到忙截止时间则循环等待Sleep(idleSpan[j]);//执行休眠idleSpan[j]时间大小j++;}return0;}voidmain(){_tmain();}实验结果(图二CPU占用率为一条正弦曲线。)五、实验收获5通过本次实验,从原理上加深了对CPU调度的理解,并且对于windows任务管理器中CPU占用率的获取方法有了了解。在具体编程中,通过控制刷新周期
8、内CPU工作忙状态和闲状态的时间比例,来获得预期的CPU占用率曲线,体会了人为控制CPU调度的过程。在原理和具体的编程方法上有了巩固和提高。5
此文档下载收益归作者所有