预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共134页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实时操作系统同步(tóngbù)互斥与通信并发的进程之间的协作(xiézuò)包括如下类型: 进程互斥 多个进程不能同时使用同一个资源,某个进程使用该资源时,其他进程必须等待。保证各个进程不同时进入临界区,有效访问临界资源。 进程同步 多个进程的调用存在时序关系,某些进程的执行必须先于另一些进程。保证进程运行的合理顺。 进程通信 多个进程之间传递消息。 互斥和同步是进程并发的两个要素 ISRx进程(jìnchéng)互斥与同步考虑一个支持单用户单处理器、多道程序设计系统 将其当作一个共享过程,载入到所有应用程序公用的全局存储区中。这样每个应用程序都能使用这个过程,由于每个应用程序只需使用echo过程的一个副本,从而节省(jiéshěng)空间 进程间共享主存是非常有用的,它允许进程间有效而紧密的交互,有利于进程的相互通信。但是,共享也可能会带来一些问题getchar()P1在单处理器平台上,嵌入式操作系统内核提供的同步、互斥与通信机制主要包括: 信号量(semaphore),用于互斥与同步 事件(组)(eventgroup),用于同步 异步信号(asynchronoussignal),用于同步 邮箱(yóuxiāng)(mailbox)、消息队列(messagequeue),用于消息通信 管道(pipe),提供非结构化数据交换和实现同步忙等待模型 持续检查一个变量,直到它可用为止 睡眠-唤醒模型 通过PV原语操作保证进程间的互斥 消息传递模型 通过消息传送(chuánsònɡ)系统实现多进程之间的互斥第一节信号量临界(línjiè)资源和临界(línjiè)区进程P1和P2共享同一打印机资源,其操作流程如下(rúxià): p1:entrycode使用打印机exitcode p2:entrycode使用打印机exitcode 系统打印机即为——临界资源 P1和p2的访问临界资源打印机的代码即为——临界区临界区的进入准则 空闲让进:临界资源空闲时,允许进程进入临界区 忙着等待:临界资源正在被访问时,其他需要进入临界区的进程必须等待 有限等待:保证进程在有效的时间内进入临界区,避免(bìmiǎn)“死等” 让权等待:当进程不能进入临界区时,应立即释放处理机,以免其它进程“忙等”进程互斥进入临界区的实现方法 硬件方法 禁止中断 在进程进入临界区之后,禁止该进程中断 专用机器指令 TS指令,Swap指令 软件(ruǎnjiàn)方法 信号量和PV操作信号量是一个数据结构,其定义(dìngyì)如下: structsemaphore { intvalue; structPCB*queue; } 信号量semaphore包括一个整型值和一个等待队列。信号量只能通过P原语和V原语访问。什么(shénme)是信号量P原语——P(S) S:=S-1; 如果S>=0,则表示有资源,该进程继续执行; 如果S<0,则表示已无资源,执行原语的进程被置成阻塞状态,并使其在S信号量的队列中等待(děngdài),直至其他进程在S上执行V操作释放它为止P原语P原语操作原型(yuánxíng) voidwait(semaphores)// { s.value=s.value–1; if(s.value<0) block(s.queue);//阻塞进程 }V原语——V(S) S:=S+1 如果S>0,则该进程继续执行 如果S<=0,说明有进程被挂起,则唤醒一阻塞进程,即从S信号量的等待队列首摘下一个PCB,将其置为就绪(jiùxù)状态,执行V(S)者继续执行 P操作可能会引起进程的阻塞,V操作不会引起本身进程状态的变化,但可能唤醒其他进程,使其从阻塞状态转变到就绪(jiùxù)状态V原语V原语操作原型 voidsignal(semaphores) { s.value=s.value+1; if(s.value<=0) wakup(s.queue);//唤醒(huànxǐng)进程 }P原语的作用 申请临界(línjiè)资源,如果该资源正被其他进程使用,则等待。 V原语的作用 释放临界(línjiè)资源,如有其他进程等待该资源,则唤醒。 使用PV原语可以解决进程的互斥和同步哲学家就餐(jiùcān)问题 为克服死锁危险,可以再另买5跟筷子(一个更卫生的解决方案)或者教会哲学家仅用一跟筷子吃面 另一种方法是,考虑增加一位服务员,他只允许4位哲学家同时坐上餐桌吃饭(chīfàn),由于最多有4位哲学家就座,因而至少有一位哲学家可以拿到两跟筷子,这里再次使用了信号量。类似资源(zīyuán)定序的解决方案: 规定哲学家取筷子的顺序:单号哲学家先取右边的筷子再取左边的筷子;双号哲学家先去左边的筷子再取右边的筷子。 在取第一根筷子时总有哲学家没拿到筷子,