西电操作系统大作业.doc
《西电操作系统大作业.doc》由会员分享,可在线阅读,更多相关《西电操作系统大作业.doc(13页珍藏版)》请在沃文网上搜索。
1、操作系统大作业姓名:XXX 学号:02113XXX实验一一、实验目的获得当前系统中正在运行的所有进程的优先级。二、 设计思路和程序流程设计思路:通过CreateToolhelp32Snapshot函数获得系统中正在运行的进程的快照,再通过PROCESSENTRY32结构逐个获取并输出快照中进程的名称、ID与优先级。程序流程如下图所示:是否是最后一个进程获取快照句柄开始获取首个进程的PROCESSENTRY输出进程名称、ID与优先级Y结束获取下一进程的PROCESSENTRYN三、 API函数使用说明CreateToolhelp32Snapshot():获得系统中正在运行的进程的快照OpenPr
2、ocess():提取已经存在进程的句柄GetPriorityClass():获取进程的优先权CloseHandle():消除句柄四、 程序设计及程序代码分析/实验一# include # include # include # include using namespace std; / 当在用户模式机内核模式下都提供所耗时间时,在内核模式下进行所耗时间的64位计算的帮助方法DWORD GetKernelModePercentage(const FILETIME & ftKernel, const FILETIME & ftUser)/将FILETIME结构转化为64位整数ULONGLONG
3、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) ;/ 以下是将当前运行进程名和消
4、耗在内核模式下的时间百分数都显示出来的应用程序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 hProc
5、ess = : OpenProcess( PROCESS_QUERY_INFORMATION,/ 指明要得到的信息 FALSE,/ 不必继承这一句柄 pe.th32ProcessID) ;/ 要打开的进程if (hProcess!=NULL)DWORD dwPriority=:GetPriorityClass(hProcess); / 消除句柄 : CloseHandle(hProcess);std:cout n进程名称:leftsetw(20)pe.szExeFile进程ID:leftsetw(10)pe.th32ProcessID进程优先权:leftsetw(10);/打印进程名称、ID及
6、优先权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 ;break;std:coutstd:endl;/ 转向下一个进程 bMore=:Process32Next(hSnap
7、shot, &pe);五、 实验结果及结果分析实验结果如下图所示:结果分析:实验结果符合实际情况,实验成功。附录实验环境:windows7旗舰版Visual C+ 6.0环境实验二一、 实验目的进程压力测试二、 设计思路和程序流程设计思路:1、用循环的办法产生所要求的进程(线程),循环的退出条件是不能产生进程时,即CreateProcess()返回0时,统计产生的进程(线程)数目;2、子进程的运行方式分别考虑:子进程挂起或睡眠,挂起操作在父进程通过CREATE_SUSPENDED选项完成;子进程死循环,即父进程产生子进程后子进程立即执行,并且执行一个死循环;3、在进程被赋予不同的优先级情况下的
8、结果。三、 API函数使用说明GetModuleFileName():提取用于当前可执行文件的文件名CloseHandle():消除句柄GetCurrentProcessId():获取当前进程一个唯一的标识符四、 程序设计及程序代码分析/ proccreate项目# include # include # include / 创建传递过来的进程的克隆过程并赋于其ID值void StartClone(int nCloneID)/ 提取用于当前可执行文件的文件名TCHAR szFilenameMAX_PATH ;: GetModuleFileName(NULL, szFilename, MAX_P
9、ATH) ;/ 格式化用于子进程的命令行并通知其EXE文件名和克隆IDTCHAR szCmdLineMAX_PATH ;: sprintf(szCmdLine, %s %d, szFilename, nCloneID) ;/ 用于子进程的STARTUPINFO结构STARTUPINFO si;: ZeroMemory(reinterpret_cast (&si) , sizeof(si) ) ;si.cb = sizeof(si) ;/ 必须是本结构的大小/ 返回的用于子进程的进程信息PROCESS_INFORMATION pi;/ 利用同样的可执行文件和命令行创建进程,并赋于其子进程的性质B
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 作业