Unix Standardization and Implementations

ops/2024/10/21 11:38:50/

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/ops/125454.html

相关文章

<<迷雾>> 第11章 全自动加法计算机(6)--一只开关取数 示例电路

用一只开关依次将数取出 info::操作说明 刚启动时, t01, t1t20, 此时只有 IAR1. 按下开关 K 不要松开, 地址寄存器 AR 收到一个上升沿信号, 保存住当前地址, 并提供给存储器(注: 第一个地址为 0, 所以电路中暂看不出什么变化) 松开开关 K, 循环移位计数器 RR 得到一个上升沿信…

Python中的HTTP高手:如何玩转requests模块

引言 在日常开发工作中&#xff0c;我们经常需要从远程服务器获取信息或向其发送数据。比如&#xff0c;当你要抓取网页内容时&#xff0c;或者在开发Web应用时需要调用第三方API接口等场景下&#xff0c;掌握如何高效地发送HTTP请求就显得尤为重要了。Requests模块正是为此而…

es6中函数新增扩展有哪些

在ES6中&#xff0c;函数新增了多个有用的扩展&#xff0c;极大增强了JavaScript的函数处理能力。以下是主要扩展及其使用场景&#xff1a; 1. 箭头函数 (Arrow Function) 简化函数定义&#xff0c;且不绑定自己的this。 const sum (a, b) > a b;使用场景&#xff1a;箭…

phpstorm+phpstudy 配置xdebug(无需开启浏览器扩展)

今天又被xdebug折磨了&#xff0c;忘记了以前咋配置了现在百度发现好多都是各种浏览器扩展而且也没有真正的用到项目上的都是测试的地址怎么样的 我就简单写一下自己实战吧 不支持workerman swoole hyperf等这种服务框架 如果你会请教教我 工具版本phpstudy8.1.xphpstorm2021.x…

技术周刊 | 用 AI 生成完整全栈应用这事儿终于有人做出来了

大家好&#xff0c;我是童欧巴。欢迎来到第 130 期周刊。 大厨推荐 StackBlitz 推出 bolt.new&#xff0c;一个由 AI 驱动的开发沙箱。允许你直接在浏览器通过提示词生成、运行、编辑和部署全栈应用程序&#xff0c;而无需本地设置。 与 Claude、v0 等不同的是&#xff0c;它…

常用Linux命令大全

前言 作为一名后端工程师&#xff0c;使用终端是一种常见的做法&#xff0c;也是你应该学习的技能。许多命令和实用程序可以帮助你在使用 Linux 时更有效地完成任务。 基本Linux命令 如果你想使用 Linux 操作系统&#xff0c;学习常用的命令将会大有帮助。本篇将为后端工程师…

云卓H30:引领科技与性能的完美融合!

在科技日新月异的今天&#xff0c;一款集高性能与便捷操作于一体的手持地面站成为了无人机、机器人等智能设备的得力助手。云卓H30手持地面站&#xff0c;凭借其搭载的高通骁龙660处理器&#xff0c;在多个适用场景中展现出了卓越的实力。 高通骁龙660&#xff0c;这款先进的移…

树莓派应用--AI项目实战篇来啦-15.SSD Mobilenet V3目标检测

1. Mobilenet 介绍 Mobilenet 是一种专为移动和嵌入式视觉应用而设计的卷积神经网络。它们不使用标准的卷积层&#xff0c;而是基于使用深度可分离卷积的简化架构&#xff0c;使用这种架构&#xff0c;我们可以为移动和嵌入式设备&#xff08;例如&#xff1a;树莓派&#xff0…