OS实验报告格式.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2012-2013学年第一学期 实验一 Windows多线程 【开发语言及实现平台或实验环境】 C++/C# Microsoft Visual Studio 6.0/ Microsoft Visual Studio .NET 【实验目的】 (1) 进一步理解操作系统的并发性; (2) 了解Windows线程创建方法,并通过查阅资料理解各参数的含义; (3) 了解多线程程序设计方法,并进行简单应用。 【实验要求】 (1) 逐程序进行简要分析、运行各程序并仔细阅读注释; (2) 查阅MSDN或其他资料,掌握相关系统调用使用方法和参数含义; (3) 完成实验报告。 【实验结果与分析】 Sleep是阻塞线程函数。它会在当前语句阻塞一段时间,参数是以1/1000秒为单位的Sleep(10) ? 使当前线程放弃目前的时间片,并且在 ? 10ms ? 内不会被再次调度。thread1 is sell tickets:时间片就停了,tickets没--,还可以运行thread2 is sell tickets:tickets—也就是说tickets变为0,返回再运行thread1 is sell tickets时就卖0号票了 【实验思考及总结】 ……………………… 加入循环,使得俩个进程交替执行 Sleep是阻塞线程函数。它会在当前语句阻塞一段时间,参数是以1/1000秒为单位的 实验二 Windows线程同步机制 【开发语言及实现平台或实验环境】 C++/C# Microsoft Visual Studio 6.0/ Microsoft Visual Studio .NET 【实验目的】 (1) 了解Windows线程同步机制; (2) 了解互斥体,并通过查阅资料理解互斥体对象的使用方法; (3) 了解事件,并通过查阅资料理解事件对象的使用方法; (4) 了解关键区,并通过查阅资料理解关键区对象的使用方法; (5) 了解信号量,并通过查阅资料理解信号量对象的使用方法 【实验要求】 (1) 逐程序进行简要分析、运行各程序并仔细阅读注释; (2) 查阅MSDN或其他资料,掌握相关系统调用使用方法和参数含义; (3) 完成实验报告。 【实验结果与分析】 thread1 is sell tickets:时间片就停了,tickets没--,还可以运行thread2 is sell tickets:tickets—也就是说tickets变为0,返回再运行thread1 is sell tickets时就卖0号票了 【实验思考及总结】 Sleep(10) ? 使当前线程放弃目前的时间片,并且在 ? 10ms ? 内不会被再次调度线程之间的同步使用一些核心对象:如thread,? process, evnet, mutex, semaphore. 在线程之间使用等待函数如WaitForSingleObjects,? WaitForMultipleObjects. 等待函数使用核心对象的handle作为参数,如果handle被激发,则执行下一步。 handle被激发的条件: (handle是一段内存指针,为了掩藏内部实现而作的一个类型转化指针)激发:---我的理解是资源未被战胜。未激发: ---资源正在被占用。 eg: 1)thread, process被终止,则激发。 2)event: 要通过它的API来手动激发,是最灵活的激发方式,可被所有线程使用。 3)mutex: 没被任何线程所拥有,则激发。 1)临界区: CRITICAL_SECTION 适用范围: 单一进程的各线程之间用来排它性占有特性: 局部性对象; 快速而有效. 无法监测是否被线程放弃函数: EnterCriticalSection LeaveCriticalSection 2)Mutex: 适用范围: 不同线程之间用来排它性占有特性: 核心对象, 可以使用wait进行等待,只能被拥有线程所释放函数:CreateMutex ReleaseMutex 3)semaphore: 信号量 适用范围: 用来限制资源占用特性: 核心对象,没有拥有者,任何线程都可释放函数:CreateSemaphore OpenSemaphore ReleaseSemaphore 4)Event: 适用范围: 同来控制对象信号的接收,常与信号系统结合起来特性: 核心对象函数: CreateEvent OpenEvent PulseEvent SetEvent ResetEvent ? 5)Interlocked 简单的原子操作,如写文件中对文件中字节范围的锁定_locking NOTE: 线程同步中很重要的可归纳为锁系统lock和信号系统signal lock包括:CRITICAL_SECTION, Mute

文档评论(0)

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

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

1亿VIP精品文档

相关文档