POSIX和System V的比较/IPC函数汇总

POSIX 和 System V IPC的区别 POSIX 和 System V 是两种不同的进程间通信(IPC)机制,它们在以下方面存在区别:msggetmsgsndmsgrcvsemgetsemopshmgetshmatmq_openmq_sendmq_receivesem_opensem_waitsem_post。 阅读详情

标签: IPCPOSIXSystemV
2017-11-19 21:46

分类:

当我们在linux系统中进行进程间通信时,会发现例如共享内存,信号量,消息队列等方式时,会发现有System v以及POXIS两种类型。因此,我们探究一下System v和POXIS到底代表着什么意义。
一.POSIX
POSIX(Portable Operating System Interface for Computing Systems)是由IEEE 和ISO/IEC 开发的一簇标准。该标准是基于现有的UNIX 实践和经验,描述了操作系统的调用服务接口,用于保证编制的应用程序可以在源代码一级上在多种操作系统上移植运行。它是在1980 年早期一个UNIX 用户组(usr/group)的早期工作的基础上取得的。该UNIX 用户组原来试图将AT&T 的系统V 和Berkeley CSRG的BSD 系统的调用接口之间的区别重新调和集成,从而于1984 年产生了/usr/group 标准。1985 年,IEEE操作系统技术委员会标准小组委员会(TCOS-SS)开始在ANSI 的支持下责成IEEE 标准委员会制定有关程序源代码可移植性操作系统服务接口正式标准。到了1986 年4 月,IEEE 就制定出了试用标准。第一个正式标准是在1988 年9 月份批准的(IEEE 1003.1-1988),也既以后经常提到的POSIX.1 标准。

POSIX(Portable Operating System Interface)可移植操作系统接口,这样的简写完全是为了和UNIX读起来更像而已。它是由IEEE(电子和电气工程师协会)开发,由ANSI(美国国家标准化学会)和OSI(国际标准化组织)两个机构标准化。由于早起各厂家对UNIX的开发各自为政,互相竞争,造成UNIX版本混乱,给软件移植造成困难,不利于UNIX长期发展,基于此,IEEE开发了POSIX,在源码级别定义了一组UNIX操作系统接口。

  目前POSIX已经成为类UNIX(Unix-like)操作系统编程的通用接口,极大方便了类UNIX环境下应用程序源码级的可移植性。Glibc(GNU C Library),即C运行库,是Linux系统中最底层的API,它就是完全按照POSIX标准编写的。

POSIX版本

1997年之前版本

POSIX.1(IEEE Std 1003.1-1988): Core Services

POSIX.1b (IEEE Std 1003.1b-1993): Real-time extensions

POSIX.1c(IEEE Std 1003.1c-1995) :Threads extensions  

POSIX.2(IEEE Std 1003.2-1992) :Shell and Utilities

1997年之后的版本

POSIX.1-2001( IEEE Std 1003.1-2001)

POSIX.1-2004 (with two TCs)(IEEE Std 1003.1-2004 

POSIX.1-2008 (with one TC))( IEEE Std 1003.1, 2013)

二.Sytem V
System V, 曾经也被称为 AT&T System V,是Unix操作系统众多版本中的一支。它最初由 AT&T 开发,在1983年第一次发布。一共发行了4个 System V 的主要版本:版本1、2、3 和 4。System V Release 4,或者称为SVR4,是最成功的版本,成为一些UNIX共同特性的源头,例如 ”SysV 初始化脚本“ (/etc/init.d),用来控制系统启动和关闭,System V Interface Definition (SVID) 是一个System V 如何工作的标准定义。

AT&T 出售运行System V的专有硬件,但许多(或许是大多数)客户在其上运行一个转售的版本,这个版本基于 AT&T 的实现说明。流行的SysV 衍生版本包括 Dell SVR4 和 Bull SVR4。当今广泛使用的 System V 版本是 SCO OpenServer,基于 System V Release 3,以及SUN Solaris 和 SCO UnixWare,都基于 System V Release 4。

System V 是 AT&T 的第一个商业UNIX版本(UNIX System III)的加强。传统上,System V 被看作是两种UNIX”风味”之一(另一个是 BSD)。然而,随着一些并不基于这两者代码的UNIX实现的出现,例如 Linux 和 QNX, 这一归纳不再准确,但不论如何,像POSIX这样的标准化努力一直在试图减少各种实现之间的不同。

System V(System Five),是Unix操作系统众多版本中的一支,就是当年UNIX厂家混战中,比较强大的一个诸侯王,最初由 AT&T 开发,在1983年第一次发布。一共发行了4个 System V 的主要版本:1、2、3 和 4,比如:System V Release 4,或者称为SVR4,是最成功的版本,比如现今依然使用的操作系统SUN Solaris 和 SCO UnixWare,都基于 System V Release 4的,SUN公司我想大家都知道吧,依然是现在商用服务器操作系统重要提供商,但是我们常用的Linux操作系统并不是基于此的,但是这里要感谢POSIX这样标准化的努力,是它兼容了绝大部分System V的规格,减少了各类操作系统之间移植的麻烦。

