《UNIX网络编程 卷2:进程间通信(第2版)》——1.7 Unix标准-阿里云开发者社区

开发者社区> 异步社区> 正文

《UNIX网络编程 卷2:进程间通信(第2版)》——1.7 Unix标准

简介: Posix是“可移植操作系统接口”(Portable Operating System Interface)的首字母缩写。它并不是一个单一标准,而是一个由电气与电子工程师学会即IEEE开发的一系列标准。
+关注继续查看

本节书摘来自异步社区《UNIX网络编程 卷2:进程间通信(第2版)》一书中的第1章,第1.7节,作者:【美】W. Richard Stevens著,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.7 Unix标准

有关Unix标准化的大多数活动是由Posix和Open Group做的。

1.7.1 osix
Posix是“可移植操作系统接口”(Portable Operating System Interface)的首字母缩写。它并不是一个单一标准,而是一个由电气与电子工程师学会即IEEE开发的一系列标准。Posix标准还是由ISO(国际标准化组织)和IEC(国际电工委员会)采纳的国际标准,这两个组织合称为ISO/IEC。Posix标准经历了以下若干代。

IEEE Std 1003.1-1988(共317页)是第一个Posix标准。它说明进入类Unix内核的C语言接口,涉及下列领域:进程原语(fork、exec、信号、定时器)、进程环境(用户ID、进程组)、文件与目录(所有I/O函数)、终端I/O、系统数据库(口令文件和用户组文件)、tar与cpio归档格式。

第一个Posix标准是出现于1986年称为“IEEEIX”的试用版本。Posix这个名字是由Richard Stallman建议使用的。
IEEE Std 1003.1-1990(共356页)是下一个Posix标准,它也是国际标准ISO/IEC 9945-1: 1990。从1988年版本到1990年版本只做了少量的修改。新添的副标题为“Part 1: System Application Program Interface (API) [C Language]”,指示本标准为C语言API。

IEEE Std 1003.2-1992出版成两卷本,共约1300页,其副标题为“Part2: Shell and Utilities”。这一部分定义了shell(基于System V的Bourne shell)和大约100个实用程序(即通常从shell启动执行的程序,包括awk、basename、vi和yacc等)。本书称这个标准为Posix.2。
IEEE Std 1003.1b-1993(共590页)先前称为IEEE P1003.4。这是对1003.1-1990标准的更新,添加了由P1003.4工作组开发的实时扩展:文件同步、异步I/O、信号量、内存管理(mmap和共享内存区)、执行调度、时钟与定时器、消息队列。
IEEE Std 1003.1,1996年版[IEEE 1996]包括1003.1-1990(基本API)、1003.lb-1993(实时扩展)、-1995 (Pthreads)和1003.1i-1995(对1003.1b的技术性修正)。这个标准也称为ISO/IEC 9945-1: 1996。其中增加了三章线程内容以及有关线程同步(互斥锁和条件变量)、线程调度和同步调度的额外各节。本书称这个标准为Posix.1。
743页中有四分之一强的篇幅是标题为“Rationale and Notes”(原理与注解)的附录。这些原理含有历史性信息以及某些特性必须加入或删除的理由,它们通常跟正式标准一样有教益。
遗憾的是IEEE标准在因特网上不是免费可得的。其订购信息在[IEEE 1996]的参考文献说明中给出。
注意信号量在实时标准中定义,它与在Pthreads标准中定义的互斥锁和条件变量相分离,这足以解释它们的API中存在的某些差异。
最后注意读写锁(尚)不属于任何Posix标准。我们将在笫8章中详细讨论。
将来某个时候印制的新版本的IEEE Std 1003.1应包括P1003.lg标准,它是我们在UNPvl中讲述的网络编程API(套接字和XTI)。

1996年版的Posix.1标准的前言中声称ISO/IEC 9945由下面三个部分构成。

Part 1: System application program interface (API) [C Language](第一部分:系统应用程序接口(API)[C语言])。
Part 2: Shell and utilities(第二部分:Shell和实用程序)。
Part 3: System administration(第三部分:系统管理)(正在开发中)。
第一部分和第二部分就是我们所称的Posix.1和Posix.2。

Posix标准化工作仍将继续,任何论述到它的书籍都在跟踪这项工作。
1.7.2 Open Group
Open Group是由X/Open公司(1984年成立)和开放软件基金会(OSF,1988年成立)于1996年合并而成的组织。它是由厂家、业界最终用户、政府部门和学术机构组成的国际组织。它们的标准经历了以下若干代。

