One Linux IPC method

今天学习了一点点Linux的东西,一个叫shared memory + semaphore的机制,是Linux下的IPC方法的一种,据说也是最简单的东东。
 
通过划分一块可以指定大小的memory块,不同的process都可以访问并修改这一块内存中存放的数据,于是乎就把这块memory称之为shared memory,意即大家公用,你通过写入我需要的数据然后我再去读取来达到在进程间通信的目的。
 
既然都有读和写的权限,那很自然的就会有出现冲突的可能,如何保证读和写的顺利进行,以及其他一些可能的混乱状况,就使用这个叫做semaphore的来保证。semophore其实和shared memory比较类似,也是内存中的一块区域,用来控制对shared memory的运算顺序,就象一把锁一样。在有process已经在对shared memory进行读写操作时,它的状态会发生变化,而在process对shared memory进行实际的操作之前,必须要在semaphore这里进行一定的查询类似的操作来检查当前shared memory的状况,视不同的状况可能会立即进行运算,或者等待到满足一定条件时进行运算。通常semophore建立时会创建两个semaphore,据说这是最经典的用法,号称什么生产者与消费者的问题。。。郁闷,不知道诶。。。
 
由于shared  memory只是内存中的一块区域,由于它可以被多个process共享操作才得到此名字,所以也可以想象到shared memory会有多块,那么要控制每一块shared memory都需要一个semaphore与其配对。
 
至于读和写的内部逻辑则是由开发者在库代码中来体现,对外提供读写接口,process使用此服务,却不关心其内部逻辑。大致应该就是这样。。。
 
哎,阅读了一点点介绍性质的文档,同事再稍稍讲解一下,看看他写的范例代码,这就是我对它了解的全部来源,哎,注定是不够详尽啊,连练习编程都不用了。。。我问他:“那现在我还需要做什么吗?”这是在看好书,问了一些问题,拿着他的范例代码的时候,我们需要的是检测一下使用shared memory + semaphore作为IPC方法时的性能。他想了想,颇有点诡异地笑了笑(原谅我,实在不知道用什么词形容,中文学得不好,呵呵),有点点尴尬地说“好象不用做什么了。。”
 
昏死。。也好,反正不用再做什么,有机会再实践吧,怎么说也算了解这是个什么东西了,虽然没有实际地去编写相关代码,能够有个初步的印象也够了^o^

About Kaveri, Yi XU

Agile Coach & Consutlant
This entry was posted in Agile&Scrum&Testing&TA. Bookmark the permalink.

1 条 One Linux IPC method 的回复

  1. Xiaofeng说道:

    同步信号量

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s