




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
可编辑 1 第二章WindowsCE体系结构与功能 可编辑 2 教学目的 熟悉进程的同步与互斥的概念 理解WindowsCE5 0中进程间通信的手段 并能够理解并编写简单的多线程应用程序 可编辑 3 项目4 多线程 PDA下多任务实现 本节课程主要知识点WindowsCE5 0进程的同步与互斥 重点 WindowsCE5 0进程间通信 难点 可编辑 4 教学重点同步与互斥的概念教学难点进程的通信 可编辑 5 进程的互斥 系统中的很多资源是共享资源 有些资源每时刻只允许由一个进程使用 同时请求该资源的进程就需要竞争使用这些资源 进程的这种关系为进程的互斥 可编辑 6 生活中的实例 共享资源每时每刻只允许一个人使用 这样的例子在生活中多的很吧 图书馆的座位 公用电话 同学们自己找找看 可编辑 7 临界资源criticalresource 临界资源一次仅允许一个进程使用的资源 很多物理设备都属于临界资源 例如 纸带或卡片输入机 打印机 磁带机等 除了物理设备外 许多变量 数据 表格 队列等也可以由若干个进程共享使用 但每时刻仅允许一个进程使用 这些资源也属于临界资源 可编辑 8 临界区criticalsection 临界区针对同一临界资源进行操作的程序段 也称为互斥段 任一共享进程一旦对临界资源开始操作 则在该操作结束之前 其它进程就不能对该临界资源进行处理 也就是说 执行这些操作的程序段必须是互斥执行的 可编辑 9 2 2 4同步产生的原因 多线程 分时共享技术的使用 作用 对多线程共享资源的访问加以保护 必要性 造成数据损坏或者死锁 WindowsCE的同步机制MutexEventSemaphoreCriticalSectionInterlockedFunctions同步对象的状态通知 Signaled 阻塞线程转为就绪态 等待调度执行未通知 Non Signaled 表示该同步对象被一个或多个线程占有 不能被其它等待的线程占有 线程A读写数据时 另一个线程B也对这个数据进行读写 导致数据冲突 引起数据混乱 线程A需要线程B中的数据才能够运行 而线程B也需要线程A中的数据才能运行 可编辑 10 同步的基本原理 当某个同步对象的状态变为通知状态时 等待在它上面的阻塞线程会得到通知 并且转为就绪态 等待调度执行 同步对象的使用由句柄 Handle 表示 一个32位的指针句柄的指向表示该对象的一个数据结构可以有名字也可以没有名字若跨进程使用同步对象 一般要命名 等待函数 见P42 WaitForSingleObject等待单个同步对象WaitForMultipleObjects等待多个同步对象 两个函数都会阻塞当前的调用线程 直到等待的同步对象变为通知状态 可编辑 11 2 2 4 1MutexMutualExclusion 互斥同时只有一个线程可以占有Mutex对象当共享资源同时只能被一个线程访问 使用Mutex进行同步相关函数CreateMutex创建一个有名或无名的Mutex对象bInitialOwner参数指定该Mutex是否为创建的线程所占有ReleaseMutex释放对Mutex对象的占有 可编辑 12 2 2 4 2Semaphore信标或信号灯带有引用计数的Mutex 即带有计数n 表示同时最多可以有n个线程占有该信号灯若共享资源同时被固定数量的线程使用 则选用Semaphore进行同步相关函数CreateSemaphore创建信号灯参数IMaximumCount指定最多可有多少个线程占有该信号灯对象参数IInitialCount为信号灯指定初始计数 可编辑 13 ReleaseSemaphore使用此函数释放信号灯对象 则IInitialCount指定的初始值增加IReleaseCount当有线程使用ReleaseSemaphore函数释放Semaphore对象时 该初始值增加1 当有线程使用等待函数占有信号灯时 该初始值减1若信号灯的计数大于0 则信号灯处于通知状态 若计数小于0 处于未通知状态 可编辑 14 事件Event 事件事件就是一个标志 不具备其它信息 在一个进程中将事件设置为通知状态 则所有等待该事件的进程将进入就绪状态 没有进程发送该事件的通知信号 则所有等待该事件的进程均处于阻塞状态 事件在进程的同步与互斥中用的最多 可编辑 15 2 2 4 3Event当一个线程需要通知其它线程某个时间发生 则使用事件 Event 同步对象此同步对象使用比较广泛 在WindowsCE驱动程序中 中断处理线程就是使用事件同步对象来等待中断发生 相关函数CreateEvent参数bInitialState参数指定Event的初始状态 若为True则新创建的Event最开始就是通知状态参数bManualReset用来指定Event是否为人工重置 人工的话 等待该Event的所有线程均变为就绪态 而Event还处于通知状态 调用ResetEvent 自动的话 等待该Event的线程中只有一个线程变为就绪态 然后自动变为未通知状态 SetEventResetEventPulseEvent 创建一个有名或无名的事件对象 把事件对象设置为signal状态 把事件设置为非signal状态 把事件设置为signal状态 然后在释放一定量的线程之后 转回非signal状态 可编辑 16 用户态下的同步方法CriticalSection互锁函数 InterlockedFunctions因为没有对应WindowsCE内核对象 所以用户态下的同步对象不能跨进程运行效率比内核同步对象高2 2 4 4CriticalSection应用程序分配的一个数据结构用来把一段代码标记为临界区 从而保证此区域内部代码的访问是串行的相关函数 见P47 使用临界区时 一般为每一个共享资源分配一个临界区变量 同时把尽可能少的代码放在临界区中 可编辑 17 2 2 4 5互锁函数可对变量和指针进行原子的读 写操作相关函数InterlockedIncrementInterlockedDecrementInterlockedExchangeInterlockedTestExchangeInterlockedCompareExchangeInterlockedCompareExchangePointerInterlockedExchangePointerInterlockedExchangeAdd 可编辑 18 进程间通信 进程通信是指进程之间可直接以较高的效率传递较多数据的信息交换方式 在进程间传递大量信息需要操作系统提供相应的机制 WindowsCE5 0提供的进程间通信机制包括共享内存 消息传递和管道 可编辑 19 管道Pipe 管道也称共享文件方式 基于文件系统 利用一个打开的共享文件连接两个相互通信的进程 文件作为缓冲传输介质 可编辑 20 2 2 5进程间通信进程通信的由来WindowsCE具有内存保护机制 不允许应用程序间有计划的共享数据若并发发生在不同的进程之间 此时操作系统需要提供一种机制把一个进程地址空间中的数据复制到另外一个进程的地址空间中WindowsCE提供多种进程间通信的方式文件映射 管道 点对点消息队列 消息传递 剪贴板COM DCOM网络套接字WM COPYDATA消息 可编辑 21 共享内存 共享内存在相互通信的进程间设有公共内存 一组进程向该公共内存中写 另一组进程从公共内存中读 通过这种方式实现两组进程间的信息交换 共享内存的物理意义是 同一块物理内存被映射到相互通信的各进程的地址空间内 共享内存是最快的进程间通信方式 可编辑 22 2 2 5 1文件映射FileMapping 内存映射文件 Memory MappedFile MMF 在进程的共享虚拟地址空间内保留一个地址空间的区域 同时将文件所在的物理内存映射到此区域WindowsCE中 内存映射文件被映射到4GB虚拟地址空间的0 x42000000 0 x7FFFFFFF的进程共享区域中内存映射文件并不是简单的文件I O操作 实际用到WindowsCE中的内存管理相关函数 见P50 CreateFileForMappingCreateFileMappingMapViewOfFileUnmapViewOfFile 可编辑 23 文件映射的过程 CloseHandle CreateFile创建或打开一个文件 标识磁盘上将要用作内存映射文件的文件 CreateFileForMapping专用于创建内存映射文件用的文件 向内核空间提供回调 保证其创建的文件可被其他进程使用 指定文件映射对象需要的物理存储空间 通过此函数创建一个文件映射内核对象以告诉系统文件的尺寸以及访问文件的方式 此函数负责通过系统的管理将文件映射对象的全部或部分映射到进程地址空间 此函数负责从进程的地址空间撤销文件数据的映像 通过CloseHandle关闭前面创建的文件映射对象和文件对象 可编辑 24 消息 消息是在进程之间的一种通信机制 消息没有定义格式 所有的消息都是字节流 没有特定的含义 从应用观点看 根据应用定义的消息格式 消息可被解释成特定的含义系统允许一个应用程序或驱动程序创建自己的消息队列 消息队列既可以作为在进程之间传递数据的工具 也可以作为进程之间同步工具 只占用很小的内存 可编辑 25 2 2 5 2点对点消息队列Point to PointMessageQueues 常用的系统模块之间进行通信的方式一个先进先出的队列结构特色消息可为任意类型的数据消息队列可用来进行同步严格按照先进先出的方式基于点对点的操作 不能进行广播相关函数 P53 CreateMsgQueueOpenMsgQueueGetMsgQueueInfoReadMsgQueueWriteMsgQueueCloseMsgQueue 创建或打开一个消息队列 对一个现存的消
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年虚拟现实行业技术创新与市场应用前景分析报告
- 2025年电子行业智能家居设备市场前景研究报告
- 2025年医疗科技行业远程医疗发展前景分析报告
- 2025年工业设计行业工业设计创新与应用前景研究报告
- 商场保洁安全作业培训总结课件
- 南京市2025江苏南京市产品质量监督检验院招聘编外工作人员11人笔试历年参考题库附带答案详解
- 云阳县2025二季度重庆云阳县事业单位考核招聘98人笔试历年参考题库附带答案详解
- 2025河北唐山瑞丰钢铁春季校园招聘招38人笔试参考题库附带答案详解
- 2025广东中山长虹电器有限公司招聘散件工艺工程师等岗位3人笔试参考题库附带答案详解
- 2025年福建福州市鼓楼区城投集团招聘18人笔试参考题库附带答案详解
- 冲压质量培训
- 2025年辽宁交投集团招聘笔试参考题库含答案解析
- 设备维护与保养手册
- 喷雾干燥塔操作规程模版(3篇)
- 《天疱疮诊断及治疗》课件
- 学校教代会代表换届选举方案
- 现代交换原理第二章
- 2024版工业润滑油销售协议范例版
- 企业级智能数据分析系统开发与服务合同
- 2024数据要素典型案例
- Unit 3 She has long hair. (教学设计)-2024-2025学年湘鲁版英语五年级上册
评论
0/150
提交评论