- 1、本文档共83页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
苏州大学操作系统概念第六章全解
* * 每个哲学家按照以下的顺序轮流调用操作 pickup() 和putdown() dp.pickup (i) EAT dp.putdown (i) 哲学家就餐问题的管程解决方案 7、同步实例 Solaris同步 Solaris 实现了多种锁来支持多任务、多线程(包括实时线程)和多进程处理。 - 适应互斥量:保护那些为较短代码段所访问的数据 - 条件变量 - 信号量 - 读–写锁:用于保护经常访问但通常是只读访问的数据 - 十字转门:用于安排等待获取适应互斥和读写锁的线程链表 Linux: 使用禁止中断来实现短的临界区 Linux 提供: 信号量 自旋锁 Linux 同步 在单处理器系统中,使用中断屏蔽来保护全局资源的访问 在多处理器系统中使用自旋锁 也提供调度对象,这些对象类似于互斥、信号量等 调度对象也可以提供事件来同步(events) 事件的使用与条件变量类似 Windows 同步 Pthreads API 操作系统无关 提供了: 互斥锁 条件变量 不可移植的扩展包括: 读写锁 自旋锁 Pthreads同步 Windows同步机制 事件(Event) 临界区(Critical Section) 信号量(Semaphore) 事件 事件(Event)对象可通过通知操作的方式来保持同步,可实现不同进程中的线程同步操作(跨进程) 事件是WIN32中最灵活的线程间同步机制 事件存在两种状态: 激发状态(Signaled or True) 未激发状态(Unsignaled or False) 事件可分为两类: 手动设置: 这种对象只可能用程序手动设置,在需要该事件或者事件发生时,采用SetEvent及ResetEvent来进行设置。 自动恢复: 一旦事件发生并被处理后,自动恢复到没有事件状态,不需要再次设置。 事件 API 创建事件: HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes, // SECURITY_ATTRIBUTES结构指针,可为NULL BOOL bManualReset, // 手动/自动 // TRUE:在WaitForSingleObject后必须手动调用ResetEvent清除信号 // FALSE:在WaitForSingleObject后,系统自动清除事件信号 BOOL bInitialState, //初始状态 LPCTSTR lpName //事件的名称) 打开事件 HANDLE hEvent=OpenEvent(EVENT_ALL_ACCESS,true,“MyEvent”); 其它 ResetEvent() SetEvent() WaitForMultipleObjects() 事件例子 三个线程: 主线程 读线程 写线程 读线程必须在写线程操作结束后才能进行读; 主线程必须等读和写线程结束后才能结束 代码 include stdafx.h #include windows.h #include process.h #include iostream.h #include fstream.h HANDLE evRead,evFinish; void ReadThread(LPVOID param) { WaitForSingleObject(evRead, INFINITE); coutReadingendl; SetEvent(evFinish); } void WriteThread(LPVOID param) { coutWritingendl; SetEvent(evRead); } int main(int argc, char* argv[]) { evRead= CreateEvent(NULL,FALSE,FALSE,NULL); evFinish= CreateEvent(NULL,FALSE,FALSE,NULL); _beginthread(ReadThread,0,NULL); _beginthread(WriteThread,0,NULL); WaitForSingleObject(evFinish, INFINITE); coutEnd.endl; return 0; } 临界区 临界区:保证在某一时刻只有一个线程能访问数据的简便办法。在任意时刻只允许一个线程对共享资源进行访问 临界区包含两个操作原语: EnterCriticalSection() :进入临界区 Lea
您可能关注的文档
- 花海主体施工组织设计全解.doc
- 花店经营管理全解.ppt
- 花卉学认知实习全解.ppt
- 花的世界_小学作文指导模板全解.ppt
- 花的图片及基本信息全解.doc
- 花的形态和解剖结全解.ppt
- 花的结构和类型教学课件-马新云全解.ppt
- 花海规划概念方案全解.ppt
- 花朵的色彩全解.ppt
- 花的形态与结构课件全解.ppt
- 福莱特玻璃集团股份有限公司海外监管公告 - 福莱特玻璃集团股份有限公司2024年度环境、社会及管治报告.pdf
- 广哈通信:2024年度环境、社会及治理(ESG)报告.pdf
- 招商证券股份有限公司招商证券2024年度环境、社会及管治报告.pdf
- 宏信建设发展有限公司2024 可持续发展暨环境、社会及管治(ESG)报告.pdf
- 品创控股有限公司环境、社会及管治报告 2024.pdf
- 中信建投证券股份有限公司2024可持续发展暨环境、社会及管治报告.pdf
- 洛阳栾川钼业集团股份有限公司环境、社会及管治报告.pdf
- 361度国际有限公司二零二四年环境、社会及管治报告.pdf
- 中国神华能源股份有限公司2024年度环境、社会及管治报告.pdf
- 广西能源:2024年环境、社会及治理(ESG)报告.pdf
最近下载
- 机械行业“人形机器人的Optimus时刻”系列(五):触觉感知(电子皮肤),高山将越,坦途在望.pdf
- 培训教材污水处理厂运营管理方案.pptx VIP
- 纪检委处理回复函.docx
- AP微积分BC 2016年真题 (选择题+问答题) AP Calculus BC 2016 Released Exam and Answers (MCQ+FRQ).pdf VIP
- 武汉市2025届高中毕业生四月调研考试(四调)物理试卷(含答案).pdf
- 《西安事变》课件.ppt VIP
- 排水沟设计计算11.xls VIP
- 2010版中药典,中国药典2010年版.doc
- 精彩拍摄跟我来.docx
- 小学常用单词分类汇总衡水体英语字帖(含例句).pdf
文档评论(0)