三.使用
照上面所说的System V和POXIS是一种应用于系统的接口协议,POXIS相对于System V可以说是比较新的标准,语法相对简单。

在linux/unix系统编程中支持System V和POXIS。我们常见的一个名词就是POSIX IPC和

System V IPC。IPC的全称是Inter-process Comminication,就是进程间通信。

在POSIX IPC中,在POSIX IPC中,每个IPC对象是有名称的,而且名称是一个很重要的概念,posix ipc使用ipc的名称作为ipc的标识。mq_open sem_open shm_open三个函数的第一个参数就是这个名称,这个名称不一定是在文件系统中存在的名称。 要使用IPC对象,需要创建或者打开,这与文件操作类似,主要是使用mq_open、sem_open、shm_open 函数操作。在创建或者打开ipc对象时需要指定操作的mode,例如O_RONLY、O_WRONLY、O_RDWR、O_CREAT、O_EXCL 等,IPC对象是有一定权限的,与文件的权限类似。

在System V IPC中,System v ipc中有一个重要的类型是key_t,在msget、semget、shmget函数操作中都需要利用这个类型是参数。
四.POSIX和SytemV函数汇总
system V IPC函数汇总
这里写图片描述
POSIX IPC函数汇总
这里写图片描述
从IPC键生成IPC标识符
这里写图片描述

参考 http://www.embedu.org/column/3325.html
http://blog.youkuaiyun.com/onion2007/article/details/47725017

  •  * 以上用户言论只代表其个人观点,不代表优快云网站的观点或立场
快速回复 TOP
进程间通信(十六)——POSIX IPC简介 POSIX IPC简介 POSIX IPC对象编程接口 接口 消息队列 信号量 共享内存 头文件 对象句柄 <mqueue.h> mqd_t <semaphore.h> sem_t * <sys/mman.h> int(文件描述符) 创建/打开 关闭 断开链接 执行IPC 其他操作 mq_open mq_close mq_unlink mq_send 阅读详情

相关推荐

Posix与System V IPC

三种类型的IPC合称为"Posix IPC":Posix消息队列;Posix信号量;Posix共享内存区;三种类型的IPC和称为"":System V消息队列。System V信号量。System V共享内存区。

weixin_50866517的博客 1027

02.Posix IPC

1、概述 以下三种类型的IPC合称为"Posix IPC" Posix消息队列; Posix信号量; Posix共享内存区。 图2-1汇总了所有Posix IPC函数。 2、IPC名字 mg_open、sem_open和shm_open这三个函数的第一个参数就是这样的一个名字,它可能是某个文件系统中的一个真正的路径名,也可能不是。 它必须符合已有的路...

行走 406

System V IPC vs POSIX IPC

TIP: What are the differences between System V IPC and POSIX IPC ? Why do we have two standards ? How to decide which IPC functions to use ? ANS: Both have the same basic tools -- semaphores, shar...

guiwin的博客 528

Linux IPC:System V和POSIX区别汇总整理

虽然 System V IPC 和 POSIX IPC 都提供了进程间通信的基本功能,但 POSIX IPC 通常被认为更加现代、一致并且易于使用。POSIX IPC 通常更适合于新的开发项目,而 System V IPC 由于其历史地位,在某些旧系统中仍然有其独特的作用。选择哪种 IPC 机制取决于具体的应用场景、系统环境和个人偏好。

极客代码 1201

嵌入式学习DAY27 --- System V 共享内存 ,POSIX 信号量 ,POSIX 消息队列_posix 共享内存 嵌入式平台

一、System V 共享内存二、POSIX 信号量三、POSIX 消息队列(1)在多任务操作系统中,多个进程/线程会同时运行。多个任务可能为了完成同一个事情而相互协作,这样就形成了任务之间的同步关系。同样,不同任务之间为了争夺有限的系统资源(硬件或软件资源)会进入竞争状态,这样就是任务之间的互斥关系。(2)任务之间的互斥与同步关系存在的根源在于临界资源。临界资源是指在同一个时刻只允许有限个(通常只有一个)任务可以访问(读)或者修改(写)的资源。

2401_84248681的博客 1347

IPC之六:使用 POSIX 信号量解决经典的‘生产者-消费者问题‘

IPC 是 Linux 编程中一个重要的概念,IPC 有多种方式,本文主要介绍信号量(Semaphores),尽管信号量被认为是 IPC 的一种方式,但实际上通常把信号量用于进程间同步或者资源互斥,和共享内存(Shared Memory)配合使用,可以实现完美的进程间通信;Linux 既支持 UNIX SYSTEM V 的信号量集,也支持 POSIX 的信号量,本文针对 POSIX 信号量,本文给出了多个具体的实例,每个实例均附有完整的源代码。

