- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统实验报告
操作系统实验报告
实验一
实验要求:
获得当前系统中正在运行的所有进程的优先级。
实验程序:
//实验一:获取当前系统的所有优先级
# include windows.h
# include tlhelp32.h
# include iostream
// 当在用户模式机内核模式下都提供所耗时间时,在内核模式下进行所耗时间的64位计算的帮助方法
DWORD GetKernelModePercentage(const FILETIME ftKernel,
const FILETIME ftUser)
{
// 将FILETIME结构转化为64位整数
ULONGLONG qwKernel =
( ( (ULONGLONG) ftKernel.dwHighDateTime) 32) +
ftKernel.dwLowDateTime;
ULONGLONG qwUser =
( ( (ULONGLONG) ftUser.dwHighDateTime) 32) +
ftUser.dwLowDateTime;
// 将消耗时间相加,然后计算消耗在内核模式下的时间百分比
ULONGLONG qwTotal = qwKernel + qwUser;
DWORD dwPct =
(DWORD) ( ( (ULONGLONG) 100*qwKernel) / qwTotal) ;
return(dwPct) ;
}
// 以下是将当前运行进程名和消耗在内核模式下的时间百分数都显示出来的应用程序
void main()
{
// 对当前系统中运行的进程拍取快照
HANDLE hSnapshot = :: CreateToolhelp32Snapshot(
TH32CS_SNAPPROCESS, // 提取当前进程
0) ; // 如果是当前进程,就将其忽略
// 初始化进程入口
PROCESSENTRY32 pe;
:: ZeroMemory(pe, sizeof(pe) ) ;
pe.dwSize = sizeof(pe) ;
// 按所有进程循环
BOOL bMore = :: Process32First(hSnapshot, pe) ;
while(bMore)
{
// 打开用于读取的进程
HANDLE hProcess = :: OpenProcess(
PROCESS_QUERY_INFORMATION, // 指明要得到信息
FALSE, // 不必继承这一句柄
pe.th32ProcessID) ; // 要打开的进程
if (hProcess != NULL)
{
DWORD dwPriority = :: GetPriorityClass(hProcess);
// 消除句柄
:: CloseHandle(hProcess) ;
std::coutProcess ID:pe.th32ProcessID,Process priority:;
switch(dwPriority)
{
case HIGH_PRIORITY_CLASS:
std :: cout High ;
break;
case NORMAL_PRIORITY_CLASS:
std :: cout Normal ;
break;
case IDLE_PRIORITY_CLASS:
std :: cout Idle ;
break;
case REALTIME_PRIORITY_CLASS:
std :: cout Realtime ;
break;
default:
std :: cout unknown ;
break;
}
std::coutstd::endl;
}
// 转向下一个进程
bMore = :: Process32Next(hSnapshot, pe) ;
}
}
实验结果:
实验四
实验内容:
使用互斥对象实现线程同步。
实验程序:
// mappings项目
# include windows.h
# include iostream
// 仲裁访问的互斥体
static HANDLE g_hMutexMapping = INVALID_HANDLE_VALUE;
/
您可能关注的文档
最近下载
- 优衣库战略.ppt VIP
- 人人能懂的艺术设计知到智慧树期末考试答案题库2024年秋湖北经济学院法商学院.docx VIP
- 水污染控制课程设计某城市日处理16万m3污水处理厂工艺设计.docx VIP
- 湖南省炎德英才名校联考联合体2025年春季高二年级第二次联考英语试卷((原卷版).docx VIP
- Berg平衡量表的评分标准.doc VIP
- 10千伏电容器故障分析与处理.docx VIP
- 优衣库25春夏战略:让极致单品学会读心术.pptx
- [教育学]教育行动研究.ppt VIP
- 2025年我国装备制造业发展形势展望.docx VIP
- 2024年自考《中国古代文学史(二)》笔记汇总.pdf VIP
原创力文档


文档评论(0)