实习一:多进程(线程)实现快速排序.ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实习一:多进程(线程)实现快速排序

操作系统实习习题课 内容 实习一:压力测试 实习二、三:并发控制 实习四:多进程(线程)快速排序 实习五:快速文件系统 实习一:压力测试 要求 要求 编写一组小程序测试你的Windows 2K/XP系统创建进程和线程的能力 步骤 压力测试:创建尽可能多的进程和线程,得到这个数目的极限, 进程和线程启动后可以进入睡眠状态或者死循环,考虑这两种情况对结果的影响 性能测试:测试系统创建单个进程和线程的平均速率以及速率变化情况,并且对不同的优先级进行测试,研究优先级对其影响 实习一:压力测试 涉及函数 BOOL CreateProces ( LPCTSTR lpApplicationName, LPTSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCTSTR lpCurrentDirectory, LPSTARTUPINFO lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation ); 实习一:压力测试 涉及函数 BOOL CreateThread ( LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId ); 压力测试 基本思路 睡眠状态 挂起操作在父进程通过将dwCreationFlags设置为CREATE_SUSPENDED选项实现 死循环 父进程产生子进程后子进程立即执行,并且执行一个死循环程序 线程vs进程 分别使用CreateProcess和CreateThread 压力测试 示例代码 CreateProcess(szAppName, szAppName, NULL, NULL, FALSE, 0, NULL, NULL, si, pi) CreateProcess(szAppName, szAppName, NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, NULL, si, pi) CreateThread(NULL,0,ThreadFunc,NULL,0,dwThreadId)) CreateThread(NULL,0,ThreadFunc,NULL,CREATE_SUSPENED, dwThreadId)) 压力测试 结果 进程 子进程挂起: 第一次:3607 第二次:3607 第三次:3610 平均:3608(依赖于具体机器) 死循环 未知(非常慢,8个小时1000多个进程) 线程 子线程挂起: 第一次:2031 第二次:2031 第三次:2031 平均:2031(操作系统限制) 死循环 同样非常慢(2031) 压力测试 结果分析 挂起vs死循环 挂起 创建速度相对要快,容易达到上限 死循环 死循环:每个子进程都持续占用cpu,cpu利用率持续为100%。创建的速度非常慢。很难达到上限 进程vs线程 对于挂起的情况,线程产生速度比进程快很多 线程上限是固定的,受到每个进程能创建线程的上限限制。而进程数上限不确定,受限于系统性能 对于死循环的情况类似,但是创建线程要比进程的情况要快 性能测试 基本思路 使用不同优先级测试 创建进程、线程函数的dwCreationFlags参数指定优先级: REALTIME_PRIORITY:最高优先级 HIGH_PRIORITY_CLASS:高优先级。例如任务管理器 NORMAL_PRIORITY_CLASS:普通优先级,默认设置 IDLE_PRIORITY_CLASS:最低优先级,例如屏保 性能测试 示例代码 CreateProcess(szAppName,szAppName, NULL, NULL, FALSE, REALTIME_PRIORITY, NULL, NULL, si, pi) CreateProcess(szAppName,szAppName, NULL, NULL, FALSE, HIGH_PRIORITY_CLASS, NULL, NULL, si, pi) CreateProcess(szAppNam

文档评论(0)

magui + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8140007116000003

1亿VIP精品文档

相关文档