whowin 769

Linux进程间通信之 System V IPC 与 POSIX IPC 对比

IPC机制对比摘要 Linux提供System V IPC和POSIX IPC两套进程间通信机制。System V IPC源自AT&T Unix,历史悠久但API较老,使用键值标识对象,管理工具为ipcs/ipcrm。POSIX IPC基于POSIX标准,采用命名方式标识对象,API设计更现代,通过文件系统可见和管理。

荒坡_KingRumn 978

Ubuntu图形界面崩溃?从tty到GUI的终极修复指南

本文提供了Ubuntu图形界面崩溃后进入tty的终极修复指南。详细介绍了如何诊断显示管理器(如LightDM或GDM3)状态,并通过重装、切换显示管理器、修复依赖、系统升级及排查显卡驱动等核心方案,逐步恢复GUI。帮助用户从命令行界面高效修复桌面环境,避免数据丢失。

vulkan6gpu的博客 778

System V IPC信号量和POSIX信号量详解

定义了ListNode结构体来表示链表的节点,包含一个int类型的数据成员用于存放生产者生产的数据,以及一个指向下一个节点的指针成员。在Linux上,信号量API有两组,一组是System V IPC信号量(信号量),另一组是我们要讨论的POSIX信号量。这两组接口很相似,且语义完全相同,但不保证能互换。进化版的互斥锁(1 --> N)由于互斥锁的粒度比较大,如果我们希望在多个线程间对某一对象的部分数据进行共享,使用互斥锁是没有办法实现的,只能将整个数据对象锁住。

m0_74795952的博客 949

ESP32-S3双模CMSIS-DAP调试器:USB+WiFi无线调试方案

CMSIS-DAP是ARM生态中标准化的嵌入式调试协议接口,广泛用于Keil、IAR、STM32CubeIDE等开发环境。其核心原理是通过SWD/JTAG物理层实现目标芯片寄存器访问、内存读写与断点控制,依赖确定性时序和低延迟通信。传统DAPLink调试器受限于USB线缆束缚,而WiFi-USB-DAPLink项目将完整CMSIS-DAP v2协议栈移植至ESP32-S3平台,同时支持USB CDC直连与WiFi TCP远程通道,兼顾实时性与网络化部署能力。该方案无需主机驱动、兼容主流IDE,并支持多机并发

weixin_31185473的博客 371

R语言实战:5分钟搞定GEO单细胞数据(scRNA-seq)下载与整理(附完整代码)

本文详细介绍了如何使用R语言快速下载和整理GEO单细胞数据(scRNA-seq),提供完整的自动化处理代码。从环境准备、数据获取到文件整理和质量检查,涵盖10X Genomics标准格式及非标准数据的处理技巧,帮助生物信息学研究者高效完成数据预处理工作。

weixin_29054399的博客 607

IPC - POSIX和System V比较

POSIX和System V比较 (一)POSIX介绍       POSIX(Portable Operating System Interface)可移植操作系统接口,这样的简写完全是为了和UNIX读起来更像而已。它是有IEEE(电子和电气工程师协会)开发,由ANSI(美国国家标准化学会)和OSI(国际标准化组织)两个机构标准化。由于早起各厂家对UNIX的开发各自为政,互相竞

懒洋洋工程师的笔记 3652

从零开始:用君正T23ZN打造智能门锁双摄系统(含代码示例与调试技巧)

本文详细介绍了基于君正T23ZN视频处理芯片构建智能门锁双摄系统的完整实战方案。内容涵盖硬件选型与核心电路设计、软件开发环境搭建、双摄驱动框架、图像信号处理(ISP)调优、人脸识别算法集成与性能优化,以及系统调试与稳定性保障。文章提供了丰富的代码示例和调试技巧,旨在帮助嵌入式开发者高效实现具备人脸识别与监控功能的低功耗智能门锁视觉系统。

opencv7vision的博客 717

Linux进程间通信System V IPC 与 POSIX IPC 跨平台兼容性分析

POSIX IPC: 跨平台兼容性更好, 推荐用于新项目: 在某些传统 Unix 系统上支持更好检查机制: 编译时和运行时检查都很重要回退策略: 提供多层次的回退机制抽象层: 使用抽象层隐藏平台差异选择建议新项目: 优先使用 POSIX IPC, 提供 System V IPC 回退现有项目: 继续使用 System V IPC, 逐步迁移到 POSIX IPC多平台项目: 使用抽象层, 支持多种实现方式嵌入式系统: 根据内核配置选择, 可能需要自定义实现。

荒坡_KingRumn 1053

