UNIX系统实现

实现

标准只是接口的规范。这些标准由制造商采用,然后转变成具体实现。
UNIX的各种版本和变体都起源于在PDP-11系统上运行的UNIX分时系统第6版和第7版。这两个版本是在贝尔实验室意外首先得到广泛应用的UNIX系统。从树上演变出三个分支:
1. AT&T分支,从此到处了系统III和系统V。
2. 加州大学伯克利分校分支,从此到处4.xBSD实现。
3. 由AT&T贝尔实验室的计算科学研究中心开发的UNIX研究版本,从此到处UNIX分时系统第8、第9版以及于1990年发布的最后一版第10版。

限制

UNIX系统实现定义了很多幻数和常量,其中有很多已被硬编码进程序中,或用特定的技术确定。由于大量标准化工作的努力,已有若干种可移植的方法用以确定这些幻数和实现定义的限制。这非常有助于软件的可移植性。
以下两种类型的限制是必需的:
1. 编译时限制(例如,短整型的最大值是什么?)。
2. 运行时限制(例如,文件名可以有多少个字符?)。

编译时限制可在头文件中定义,程序在编译时可以包含这些头文件。但是,运行时限制则要求进程调用一个函数以获得此种限制值。
另外,某些限制在一个给定的实现中可能是固定的,而在另一个实现上则可能是变化的。这类限制的一个例子是文件名的最大字符数。文件名的最大长度依赖于该文件处于何种文件系统中,例如,根文件系统中的文件名长度限制可能是14个字符,而在另一个文件系统中文件名长度限制可能是255个字符,这是运行时限制的一个例子。
为了解决这类问题,提供了一下三种限制:
1. 编译时限制
2. 不与文件或目录相关联的运行时限制(sysconf函数)
3. 与文件或目录相关联的运行时显示(pathconf和fpathconf函数)

冲突

就整体而言,这些不同的标准之间配合的相当好。但是我们也很关注它们之间的差别,特别是ISO C标准和POSIX.1之间的差别。
有一个相同的术语,即每秒钟滴答数,但ISO C和POSIX.1的定义却不懂,在Solaris中看到,其中clock返回微秒数(因此,CLOCK_PER_SEC是一百万),而sysconf为每秒钟的滴答数返回的值是100。
另一个可能产生冲突的领域是:在ISO C标准定义函数时,可能没有考虑到POSIX.1的某些要求。在POSIX环境下,有些函数可能要求有一个与C环境下不同的实现,因为POSIX环境中多个进程,而ISO C环境则很少考虑主机操作系统。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值