Unix Standardization and Implementations

server/2024/10/18 5:07:39/

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结尾

.在这里插入图片描述


http://www.ppmy.cn/server/132684.html

相关文章

【算法】约瑟夫环问题

据说著名的犹太历史学家Josephus有过以下故事&#xff0c; 罗马人占领乔塔帕特&#xff0c; 39个犹太人与Josephus和他的朋友躲在洞中&#xff0c;其中39个犹太人决定自杀&#xff0c; &#xff0c;他们的自杀方式是41个人绕成一圈&#xff0c;第一个人报数1&#xff0c;报数到…

M1 Mac打开Jupyter notebook

当我成功安装了Jupyter之后&#xff0c;发现无法通过 jupyter notebook 开始工作。 最初的问题是 zsh command not found 该问题是个路径问题&#xff0c;通过添加PATH环境变量就行了&#xff0c;设置环境变量时需要注意&#xff0c;zshrc和bash_profile中都可以设置&…

基于Matlab的人脸识别系统设计与仿真(含源文

目录 第一章 绪论 1.1 研究背景 1.2 人脸图像识别的应用前景 1.3 本文研究的问题 1.4 识别系统构成 1.5 论文的内容及组织 第二章 图像处理的Matlab实现 2.1 Matlab简介 2.2 数字图像处理及过程 2.2.1图像处理的基本操作 2.2.2图像类型的转换 2.2.3图像…

串口(UART)的FPGA设计(接收与发送模块)

目录 串口基础知识 一、什么是串口?有哪些特点? 二、常见的串口通信协议有哪些?他们有什么区别?

Failed to connect to github.com port 443

git push无法连接443端口 **问题1****方法一&#xff1a;取消代理设置**git命令 其他解决方案1. **设置 Git 使用 HTTP 而不是 HTTPS**2. **检查证书**3. **配置 Git 忽略 SSL 验证&#xff08;不推荐&#xff09;**4. **检查代理设置** 问题1 Failed to connect to github.com…

Android/鸿蒙应用的资源配置技巧

HarmonyOS NEXT的发布是一道分界线&#xff0c;它将脱离安卓架构&#xff0c;成为真正独立的操作系统&#xff0c;也被称为“纯血鸿蒙”。 目前已有多家头部企业正加速鸿蒙原生应用开发&#xff0c;包括支付宝、美团、京东、钉钉、小红书、新浪、网易等&#xff0c;覆盖便捷生…

GESP CCF python一级编程等级考试认证真题 2024年9月

一、单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09; 第 1 题 据有关资料&#xff0c;山东大学于1972年研制成功DJL-1计算机&#xff0c;并于1973年投入运行&#xff0c;其综合性能居当时全国第三位。DJL-1计算机运算控制部分所使用的磁心存储元件由磁心颗粒组成…

性能优化-SQL查询优化技巧全解

SQL查询优化技巧全解 在数据库操作中&#xff0c;SQL查询的性能直接影响到应用程序的响应速度。本文将深入探讨SQL查询优化的关键技术&#xff0c;并结合实例展示如何使用itBuilder这款强大的数据库设计、建模软件&#xff0c;来辅助提升开发效率。 1. SQL查询基础与执行计划…