硬件压力测试工具使用方法

B, --bind host# 绑定到主机的多个地址中的一个。当客户端到服务器端的测试结束时,服务器端通过-l选项指定的端口(或默认为客户端连接到服务器端的端口),反向连接至客户端。-c, --client host#如果Iperf运行在服务器模式,并且用-c参数指定一个主机,那么Iperf将只接受指定主机的连接。-C, --compatibility# 与低版本的Iperf使用时,可以使用兼容模式。-b, --bandwidth #[KM] UDP模式使用的带宽,单位bits/sec。

weixin_53303772的博客 8220

Python 复现AlexNet框架代码

【代码】Python 复现AlexNet框架代码。

Quintin 2421

System V IPC信号量和POSIX信号量的区别与联系

在Linux上,信号量API有两组,一组是System V IPC信号量,另一组是POSIX信号量。

m0_74795952的博客 1071

DJI O2协议物理层逆向工程解析:揭开无人机通信的神秘面纱

DJI的O2协议是其OcuSync传输技术的最新演进,应用于Mini 2、Mavic Air 2、Mavic Air 2s和Mavic 3等无人机模型。这种协议结合了多种先进无线通信技术,能够在远距离提供稳定可靠的低延迟连接。O2协议物理层(PHY)是OSI模型的最底层,负责在物理媒介上传输原始数据比特流。它定义了电气特性、调制方式、编码方案、数据传输速率和同步机制等。DJI O2协议的物理层逆向工程是一个复杂但极具价值的领域。

QQ_778132974的博客 2389

System V IPC与POSIX IPC对比

System V IPC 是UNIX System V操作系统引入的一组进程间通信机制,包括消息队列、信号量和共享内存。这些机制在创建时会产生一个非负整数的键,用于标识IPC对象。IPC对象的生命周期超过了原始进程的生命周期,除非显式删除,否则即使所有进程都已关闭,它们也将持续存在。POSIX IPC 是基于POSIX标准的进程间通信机制,包括消息队列、信号量和共享内存。POSIX IPC 对象在创建时会产生一个字符串名称,用于标识IPC对象。

Dontla的博客 1821

探秘RK3588:OverlayFS挂载与固件升级全攻略

本文围绕RK3588芯片的OverlayFS文件系统挂载与固件升级技术展开详细阐述。首先介绍了RK3588芯片的卓越性能及其在嵌入式领域的广泛应用,重点分析了OverlayFS文件系统的分层架构原理及其在RK3588设备上的挂载方法,包括详细的挂载步骤、常见问题解决方案。随后详细阐述了RK3588设备在Windows和Linux环境下的固件升级方案,涵盖升级准备、具体操作流程及故障处理等内容。最后通过智能安防监控设备的实际案例,展示了OverlayFS挂载与固件升级技术的应用效果。文章为嵌入式开发者提供了全

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 287

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

System-V IPC与 Posix IPC

今天在看野火的Linux基础与应用开发实战指南时 产生了一个Posix IPC信号量和System-V IPC信号量的问题 ,找了不少资料,于是就有了下文。

xhwy123的博客 1529

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

POSIX消息队列与System V消息队列

是一个结构体,用于描述当消息队列中有新消息时,如何通知进程。:通知方法,取值如下:SIGEV_NONE:不发送任何通知。:发送一个信号事件发生时,将sigev_signo指定的信号发送给指定的进程;:事件发生时,内核会(在此进程内)以sigev_notify_attributes为线程属性创建一个线程,并让其执行sigev_notify_function,并以sigev_value为其参数:当为时,指定要发送的信号。:通知时传递的数据,类型为。:当为时,指定的线程函数。:当为。

v13111329954的博客 1971

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Linux进程间通信POSIX与System V内核实现位置对比

特性POSIX 消息队列POSIX 共享内存核心功能消息管理、排队、优先级内存映射、页管理主要依赖IPC 框架、文件系统内存管理子系统数据结构msg_msg系统调用mq_openmq_sendmq_receiveshm_openmmapmunmap实现位置mm/shmem.cmm/mmap.c与 System V 的关系功能相似, 可类比实现方式不同, 但都使用 shmem结论: POSIX 消息队列放在ipc/目录是因为它是 IPC 机制, 而 POSIX 共享内存放在mm/

荒坡_KingRumn 1321

POSIX和System V的各类IPC函数接口

当我们在linux系统中进行进程间通信时,会发现例如共享内存,信号量,消息队列等方式时,会发现有System v以及POXIS两种类型。因此,我们探究一下System v和POXIS到底代表着什么意义。一.POSIX POSIX(Portable Operating System Interface for Computing Systems)是由IEEE 和ISO/IEC 开发的一簇标准。该...

肥嘟嘟的左卫门 959
下一篇: Linux网络编程——并发服务器模型
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值