![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
k-ipc
文章平均质量分 85
Morphad
这个作者很懒,什么都没留下…
展开
-
linux SysV IPC实现
IPC(Interprocess Communication)表示进程间通信机制;System V IPC机制主要有消息队列、共享内存、信号量,linux中实现了SysV IPC。 I.SysV IPC创建/获取消息队列、共享内存、信号量的创建/获取API原型如下:int msgget(key_t key, int msgflg);int shmget(key_t key, s原创 2013-06-14 20:44:52 · 2518 阅读 · 0 评论 -
linux idr机制
I.idr机制i.idr介绍系统许多资源都用整数ID来标识,如进程ID、文件描述符ID、IPC ID等;资源信息通常存放在对应的数据结构中(如进程信息存放在task_struct中、ipc信息存放在ipc_perm中),id与数据结构的关联机制有不同的实现,idr机制是其中的一种。idr,id radix的缩写。idr主要用于建立id与指针(指向对应的数据结构)之间的对应关系。idr用原创 2013-06-07 21:45:23 · 8497 阅读 · 1 评论 -
linux SysV IPC msg消息队列实现
消息队列是由存放在内核中的消息组成的链表,由IPC id标识。由msgget创建新队列或打开已经存在的队列由msgsnd将消息添加到消息队列尾,每个消息包括正整数标识的类型,非负的长度,及数据。由msgrcv从消息队列中取消息,不必按FIFO取消息,可以通过类型字段取相应的消息。 I.数据结构i.msg_queue 87 /* one msq_queue structu原创 2013-06-22 11:48:06 · 3216 阅读 · 0 评论 -
linux SysV IPC sem信号量实现
信号量值是一个计数器,用于控制多进程对共享资源的访问;进程获取共享资源需要以下步骤:1.检查资源的信号量值2.如果信号量值是正,进程可以访问资源;进程将信号量值减1,表示进程已经使用了一个资源3.如果信号量值是0,进程被阻塞直到信号量值大于0;被阻塞进程被唤醒时重复执行步骤1注:检查信号量值和减1必须为原子操作 SysV信号量有以下特征:1.信号量是一个信号量值集合,在原创 2013-06-20 23:18:11 · 3443 阅读 · 0 评论 -
linux SysV IPC shm共享内存实现
共享内存可以使多个进程共享某段内存,由于不需要进程间数据复制,所以是速度最快的IPC。多个进程访问共享内存时需要同步机制,如进程A往共享内存中写数据时,进程B不能使用共享内存;通常采用信号量同步多进程访问共享内存。共享内存实现主要有以下几点:1.分配物理内存2.将物理内存映射到进程的地址空间;通过修改进程的页表,可以虚拟地址直接访问物理内存3.进程不再使用共享内存时,取消物理内原创 2013-06-21 21:41:30 · 4279 阅读 · 0 评论