System v 和Posix的主要功能和定义

 

  作者:华清远见讲师

  当我们在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 标准。

  System 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和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函数操作中都需要利用这个类型是参数。

  具体的进程间通信区别就不在这里赘述了,以后再写。

  >>>更多优秀技术博文来自嵌入式学院更新

时间: 2024-08-28 07:42:32

System v 和Posix的主要功能和定义的相关文章

system v和posix的共享内存对比

参考 http://www.startos.com/linux/tips/2011012822078.html 1)Linux和所有的UNIX操作系统都允许通过共享内存在应用程序之间共享存储空间. 2)有两类基本的API函数用于在进程间共享内存:System v和POSIX.  (当然,还有mmap,属于POSIX的) 3)这两类函数上使用相同的原则,核心思想就是任何要被共享的内存都必须经过显示的分配. 4)因为所有进程共享同一块内存,共享内存在各种进程间通信方式中具有最高的效率. 5)内核没有

glibc库详解及与POSIX,system V这些库之间关系的说明

自己想了解下关于system v,在网上看到一篇详细的说明,与大家分享一下,原文地址http://hi.baidu.com/tekuba/item/570887775696542e5c178918 以前对glibc,POSIX等的关系一直很迷惑.这是今天在网上找到的说明glibc,POSIX,system V关系的一篇不错的文章,虽然有些地方不通顺(大概是直接用机器翻译过来的),但大概意思能明白了.通过下面的说明,我们就可以明白linux应用层的层次构造.关键是glibc,他是linux最底层的

消息队列接口API(posix 接口和 system v接口)

消息队列 posix API 消息队列(也叫做报文队列)能够克服早期unix通信机制的一些缺点.信号这种通信方式更像\"即时\"的通信方式,它要求接受信号的进程在某个时间范围内对信号做出反应,因此该信号最多在接受信号进程的生命周期内才有意义,信号所传递的信息是接近于随进程持续的概念(process-persistent):管道及有名管道则是典型的随进程持续IPC,并且,只能传送无格式的字节流无疑会给应用程序开发带来不便,另外,它的缓冲区大小也受到限制消息队列就是一个消息的链表.可以把消

UNIX 进程间通讯(IPC)概念(Posix,System V IPC)

 IPC(Inter-Process Communication,进程间通讯)可以有三种信息共享方式(随文件系统,随内核,随共享内存).(当然这里虽然说是进程间通讯,其实也是可以和线程相通的). 相对的IPC的持续性(Persistence of IPC Object)也有三种: 随进程持续的(Process-Persistent IPC) IPC对象一直存在,直到最后拥有他的进程被关闭为止,典型的IPC有pipes(管道)和FIFOs(先进先出对象) 随内核持续的(Kernel-persist

Posix与System V共享内存函数区别

Posix标准shm_open:打开或创建一个共享内存区shm_unlink:删除一个共享内存区ftruncate:调整文件或共享内存区大小sem_open:创建信号量sem_wait:等待信号量sem_post:发送信号量sem_close:关闭信号量 System V标准ftok:生成keyshmget:建立共享内存shmdt:删除共享内存区semget:创建信号量semop:操作信号量semctl:控制信号量 简单解释一下ipcs命令和ipcrm命令.取得ipc信息:ipcs [-m|-q

Linux 内核信号量与用户态信号量(System V&POSIX)总结

一.什么是信号量 信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有. 信号量的值为正的时候,说明它空闲.所测试的线程可以锁定而使用它.若为0,说明它被占用,测试的线程要进入睡眠队列中,等待被唤醒. 二.信号量的分类 在学习信号量之前,我们必须先知道——Linux提供两种信号量: (1) 内核信号量,由内核控制路径使用 (2) 用户态进程使用的信号量,这种信号量又分为POSIX信号量和SYSTEM V信号量. POSIX信号量又分为有名信号量和无名信号量. 有名信号

进程间通信(7) - 消息队列System V

1.前言 本篇文章的所有例子,基于RHEL6.5平台(linux kernal: 2.6.32-431.el6.i686). 2.介绍 System V消息队列是Open Group定义的XSI,不属于POSIX标准.System V IPC的历史相对很早,在上个世70年代后期有贝尔实验室的分支机构开发,80年代加入System V的系统内核中,后来商用UNIX系统基本都加入了System V IPC的功能. System V消息队列相对于POSIX消息队列的区别主要是: --POSIX消息队列

Linux程序设计学习笔记----System V进程间通信(信号量)

关于System V Unix System V,是Unix操作系统众多版本中的一支.它最初由AT&T开发,在1983年第一次发布,因此也被称为AT&T System V.一共发行了4个System V的主要版本:版本1.2.3和4.System V Release 4,或者称为SVR4,是最成功的版本,成为一些UNIX共同特性的源头,例如"SysV 初始化脚本"(/etc/init.d),用来控制系统启动和关闭,System V Interface Definitio

Linux系统编程——进程同步与互斥:System V 信号量

信号量概述 信号量广泛用于进程或线程间的同步和互斥,信号量本质上是一个非负的整数计数器,它被用来控制对公共资源的访问. 编程时可根据操作信号量值的结果判断是否对公共资源具有访问的权限,当信号量值大于 0 时,则可以访问,否则将阻塞.PV 原语是对信号量的操作,一次 P 操作使信号量减1,一次 V 操作使信号量加1. 在实际应用中两个进程间通信可能会使用多个信号量,因此 System V 的信号量以集合的概念来管理,具体操作和Posix 信号量大同小异,详情请点此链接:http://blog.cs