1 / 15
文档名称:

《操作系统实验》.pdf

格式:pdf   大小:212KB   页数:15页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

《操作系统实验》.pdf

上传人:yinjiong623147 2021/5/12 文件大小:212 KB

下载得到文件列表

《操作系统实验》.pdf

文档介绍

文档介绍:操作系统实验












信息系统及安全与对抗实验中心





1
实验一:CPU 占用率控制
一、实验目的
1. 通过编写和调试程序以加深对 CPU 调度的理解;
2. 熟悉 Windows 任务管理器 CPU 信息的获取和使用方法;
二、实验要求
编写程序实现下面任意一题:
1. CPU 占用率为一条直线,固定在 50%;
2. CPU 占用率为一条正弦曲线。
参考:
1. 在任务管理器的一个刷新周期内,CPU 忙(执行应用程序)的时间和刷新周期总时间
的比率,就是 CPU 的占用率,也就是说,任务管理器中显示的是每个刷新周期内 CPU
占用率的统计平均值。
2. 单核环境下,空死循环会导致 100%的 CPU 占有率。
#include "" //windows 系统 API 库包含函数
#include "" //标准输入输出函数库
#include ""

const double SPLIT = ; //正弦曲线参数步长
const int COUNT = 200; //总循环次数
const double PI = ; //为了计算正弦曲线函数使用的л参数
const int INTERVAL = 300; //间歇时间设定

int main(int argc, char * argv[])
{
SetProcessAffinityMask(
GetCurrentProcess(), //调用函数返回当前进程对象的伪句柄
0x00000001 //cpu mask
);

// GetCurrentProcess()返回当前进程对象的伪句柄,可以解释为当前进程句柄的特
殊常数,父进程可以在需要使用它时,即任何时候可以使用此句柄,该伪句柄不能由子进程
来继承。该函数为 SetProcessAffinityMask()提供一个句柄。
//SetProcessAffinityMask(
HANDLE hprocess//进程句柄
DWORD dwprocessAffinity Mask//进程亲缘掩码
)这里所谓进程亲缘对多处理器而言,系统尽量用线程上次运行使用的 CPU 来进行进
程。

DWORD busySpan[COUNT]; //cpu 忙队列
DWORD idleSpan[COUNT]; // cpu 不工作队列
int half = INTERVAL / 2; //取参数一半
double radian = ;
for(int i = 0; i < COUNT; i++) //循环 200 次
2
{
busySpan[i] = (DWORD)(half + (sin(PI * radian) * half)); // 计算正弦