`

进程间通信学习笔记五(信号量)

 
阅读更多

信号量
又名信号灯,保护临界资源,进程可以根据它判断是否能够访问某些共享资源
除了用于访问控制外,还用于进程同步




分类:
二值信号量
值只能取0或1,有点像互斥锁


计数信号量
信号量的值可以取任意非负值




创建/打开


#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>


int semget(key_t key,int nsems,int semflg)
key:键值,由ftok取得
nsems:指定信号灯的数目
semflg:标识,同消息队列


对信号量进行控制
int semop(int semid,struct sembuf *sops,unsigned nsops)
semid:信号量集的id
sops:是一个操作数组,表明要进行的操作
nsops:sops所指向的数组的元素个数


sembuf结构体原型
struct sembuf{
unsigned short sem_num;/*在信号量集合中的位置,从0开始*/
short sem_op;/*是获取(-1)还是释放(+1)*/
short sem_flg;/*信号操作标志
IPC_NOWAIT:不会阻塞
IPC_ONDO:程序结束时释放信号量
*/


};

分享到:
评论

相关推荐

    学习笔记信号量和进程间通信

    本学习笔记将深入探讨信号量和进程间通信的相关概念、原理以及实际应用。 首先,让我们理解什么是进程。进程是程序执行的实例,拥有独立的内存空间和系统资源,它们在操作系统中并行运行。在多进程环境中,为了协调...

    MFC教程lesson 17-进程间通信.rar

    在IT领域,MFC(Microsoft Foundation ...学习完这个教程后,开发者应该能够熟练地在MFC应用中实现进程间通信,从而提升程序的扩展性和协作性。对于想要深入理解和应用MFC的程序员来说,这是一个不可错过的章节。

    进程同步——信号量机制

    关于信号量的文章,生产者消费者问题与读者写者问题---信号量机制,PV操作——进程同步的信号量问题,利用信号机制实现的 父子进程同步,嵌入式linux的学习笔记-进程间通信的信号与信号集(四)1)进程的同步与互斥 ...

    《ORANGE’S:一个操作系统的实现》读书笔记(二十四)进程间通信(二)文章代码

    总的来说,该读书笔记覆盖了操作系统设计中的核心知识点——进程间通信,深入解析了各种通信机制的工作原理和实现方式,对于操作系统爱好者和开发者来说,是一份非常宝贵的参考资料。通过学习和实践,我们可以提高在...

    《ORANGE’S:一个操作系统的实现》读书笔记(二十五)进程间通信(三)文章代码

    在操作系统设计中,进程间通信(IPC,Inter-Process Communication)是至关重要的组成部分,它允许不同进程之间交换数据和同步状态。《ORANGE’S:一个操作系统的实现》这本书深入浅出地介绍了操作系统的设计与实现...

    操作系统学习笔记

    管道是一种半双工的数据通信通道,允许两个进程通过共享内存区域交换数据,常用于实现简单的进程间通信或构建复杂的命令行管道。 综上所述,这份学习笔记全面覆盖了操作系统的核心概念,从底层的保护模式编程到高层...

    Linux 进程 线程学习笔记

    Linux提供了多种机制来实现进程间通信(IPC),包括信号、管道、消息队列、共享内存和信号量等。 #### 线程管理 在Linux中,线程的创建和管理主要通过`pthread`库实现,其中`pthread_create()`用于创建新线程,`...

    记录自己共享内存学习笔记

    记录自己共享内存学习笔记 共享内存是一种进程间通信方式,它允许多个进程共享同一块物理内存区域,以实现进程之间的信息交换。共享内存的原理是将同一块物理内存映射到多个进程的地址空间中,使得多个进程可以访问...

    linux下C语言开发笔记整理

    信号是Unix/Linux系统中一种用于进程间通信的方法。C语言提供了处理信号的标准API,如`signal`函数用于设置信号处理函数。 ### Unix/Linux系统的进程间通信 进程间通信(IPC)允许独立的进程交换数据,常见的IPC...

    操作系统学习笔记(三)1

    本文主要探讨了操作系统中的进程与线程,以及进程间通信的基础概念。 一、进程 进程是操作系统中运行程序的实例,它包含了程序的代码、数据、状态信息等。一个进程在某一时刻可能处于运行、就绪、阻塞三种状态之一...

    JAVA 多线程学习笔记

    这篇学习笔记将深入探讨Java多线程的核心概念、实现方式以及相关工具的使用。 一、多线程基础 1. 线程与进程:在操作系统中,进程是资源分配的基本单位,而线程是程序执行的基本单位。每个进程至少有一个主线程,...

    跨进程自学资料与笔记

    1. 进程间通信(IPC, Inter-Process Communication):这是跨进程的核心,包括管道、共享内存、消息队列、套接字、命名管道等多种方式。每种方式都有其适用场景和优缺点,需要根据实际需求选择。 2. 同步与互斥:当...

    linux内核设计与实现第二版 学习笔记

    3. **内存管理**:Linux内核通过页表和虚拟内存机制,实现了进程间的内存隔离和地址空间的映射。同时,它还包含内存分配、释放、交换和内存碎片管理等策略。 4. **文件系统**:文件系统是组织和管理磁盘数据的关键...

    Linux系统编程学习笔记

    #### 五、进程间通信 - **管道**: 管道是一种进程间通信方式,允许一个进程的输出作为另一个进程的输入。 - **消息队列**: 消息队列是一种用于在进程间传递消息的机制。 - **信号量数组**: 信号量数组可以用于...

    《ORANGE’S:一个操作系统的实现》读书笔记(十五)进程(三)文章代码

    此外,进程间通信(IPC)是操作系统中不可或缺的一部分。进程间通信允许进程之间共享数据、同步执行和协调工作。常见的IPC机制包括管道、消息队列、信号量、共享内存等。比如,管道提供了半双工通信,适合父子进程间...

    UCOS读书笔记 详细总结了UCOS的学习过程

    1. **管道(Pipe)**: 一种简单的进程间通信方式,可用于父进程与子进程之间传递数据。 2. **有名管道(Named Pipe)**: 类似于管道,但是可以在不同进程之间通信,并且可以在多个进程中打开。 3. **信号(Signal)**: 一...

    linux编程学习笔记PDF资料下载.txt

    - **进程间通信(IPC)**:Linux提供了多种进程间通信机制,如管道、消息队列、共享内存、信号量等。 - **线程编程**:多线程编程可以利用多核处理器的并行计算能力,提高程序的执行效率。 - **同步与互斥**:为了...

    STM32 FreeRTOS 学习笔记,库函数总结,带目录

    5. **通信机制**:队列(Queue)是FreeRTOS中进程间通信的重要方式,用于在任务间传递消息或数据结构。`xQueueSend()`和`xQueueReceive()`分别用于发送和接收数据。 6. **定时器**:FreeRTOS提供两种类型的定时器:...

    python从入门到高级学习笔记

    笔记会解释这些概念,并提供关于线程同步(如锁、信号量)和进程间通信(IPC)的示例。 正则表达式(regex)是处理文本的强大工具。Python的re模块提供了丰富的函数来匹配、查找、替换和分割字符串。通过学习正则...

Global site tag (gtag.js) - Google Analytics