Unix Standardization and Implementations

Unix标准化

在Unix未制定较为完备的标准时,各个平台的系统调用方式各异,所开发出的应用程序存在可移植性差的特点,因此人们呼吁指定一套Unix标准来规范接口,增加应用程序的可移植性。所谓Unix标准即适用于Unix环境下的一系列函数接口和常量限制,Unix标准主要由三部分组成,ISO C\POSIX\SUS

ISO C

ISO C即C语言标准 ,C语言中的标准库函数声明均是由ISO C定义的。此标准针对的不仅仅是Unix环境,其目的是在任何平台下(甚至是非Unix)都能使用统一的接口实现特定的功能 (例如C标准库中提供的printf方法,在Windows中也适用)

ISO C标准声明的方法均在C标准头文件中已经设置

可以看到所有的平台都必须支持ISO C标准

IEEE POSIX

POSIX标准指的是可移植性操作系统接口 ,其目的在于提供一系列接口和常量限制,这些接口和常量限制在Unix环境或类Unix环境中通用,细分为必要标准和可选标准 ,可选标准每个平台有所不同。(POSIX标准也支持了ISO C标准)

SUS

SUS又称单一Unix规范,是POSIX标准的一个超集,它在POSIX标准的基础上附加了额外的扩展,基本上就是需要支持POSIX中给出的一些可选接口 (X/Open系统接口) ,真正的Unix必须满足SUS标准

Unix系统实现

Unix标准只是规定了统一的接口和常量,接口的具体实现个平台会有所不同

UNIX System V Release4

System V,也被称为AT&T System V,是Unix操作系统众多版本中的一支。它最初由AT&T开发,在1983年第一次发布。一共发行了4个System V的主要版本:版本1、2、3和4。System V Release 4,或者称为SVR4,是最成功的版本,成为一些UNIX共同特性的源头

FreeBSD

FreeBSD 是一种类UNIX操作系统,是经由 BSD、386BSD 和 4.4BSD 发展而来的Unix的一个重要分支。FreeBSD 为不同架构的计算机系统提供了不同程度的支持。并且一些原来 BSD UNIX 的开发者后来转到 FreeBSD 的开发,使得 FreeBSD 在内部结构和系统 API 上和UNIX 有很大的兼容性。

Linux

Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds)于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它支持32位和64位硬件,能运行主要的Unix工具软件、应用程序和网络协议。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux有上百种不同的发行版。

Unix限制

Unix标准提供了很多常量(宏define)来表示系统限制,例如定点数浮点数的上下限,这些限制分为编译时限制和运行时限制
编译时限制一般是平台固定的,在任何情况下都不会改变,这类限制通常直接在头文件(如<limits.h>)中直接定义,可以通过查看头文件直接获取具体值;
运行时限制在编译时无法获知,在头文件中仅会进行声明并不会给出定义,一般都需要通过进程中sysconf\pathconf\fpathconf系统调用来获取。

三个标准均对Unix限制做出了贡献,下面一一介绍。

ISO C Limits

ISO C给出的限制基本上都是数值类型的上下限,也是平时编码中最常用的,这些限制均已经在<limits.h>头文件给出定义

POSIX Limits



这些限制在源文件中需要把_POSIX前缀替换为_SC或_PC才可用,这一点对XSI 限制同样适用

XSI Limits

conf系统调用

conf系统调用主要用于获取运行时的限制,一般参数name都是以_SC或_PC为前缀的宏



基本系统数据类型

历史上,某些UNIX系统变量已与某些C数据类型联系在一起,例如,历史上主、次设备号存放在一个16位的短整型中,8位表示主设备号,另外8位表示次设备号。但是,很多较大的系统需要用多于 256个值来表示其设备号,于是,就需要一种不同的技术。头文件<sys/types.h>中定义了某些与实现有关的数据类型,它们被称为基本系统数据类型(primitive system datatype) 。还有很多这种数据类型定义在其他头文件中。在头文件中,这些数据类型都是用C的typedef来定义的。它们绝大多数都以_t结尾

.

相关推荐
吴梓穆2 小时前
UE5学习笔记 FPS游戏制作38 继承标准UI
笔记·学习·ue5
V---scwantop---信3 小时前
英文字体:大胆都市街头Y2Y涂鸦风格品牌海报专辑封面服装字体 Chrome TM – Graffiti Font
笔记·字体
Moonnnn.3 小时前
运算放大器(四)滤波电路(滤波器)
笔记·学习·硬件工程
吴梓穆4 小时前
UE5学习笔记 FPS游戏制作37 蓝图函数库 自己定义公共方法
笔记·学习·ue5
吴梓穆4 小时前
UE5学习笔记 FPS游戏制作41 世界模式显示UI
笔记·学习·ue5
s_little_monster5 小时前
【Linux】进程信号的捕捉处理
linux·运维·服务器·经验分享·笔记·学习·学习方法
RedMery5 小时前
论文阅读笔记:Denoising Diffusion Implicit Models (4)
论文阅读·笔记
go_bai6 小时前
Linux环境基础开发工具——(2)vim
linux·开发语言·经验分享·笔记·vim·学习方法
吴梓穆6 小时前
UE5学习笔记 FPS游戏制作35 使用.csv配置文件
笔记·学习·ue5
100分题库小程序6 小时前
2025年机动车授权签字人考试判断题分享
经验分享·笔记