深圳职业技术学院windowsce嵌入式系统开发课程课件进程的同步与互斥

上传人:E**** 文档编号:91056679 上传时间:2019-06-21 格式:PPT 页数:24 大小:145.50KB
返回 下载 相关 举报
深圳职业技术学院windowsce嵌入式系统开发课程课件进程的同步与互斥_第1页
第1页 / 共24页
深圳职业技术学院windowsce嵌入式系统开发课程课件进程的同步与互斥_第2页
第2页 / 共24页
深圳职业技术学院windowsce嵌入式系统开发课程课件进程的同步与互斥_第3页
第3页 / 共24页
深圳职业技术学院windowsce嵌入式系统开发课程课件进程的同步与互斥_第4页
第4页 / 共24页
深圳职业技术学院windowsce嵌入式系统开发课程课件进程的同步与互斥_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《深圳职业技术学院windowsce嵌入式系统开发课程课件进程的同步与互斥》由会员分享,可在线阅读,更多相关《深圳职业技术学院windowsce嵌入式系统开发课程课件进程的同步与互斥(24页珍藏版)》请在金锄头文库上搜索。

1、项目5:多线程-PDA下多任务实现 (2),本节课程主要知识点 Windows CE5.0进程的同步与互斥 Windows CE5.0进程间通信,重点和难点,重点 进程的同步与互斥 难点 进程的通信,Windows CE5.0进程的同步与互斥,进程的同步,进程相互之间是异步运行的。 协同工作的几个进程需要在某些确定的点上协调它们的工作。 一个进程达到了这些点后,除非另一进程已经完成了某些操作,否则就不得不停下来以等待另一伙伴进程为它提供消息,在未获得消息之前,该进程处于等待状态,获得消息后被唤醒进入就绪态。 这就是进程间的同步。,生活中的实例,汽车司机和售票员就是两个进程。 汽车司机负责开车、

2、进站、开车门、关车门及出站。 售票员负责售票、进出站后观察车门,给司机发关车门的消息。 正常状态下,各自活动。司机开车,售票员售票。 在进出站时双方要进行同步。,进程的互斥,系统中的很多资源是共享资源。有些资源每时刻只允许由一个进程使用,同时请求该资源的进程就需要竞争使用这些资源,进程的这种关系为进程的互斥。,生活中的实例,共享资源每时每刻只允许一个人使用,这样的例子在生活中多的很吧? 图书馆的座位,公用电话 同学们自己找找看?,临界资源critical resource,临界资源 一次仅允许一个进程使用的资源。 很多物理设备都属于临界资源。例如:纸带或卡片输入机、打印机、磁带机等。 除了物理

3、设备外,许多变量、数据、表格、队列等也可以由若干个进程共享使用,但每时刻仅允许一个进程使用,这些资源也属于临界资源。,临界区critical section,临界区 针对同一临界资源进行操作的程序段,也称为或互斥段。 任一共享进程一旦对临界资源开始操作,则在该操作结束之前,其它进程就不能对该临界资源进行处理。也就是说,执行这些操作的程序段必须是互斥执行的。,Windows CE5.0的同步机制,为解决进程之间的同步或因为争夺资源而引起的互斥问题,Windows CE5.0提供了以下运行于核心态的机制: 信号量 事件 互斥体 运行于用户态的机制: 临界区 互锁函数,信号量Semaphore,信号

4、量 一个具有整型值的变量。 在它之上定义三个操作: 信号量初始化。初值是一个正整数n,n的值也表明该资源的数量。 P操作。P操作使信号量减1。如果值变成负数,则执行P操作的进程被阻塞。 V操作。V操作使信号量值加1,如果值不是正数,则被P操作阻塞的进程被解除阻塞。,信号量的主要函数,CreateSemphore 创建信号量 ReleaseSemphore 释放信号量 WaitForSingleObject WaitForMultipleObjects 申请信号量,事件Event,事件 事件就是一个标志,不具备其它信息。 在一个进程中将事件设置为通知状态,则所有等待该事件的进程将进入就绪状态。

5、没有进程发送该事件的通知信号,则所有等待该事件的进程均处于阻塞状态。 事件在进程的同步与互斥中用的最多。,事件的相关函数,SetEvent 置事件为有信号状态 ResetEvent 置事件为无信号状态 PulseEvent 将事件对象置为有信号状态,然后立即置为无信号状态 OpenEvent 打开已经创建的事件对象,一般用于不同进程内的线程同步 WaitForSingleObject 等待事件发生 WaitForMultipleObjects,互斥体Mutex (Mutual Exclusion),互斥体 CMutex类 的一个对象,在只允许一个进程互斥访问临界资源时使用。 利用互斥体可以让不

6、同进程中的线程互斥访问一个共享资源。,互斥体的相关函数,CreateMutex() 创建互斥体 OpenMutex() 打开互斥体 ReleaseMutex() 释放互斥体,临界区Critical Section,临界区 是应用程序定义的一个数据结构,用来把一段代码标记为临界区。 临界区可以保证在临界区内所有被访问的资源不被其他进程访问,直到当前进程执行完临界区的代码为止。,临界区的相关函数,IntializeCriticalSection 初始化临界区 EnterCriticalSection 进入临界区 LeaveCriticalSection 离开临界区 DeleteCriticalSe

7、ction 删除临界区,Windows CE5.0进程间通信,进程间通信,进程通信是指进程之间可直接以较高的效率传递较多数据的信息交换方式。 在进程间传递大量信息需要操作系统提供相应的机制。 WindowsCE5.0提供的进程间通信机制包括共享内存、消息传递和管道。,共享内存,共享内存 在相互通信的进程间设有公共内存,一组进程向该公共内存中写,另一组进程从公共内存中读,通过这种方式实现两组进程间的信息交换。 共享内存的物理意义是,同一块物理内存被映射到相互通信的各进程的地址空间内。 共享内存是最快的进程间通信方式。,消息,消息是在进程之间的一种通信机制。 消息没有定义格式,所有的消息都是字节流

8、,没有特定的含义。 从应用观点看,根据应用定义的消息格式,消息可被解释成特定的含义 系统允许一个应用程序或驱动程序创建自己的消息队列,消息队列既可以作为在进程之间传递数据的工具,也可以作为进程之间同步工具。 只占用很小的内存。,消息的相关函数,CreateMsgQueue 创建一个消息队列 WriteMsgQueue 写入消息到消息队列 ReadMsgQueue 从消息队列读出消息 CloseMsgQueue 关闭消息队列缓冲区 OpenMsgQueue 打开其它进程中创建 的消息队列。,管道Pipe,管道 也称共享文件方式,基于文件系统,利用一个打开的共享文件连接两个相互通信的进程,文件作为缓冲传输介质。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号