码迷,mamicode.com
首页 > 其他好文 > 详细

IPC的使用

时间:2018-03-27 12:26:49      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:tip   mes   ica   传递   roc   heap   自动   多个   shared   

IPC,Inter-Processor Communication是SYS/BIOS处理核间通信的组件:

IPC的几种应用方式:

1.最小使用(Minimal use)

这种情况是通过核间的通知机制(notification)来实施的,而一个通知所携带的信息是非常小的(一般是32bits),所以称为最小使用。这种方式一般是用于处理核间的简单同步,却无法处理复杂的消息传递。

这种情况下,需要利用到Notify模块的APIs函数,比如通过Notify_sendEvent()函数给某个特定核传递一个事件,我们可以给特定事件动态注册反馈函数。由于一个通知(notification)所携带的信息是极少的,所以只能给处理器发送一个事件号,而这个事件号所代表的反馈函数决定之后的动作。另外一些数据以函数参数方式,也可以被送出。

技术分享图片

2.增加数据通路(Add data passing)

这种情况是在前面的最小使用机制下,在核间增加了一个传递链表元素的数据通路,这个链表的实施一般是使用共享内容并通过门(gates)来管理同步。

 

这种情况是在最小使用上,增加了一个ListMP模块用于共享链表元素。

 

ListMP模块是一个双向链表,另外ListMP需要用到共离内存,所以SharedRegion模块也需要被使用,另外ListMP通过NameServer模块中来管理名称/值,同时使用GateMP模块来防止链表元素被多个处理器同时读取。
技术分享图片

3.增加动态分配(Add dynamic allocation)

这种情况下,增加了从堆中动态分配链表元素的功能。

这种情况在上种情况下,增加了一个Heap*MP模块,这个模块主要用于从堆中给链表动态分配内存。

技术分享图片

 

4.强大但易用的消息机制(Powerful but easy-to-use messaging)

这种情况下利用MessageQ模块来传递消息。 

除了Notify通知机制,还可以利用MessageQ来实现更为复杂的核间通信,在这种情况下,只需要配置MultiProc和SharedRegion模块就可以了,而Ipc_start()函数将自动为我们实现上面灰色模块的配置。

技术分享图片

 

 

 

 

 

 

 

 

 

IPC的使用

标签:tip   mes   ica   传递   roc   heap   自动   多个   shared   

原文地址:https://www.cnblogs.com/xiaojianliu/p/8656382.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!