`
longxj
  • 浏览: 101746 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

semaphore & ipc_message posix message queue & ipc_shared Memory

阅读更多

semaphore

每个semaphore用一个sem_array来代表,每个sem_array里包含一个或者多个sem结构,sem代表一个原子信号量,用户使用的semaphore跟内核使用的semaphore有个很大的区别在于,用户的semaphore可以包含多个信号值,每个信号值用sem来代表。如果进程使用semop()操作时带上了SEM_UNDO标志,那么进程对信号量的操作将会被一个sem_undo结构记录,这样当进程因为错误而终止时,系统可以使用sem_undo结构将信号量的值恢复到进程未使用的状态。

ipc_message & posix message queue

每个message用一个msg_queue结构来进行代表,queue里的信息使用msg_msg来表示。posix message queue的实现方式跟ipc_message(system v)是不同的,它使用一个特殊文件系统mqueue来实现的,这个文件系统可以被挂载到文件系统中。每个队列使用一个mqueue_inode_info来表示的,它跟一个mqueue文件系统的inode进行关联,也是通过address_space使用page cache来使用内存的。

ipc_sharedMemory

一个共享的内存用一个shmid_kernel结构来进行表示,它里面有个field指向file结构,file指向shm特殊文件系统的inode结构,共享的内存page frame使用的是page cache,通过address_space结构跟inode进行关联。这样的做的原因有2点:

1.可以使用vfs系统接口,也就是文件操作接口来进行操作

2.可以利用vfs的实现结构,从而实现代码重用

分享到:
评论

相关推荐

    posix ipc python库源码

    `MessageQueue`类提供了创建、发送和接收消息的功能,例如`msgsnd`用于发送消息,`msgrcv`用于接收消息,且支持消息的优先级和阻塞非阻塞模式。 3. **共享内存(Shared Memory)**:共享内存是一种高效的数据交换...

    commom_ipc_interface.rar

    2. **共享内存(Shared Memory)**: - 文件`shm_main.cpp`展示了如何创建、连接和使用共享内存。共享内存允许进程直接访问同一块物理内存,提高了通信效率。C++可以通过`<sys/shm.h>`头文件中的`shmget`、`shmat`...

    system 5 和posix

    共享内存 (Shared Memory) 共享内存是一种高效的进程间通信方式,它允许两个或多个进程共享同一段内存区域。这种方式最大的优点是速度快,因为数据不需要经过内核空间的复制,直接在用户空间传递。但是,使用共享...

    UNIX Network Programming Volume 2(Unix网络编程卷2英文版)

    posix shared memory 13.1 introduction 325 13.2 shm_open and shm_un1ink functions 326 13.3 ftruncate and fstat functions 327 13.4 simple programs 328 13.5 incrementing a shared counter 333 13.6 ...

    ipc.zip_进程 文件

    - Linux和Unix提供了多种IPC机制,如管道(Pipe)、有名管道(FIFO)、信号量(Semaphore)、消息队列(Message Queue)、共享内存(Shared Memory)和套接字(Socket)。 2. 管道与有名管道: - 管道是半双工...

    进程间通信.pdf

    3. **消息队列(Message Queue)** - 消息队列允许不同进程间通过消息进行通信,每条消息都有类型和长度,可以实现更复杂的通信模式。 4. **共享内存(Shared Memory)** - 共享内存是最快的IPC机制之一,因为它...

    总结:linux进程间通信的几种机制的比较及适用场合

    6. **共享内存(shared memory)**:共享内存允许多个进程访问同一段内存区域,是最快的一种IPC方式。通常配合信号量使用,以实现同步和避免数据冲突。 7. **套接字(socket)**:套接字不仅支持进程间通信,还能...

    UNIX网络编程_第2版_第2卷_进程间通信

    共享内存(shared memory)是一种高效的IPC机制,它允许多个进程直接访问同一块内存区域,无需通过任何其他介质。书中会讲解如何创建、映射和同步共享内存,以及如何避免常见的问题,如内存冲突和死锁。 套接字...

    OS.zip_visual c

    Linux提供了多种IPC方式,如管道(pipe)、信号量(semaphore)、消息队列(message queue)、共享内存(shared memory)和套接字(socket)等。管道是一种半双工通信方式,数据只能单向流动;信号量用于同步多个...

    UNIX环境高级编程(经典)

    - **进程间通信**: 介绍了多种IPC机制,如信号量(semaphore)、消息队列(message queue)、共享内存(shared memory)等。 #### 七、实例与实践 - **实例程序**: 书中提供了大量的实例代码,这些代码不仅展示了各种API...

    ch9 系统程序设计1

    进程间通信主要通过管道(pipe)、套接字(socket)、信号量(semaphore)、消息队列(message queue)和共享内存(shared memory)等方式。这些机制使得不同进程间能够交换数据和协调工作。 **线程**: 线程是轻量...

    linux进程编程介绍

    Linux提供了多种IPC机制,如管道(Pipe)、命名管道(FIFO)、信号量(Semaphore)、消息队列(Message Queue)、共享内存(Shared Memory)和套接字(Socket)。这些机制允许进程之间交换数据,协同工作。 线程...

    《Linux高性能服务器编程》学习代码

    4. **进程间通信(IPC)**:包括管道(pipe)、消息队列(message queue)、共享内存(shared memory)、信号量(semaphore)等,这些都是实现进程间协同工作的重要工具。 5. **文件系统操作**:学习如何读写文件,...

    C语言source

    3. **进程间通信(IPC)**:在多进程环境中,C语言支持多种进程间通信方式,如管道(pipe)、信号量(semaphore)、共享内存(shared memory)和消息队列(message queue)。这些机制允许不同进程间交换数据,协同...

    Linux开发系统函数调用

    IPC(Inter-Process Communication)在Linux中则是进程间通信的一种机制,包括管道(pipe)、信号量(semaphore)、消息队列(message queue)、共享内存(shared memory)和套接字(socket)等。这些机制使得多个...

    Linux命令练习及参考答案[归类].pdf

    3. 报文(Message)队列(Message Queue):消息队列是消息的链接表,包括Posix消息队列和System V消息队列。 4. 共享内存(Shared Memory):使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。 5. 信号量...

Global site tag (gtag.js) - Google Analytics