X/Open公司于1989年出版了“X/Open Portability Guide”(《X/Open移植性指南》)第3期(XPG3)。
第4期于1992年出版,这一期的第2版于1994年出版。这个最终版本也称为“Spec ,其中魔数1170是系统接口数(926个)、头文件数(70个)和命令数(174个)的总和。这组规范的最终名字是“X/Open Single Unix Specification”(X/Open单一Unix规范),也称为“Unix 。
1997年3月单一Unix规范的第2版发表。符合这个规范的产品可称为“Unix ,这也是本书提到这个规范所用的名称。Unix 98所需的接口数从1170个增加到1434个,然而,适用于工作站的接口数却猛增到3030个,因为它包含CDE(公共桌面环境,Common Desktop Environment),而CDE又反过来要求有X Windows系统和Motif用户接口。
单一Unix规范的许多文档可在因特网上从这个站点免费取得。
1.7.3 Unix版本和移植性
当今大多数Unix系统符合Posix.1和Posix.2的某个版本。我们使用限定词“某个”是因为Posix每次更新(例如1993年增加实时扩展,1996年增加Pthreads内容),厂家都得花一两年(甚至更长的时间)去实现并加入最近的更新内容。

从历史上看,多数Unix系统或者源自Berkeley,或者源自System V,不过这些差别在慢慢消失,因为大多数厂家已开始采用Posix标准。仍然存在的主要差别在于系统管理,这是一个目前还没有任何Posix标准可循的领域。

运行本书中大多数例子的平台是Solaris 2.6和Digital Unix 4.0B。其原因在于写到此处时(1997年末到1998年初),只有这两种Unix系统支持System V IPC、Posix IPC及Posix线程。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
VB编程:对数组进行二分查找
VB编程:对数组进行二分查找
5 0
UNIX环境高级编程笔记之进程环境
本章讲的都是一些非常基础的知识,目的是为了下一章讲进程控制做铺垫,所以,本章就不做过多的总结了,直接看图吧。
703 0
UNIX环境高级编程笔记之进程控制
  本章重点介绍了进程控制的几个函数:fork、exec族、_exit、wait和waitpid等,主要需要掌握的是父进程和子进程之间的运行机制,怎么处理进程的正常和异常终止、以及怎么让进程执行不同的程序等知识点。下一章将进一步说明一个进程和其他进程之间的关系——会话和作业控制。
678 0
《UNIX网络编程 卷2:进程间通信(第2版)》——1.8 书中IPC例子索引表
生产者-消费者:一个或多个线程或进程(生产者)把数据放到一个共享缓冲区中,另有一个或多个线程或进程(消费者)对该共享缓冲区中的数据进行操作。序列号持续增1:一个或多个线程或进程给一个共享的序列号持续增1。该序列号有时在一个共享文件中,有时在共享内存区中。
1072 0
《UNIX网络编程 卷2:进程间通信(第2版)》——1.7 Unix标准
Posix是“可移植操作系统接口”(Portable Operating System Interface)的首字母缩写。它并不是一个单一标准,而是一个由电气与电子工程师学会即IEEE开发的一系列标准。
1427 0
《UNIX网络编程 卷2:进程间通信(第2版)》——1.9 小结
各种类型IPC的持续性可以是随进程持续的、随内核持续的或随文件系统持续的,这取决于IPC对象存在时间的长短。在为给定的应用选择所用的IPC类型时,我们必须清楚相应IPC对象的持续性。
1224 0
设置windows网络连接别名和linux网络连接别名
windows网络连接别名 C:\Windows\System32\drivers\etc目录下的hosts文件中添加 127.0.0.1 localhost 192.168.1.100 proxy.
687 0
Linux内核分析(四)----进程管理|网络子系统|虚拟文件系统|驱动简介
原文:Linux内核分析(四)----进程管理|网络子系统|虚拟文件系统|驱动简介 Linux内核分析(四) 两天没有更新了,上次博文我们分析了linux的内存管理子系统,本来我不想对接下来的进程管理子系统、网络子系统、虚拟文件系统在这个阶段进行分析的,但是为了让大家对内核有个整体的把握,今天还是简单的介绍一下剩余的几个子系统,我们对这几个子系统的分析,只要了解其作用和部分内容即可,不必深究,等我们写上几个驱动,到时候按照驱动再来分析这几个子系统我们就清晰多了。
951 0
+关注
异步社区
异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
12049
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载