操作系统CPU占用率控制实验报告.docx

上传人:小飞机 文档编号:5304466 上传时间:2023-06-24 格式:DOCX 页数:5 大小:104.06KB
返回 下载 相关 举报
操作系统CPU占用率控制实验报告.docx_第1页
第1页 / 共5页
操作系统CPU占用率控制实验报告.docx_第2页
第2页 / 共5页
操作系统CPU占用率控制实验报告.docx_第3页
第3页 / 共5页
操作系统CPU占用率控制实验报告.docx_第4页
第4页 / 共5页
操作系统CPU占用率控制实验报告.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《操作系统CPU占用率控制实验报告.docx》由会员分享,可在线阅读,更多相关《操作系统CPU占用率控制实验报告.docx(5页珍藏版)》请在三一办公上搜索。

1、操作系统实验报告CPU占用率控制05610901 班姓名:学号:信息对抗技术实验一:CPU占用率控制一、实验目的1、通过编写和调试程序以加深对CPU调度的理解;2、熟悉Windows任务管理器CPU信息的获取和使用方法;二、实验要求编写程序实现下面任意一题:1、CPU占用率为一条直线,固定在50%;2、CPU占用率为一条正弦曲线。三、实验原理在任务管理器的一个刷新周期内,CPU忙(执行应用程序)的时间和刷新周期总时间 的比率,就是CPU的占用率,也就是说,任务管理器中显示的是每个刷新周期内CPU占 用率的统计平均值。通过控制程序在任务管理器的刷新期间内忙/闲的比例,就可以控制管 理器的CPU占

2、有率。问题的关键在于如何控制两个loop的时间。四、实验内容及结果1、实现CPU占用率为一条直线,固定在50%;分析:GetTickCount()可以得到“系统启动到现在”的毫秒值,最多能够统计到49.7天。 另外,利用Sleep()函数,最多也只能精确到1毫秒。因此,可以在“毫秒”这个量级做操 作和比较。步骤1要操纵CPU的usage曲线,就需要使CPU在一段时间内跑busy和idle两个不 同的循环,从而通过不同的时间比例来获得调节CPU占用率的控制。步骤 2 利用 GetTickCount()来实现 busy loop 的循环,用 Sleep()实现 idle loop。实验源程序:#i

3、nclude int main(void)/50%int busyTime=10;int idleTime=busyTime;_int64 startTime;SetThreadAffinityMask(GetCurrentProcess(), 0x00000001);while(true)startTime=GetTickCount(); 获取从系统从开机到此刻为止运行的时间while(GetTickCount()-startTime)=busyTime) ;Sleep(idleTime);return 0;实验结果:(图一 CPU占用率为一条直线,固定在50%)2、CPU占用率为一条正弦曲

4、线。分析:可以用sin函数的幅度来表示忙状态占用的时间的大小,当sin函数达到最大值时, CPU占用率为100%,空闲时间大小为0,当sin函数达到最小值时,CPU占用率为0%,忙 时间大小为0。步骤1首先设定采样参数,设一个周期内采样点的个数和步进单位的大小。步骤2根据sin函数的大小分别计算忙时间和空闲时间的大小,通过计数完成周期采样。步骤3同第一题用GetTickCount()来实现忙状态的循环,用Sleep()实现空闲状态循环。通过计数实现周期采样。实验源程序:#include #include #include const double SPLIT=0.05; 步进量为 0.05co

5、nst int COUNT=200; /刷新周期内采样200个点const double PI=3.14159265;const int INTERVAL=300; 正弦幅值最大单位int _tmain() DWORD busySpanCOUNT;DWORD idleSpanCOUNT;int half=INTERVAL/2;double radian=0.0;for(int i=0;iCOUNT;i+) busySpani=(DWORD)(half+(sin(PI*radian)*half); /忙状态时间idleSpani=INTERVAL-busySpani;空闲状态时间radian+=

6、SPLIT;/ 步进量DWORD startTime=0;int j=0;while(true) j=j%COUNT;startTime=GetTickCount();while(GetTickCount()-startTime)=busySpanj);如果没有到忙截止时间则循环等待Sleep(idleSpanj); 执行休眠 idleSpanj时间大小j+;return 0;void main()_tmain();实验结果crucru 匣用 记*(图二CPU占用率为一条正弦曲线。)五、实验收获通过本次实验,从原理上加深了对CPU调度的理解,并且对于windows任务管理器 中CPU占用率的获取方法有了了解。在具体编程中,通过控制刷新周期内CPU工作忙状态 和闲状态的时间比例,来获得预期的CPU占用率曲线,体会了人为控制CPU调度的过程。 在原理和具体的编程方法上有了巩固和提高。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号