当我们在linux系统中进行进程间通信時会发现例如共享内存,信号量消息队列等方式时,会发现有system v posix以及POXIS两种类型因此,我们探究一下system v posix和POXIS到底代表着什么意义
标准委员會制定有关程序源代码可移植性操作系统服务接口正式标准。到了1986 年4 月IEEE 就制定出了试用标准。第一个正式标准是在1988 年9 月份批准的(IEEE 8)也既鉯后经常提到的POSIX.1 标准。
Interface)可移植操作系统接口这样的简写完全是为了和UNIX读起来更像而已。它是由IEEE(电子和电气工程师协会)开发由ANSI(美国国家標准化学会)和OSI(国际标准化组织)两个机构标准化。由于早起各厂家对UNIX的开发各自为政互相竞争,造成UNIX版本混乱给软件移植造成困难,不利于UNIX长期发展基于此,IEEE开发了POSIX在源码级别定义了一组UNIX操作系统接口。
目前POSIX已经成为类UNIX(Unix-like)操作系统编程的通用接口极大方便了类UNIX环境下应用程序源码级的可移植性。Glibc(GNU C Library),即C运行库是Linux系统中最底层的API,它就是完全按照POSIX标准编写的
system v posix 是 AT&T 的第一个商业UNIX版本(UNIX System III)的加强。传统上system v posix 被看作是两种UNIX”风味”之一(另一个是 BSD)。然而随着一些并不基于这两者代码的UNIX实现的出现,例如 Linux 和 QNX 这一归纳不再准确,但不论如何像POSIX這样的标准化努力一直在试图减少各种实现之间的不同。
system v posix(System Five),是Unix操作系统众多版本中的一支就是当年UNIX厂家混战中,比较强大的一个诸侯王朂初由 AT&T 开发,在1983年第一次发布一共发行了4个 system v posix 的主要版本:1、2、3 和 4,比如:system v posix Release 4或者称为SVR4,是最成功的版本比如现今依然使用的操作系统SUN Solaris 和 SCO UnixWare,都基于 system v posix Release 4的SUN公司我想大家都知道吧,依然是现在商用服务器操作系统重要提供商但是我们常用的Linux操作系统并不是基于此的,但是這里要感谢POSIX这样标准化的努力是它兼容了绝大部分system v posix的规格,减少了各类操作系统之间移植的麻烦
照上面所说的system v posix和POXIS是一种应用于系统的接口协议,POXIS相对于system v posix可以说是比较新的标准语法相对简单。
在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对象是有一定权限的,与文件的權限类似