信号量
又名信号灯,保护临界资源,进程可以根据它判断是否能够访问某些共享资源
除了用于访问控制外,还用于进程同步
分类:
二值信号量
值只能取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:程序结束时释放信号量
*/
};
- 浏览: 263326 次
- 性别:
- 来自: 济南
文章分类
- 全部博客 (303)
- c (31)
- c++ (16)
- java (18)
- c# (1)
- python (3)
- java web (6)
- oracle (7)
- sqlserver (2)
- mysql (2)
- android (24)
- android系统 (15)
- android多媒体部分 (15)
- android游戏 (12)
- linux (26)
- javaScript (1)
- ajax (1)
- node JS (2)
- html (5)
- apache (3)
- jboss (1)
- weblogic (0)
- 通信协议 (10)
- 云计算 (1)
- 分布式 (5)
- ejb (1)
- webservice (5)
- 设计模式 (16)
- JNI (6)
- swing (13)
- 版本控制 (1)
- UML (1)
- xml (4)
- spring (5)
- hibernate (5)
- struts1 (3)
- struts2 (4)
- ibatis (0)
- tomcat (2)
- 心得体会 (1)
- css (1)
- 嵌入式 (41)
- arm体系结构 (10)
发表评论
-
u-boot Makefile 文件分析
2013-06-01 21:44 2430Makefile文件分析 # #(C)Copyri ... -
uboot start.S文件分析
2013-06-03 22:18 1325U-boot第一个开始文件arch\arm\cpu\arm1 ... -
u-boot mkconfig文件分析
2013-05-31 21:29 1140Mkconfig文件分析 #!/bin/ ... -
链接地址学习笔记
2013-05-05 12:40 1287链接地址 启动过程 示例代码如下: ... -
DDR学习笔记
2013-05-11 14:19 1041DDR 15条地址线32k 128M*2(20)=2(2 ... -
nand flash学习笔记一
2013-05-13 21:05 962Nandflash 原理图上有data0-data7 ... -
openJTAG学习笔记一
2013-05-22 21:45 2183安装软件 光盘Windows\install目录下的 01.O ... -
linux进程管理学习笔记
2013-03-28 20:57 1368linux 进程管理 1 linux进程控制 进程的四个要素: ... -
字符设备驱动程序学习笔记一
2013-04-01 21:55 890linux 驱动程序 字符设备驱动程序 网络接口驱动程序 块设 ... -
字符设备驱动程序学习笔记二
2013-04-04 10:29 755字符驱动程序 1 设备号 字符设备通过字符设备文件来存取 ls ... -
字符设备驱动程序学习笔记三
2013-04-04 14:03 790memdev.h文件示例代码如下: #ifndef _MEM ... -
字符设备驱动程序学习笔记四
2013-04-05 11:12 590竟争与互斥 程序调试 1 ... -
GPIO学习笔记
2013-04-14 19:50 814用汇编点亮一个led 1看原理图GPK4=0,led亮G ... -
系统时钟学习笔记
2013-05-04 21:59 83812m晶振----->pll------>cpu ... -
UART学习笔记
2013-05-04 22:00 1168串口(UART) DIV_VAL=(PCLK/(bpsx1 ... -
linux内存管理学习笔记
2013-03-12 20:50 10781 linux内存管理 地址类型 物理地址 出现在cpu地址 ... -
嵌入式linux系统学习笔记
2013-03-06 21:39 974嵌入式linux内核制作 1 清除原有配置文件与中间文件 x8 ... -
原理图学习笔记一
2013-02-17 22:24 425画个草图也挺过瘾 -
进程间通信学习笔记一(管道通信)
2013-02-01 20:08 1418进程间通信(ipc) 应用场景: 数据传输 资源共享 通知事件 ... -
进程间通信学习笔记二(信号通信)
2013-02-16 21:39 794信号通信 用户按某些键时,产生信号 硬件异常产生信号 进程用k ...
相关推荐
本学习笔记将深入探讨信号量和进程间通信的相关概念、原理以及实际应用。 首先,让我们理解什么是进程。进程是程序执行的实例,拥有独立的内存空间和系统资源,它们在操作系统中并行运行。在多进程环境中,为了协调...
在IT领域,MFC(Microsoft Foundation ...学习完这个教程后,开发者应该能够熟练地在MFC应用中实现进程间通信,从而提升程序的扩展性和协作性。对于想要深入理解和应用MFC的程序员来说,这是一个不可错过的章节。
关于信号量的文章,生产者消费者问题与读者写者问题---信号量机制,PV操作——进程同步的信号量问题,利用信号机制实现的 父子进程同步,嵌入式linux的学习笔记-进程间通信的信号与信号集(四)1)进程的同步与互斥 ...
总的来说,该读书笔记覆盖了操作系统设计中的核心知识点——进程间通信,深入解析了各种通信机制的工作原理和实现方式,对于操作系统爱好者和开发者来说,是一份非常宝贵的参考资料。通过学习和实践,我们可以提高在...
在操作系统设计中,进程间通信(IPC,Inter-Process Communication)是至关重要的组成部分,它允许不同进程之间交换数据和同步状态。《ORANGE’S:一个操作系统的实现》这本书深入浅出地介绍了操作系统的设计与实现...
管道是一种半双工的数据通信通道,允许两个进程通过共享内存区域交换数据,常用于实现简单的进程间通信或构建复杂的命令行管道。 综上所述,这份学习笔记全面覆盖了操作系统的核心概念,从底层的保护模式编程到高层...
Linux提供了多种机制来实现进程间通信(IPC),包括信号、管道、消息队列、共享内存和信号量等。 #### 线程管理 在Linux中,线程的创建和管理主要通过`pthread`库实现,其中`pthread_create()`用于创建新线程,`...
记录自己共享内存学习笔记 共享内存是一种进程间通信方式,它允许多个进程共享同一块物理内存区域,以实现进程之间的信息交换。共享内存的原理是将同一块物理内存映射到多个进程的地址空间中,使得多个进程可以访问...
信号是Unix/Linux系统中一种用于进程间通信的方法。C语言提供了处理信号的标准API,如`signal`函数用于设置信号处理函数。 ### Unix/Linux系统的进程间通信 进程间通信(IPC)允许独立的进程交换数据,常见的IPC...
本文主要探讨了操作系统中的进程与线程,以及进程间通信的基础概念。 一、进程 进程是操作系统中运行程序的实例,它包含了程序的代码、数据、状态信息等。一个进程在某一时刻可能处于运行、就绪、阻塞三种状态之一...
这篇学习笔记将深入探讨Java多线程的核心概念、实现方式以及相关工具的使用。 一、多线程基础 1. 线程与进程:在操作系统中,进程是资源分配的基本单位,而线程是程序执行的基本单位。每个进程至少有一个主线程,...
1. 进程间通信(IPC, Inter-Process Communication):这是跨进程的核心,包括管道、共享内存、消息队列、套接字、命名管道等多种方式。每种方式都有其适用场景和优缺点,需要根据实际需求选择。 2. 同步与互斥:当...
3. **内存管理**:Linux内核通过页表和虚拟内存机制,实现了进程间的内存隔离和地址空间的映射。同时,它还包含内存分配、释放、交换和内存碎片管理等策略。 4. **文件系统**:文件系统是组织和管理磁盘数据的关键...
#### 五、进程间通信 - **管道**: 管道是一种进程间通信方式,允许一个进程的输出作为另一个进程的输入。 - **消息队列**: 消息队列是一种用于在进程间传递消息的机制。 - **信号量数组**: 信号量数组可以用于...
此外,进程间通信(IPC)是操作系统中不可或缺的一部分。进程间通信允许进程之间共享数据、同步执行和协调工作。常见的IPC机制包括管道、消息队列、信号量、共享内存等。比如,管道提供了半双工通信,适合父子进程间...
1. **管道(Pipe)**: 一种简单的进程间通信方式,可用于父进程与子进程之间传递数据。 2. **有名管道(Named Pipe)**: 类似于管道,但是可以在不同进程之间通信,并且可以在多个进程中打开。 3. **信号(Signal)**: 一...
- **进程间通信(IPC)**:Linux提供了多种进程间通信机制,如管道、消息队列、共享内存、信号量等。 - **线程编程**:多线程编程可以利用多核处理器的并行计算能力,提高程序的执行效率。 - **同步与互斥**:为了...
5. **通信机制**:队列(Queue)是FreeRTOS中进程间通信的重要方式,用于在任务间传递消息或数据结构。`xQueueSend()`和`xQueueReceive()`分别用于发送和接收数据。 6. **定时器**:FreeRTOS提供两种类型的定时器:...
笔记会解释这些概念,并提供关于线程同步(如锁、信号量)和进程间通信(IPC)的示例。 正则表达式(regex)是处理文本的强大工具。Python的re模块提供了丰富的函数来匹配、查找、替换和分割字符串。通过学习正则...