#Linux#进程间通信# System V标准&POSIX标准

在linux系统中进行进程间通信时,会发现例如共享内存,信号量,消息队列等进程之间共享方式时,经常会发现有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: UNIX两大贡献者贝尔实验室和BSD,在进程之间通信侧重不同,前者基于内核对进程之间的通信手段进行了改进,形成了“System V IPC”,而后者则是基于网络形成了套接字Socket。
  • POSIX: IEEE制定的标准,目的是为运行在不同操作系统上的软件提供统一的接口,实现者则是不同的操作系统内核开发人员。

效率性能

  • System V: PSYSTEM V在同步互斥手段方面的无竞争条件下是无论何时都会陷入内核,性能稍低。
  • POSIX:POSIX在同步互斥手段方面的无竞争条件下是不会陷入内核的,性能稍差较高。

冗余可靠性

  • System V: System V提供了SEM_UNDO选项可以解决成功获取信号量后,进程如果意外终止,将无法释放信号量个问题。可靠性高。
  • POSIX:POSIX的sem_wait函数成功获取信号量后,进程如果意外终止,将无法释放信号量。可靠性差。

操作系统

  • System V: System V操作系统实现相当广泛。
  • POSIX:可能有小部分操作系统没有实现POSIX标准。

移植性

  • System V: 不同操作系统System V存在一些差异。
  • POSIX:可移植性POSIX必然是一个趋势。

进程间&线程间通信同步

  • System V:System V更多用于进程间通信,线程间使用较少。线程相对于进程是轻量级的,例如调度的策略开销,如果使用System V这种每次调用都会陷入内核的接口,会丧失线程的轻量优势。所以,多线程之间的通信不使用System V的接口函数
  • POSIX:POSIX进程间&线程间通信同步更优。

 

POSIX标准有逐渐取代System V标准趋势

 

你可能感兴趣的:(进程间通信,System,V标准,POSIX标准,进程间通信)