Unix Standardization and Implementations

news2024/10/24 23:17:27

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.coloradmin.cn/o/2210989.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI 时代技术盛宴 —— 稀土掘金 × 豆包 MarsCode 青训营等你来!

各位 CSDN 的小伙伴们&#xff0c;今天我要给大家带来一个超级棒的消息&#xff01;稀土掘金与豆包 MarsCode 强强联手&#xff0c;共同打造的青训营再次上线啦&#xff01; 在这个飞速发展的 AI 时代&#xff0c;这场青训营玩出了不一样的精彩。它携手 AI 伙伴豆包 MarsCode&…

一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB区别,适用场景

文章目录 一、常用数据库概览1.1 关系型数据库1.2 非关系型数据库1.2.1 KV数据库1.2.2 文档型数据库1.2.3 列式存储数据库1.2.4 图数据库 1.3 SQL与NoSQL区别1.3.1 结构化与非结构化1.3.2 关联和非关联1.3.3 查询方式1.3.4 事务1.3.5 总结 二、MySQL三、PostgreSQL3.1 特点、适…

计组_中断响应条件

2024.10.13&#xff1a;计算机组成原理学习笔记 中断响应条件 条件1&#xff1a;CPU要处于开中断状态条件2&#xff1a;至少要有一个未被屏蔽的中断请求屏蔽&#xff1f;中断优先级屏蔽字的作用 条件3&#xff1a;当前指令刚执行完 条件1&#xff1a;CPU要处于开中断状态 当CP…

Redis:分布式 - 主从复制

Redis&#xff1a;分布式 - 主从复制 概念配置主从模式info replicationslave-read-onlytcp-nodelay 命令slaveof 主从结构一主一从一主多从 主从复制流程数据同步命令全量同步部分同步实时同步 节点晋升 概念 Redis的最佳应用&#xff0c;还是要在分布式系统中。对于非分布式…

如何解决 Vim 中的 “E212: Can‘t open file for writing“ 错误:从编辑到权限管理(sudo)

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

Squad战术小队开服教程

1、登录服务器&#xff08;百度莱卡云游戏面板&#xff09; 登录面板的信息在绿色的登陆面板按键下方&#xff0c;不是你的莱卡云账号 进入控制面板后会出现正在安装的界面&#xff0c;大约10分钟左右就能安装完成 2、设置 点击目录上的网络&#xff0c;你可以看到三个端口 然…

【Python】Twisted:让自定义网络应用开发变得简单

Twisted 是 Python 中一个成熟、功能强大的事件驱动网络编程框架。它支持多种协议&#xff0c;如 HTTP、FTP、SMTP 等&#xff0c;可以用于构建高性能的网络应用&#xff0c;包括网络服务器、客户端、代理服务器等。Twisted 的核心是基于事件驱动模型&#xff0c;能够有效处理大…

el-date-picker设置只有某些日期可选

示例图&#xff1a; <el-date-pickerv-model"topFormObj.upTime"type"date"value-format"timestamp"format"dd/MM/yyyy":picker-options"pickerOptions" /> 固定限制每周的周末周三不可选 data() {return {pickerOp…

Leetcode 乘积最大子数组

该算法的目的是求出一个整数数组中乘积最大的连续子数组。 算法思想&#xff1a; 问题分析&#xff1a; 我们需要在数组中找到连续的子数组&#xff0c;使得该子数组的乘积最大。这个问题类似于“最大子序和”&#xff0c;但乘积相比求和有更多的复杂性&#xff0c;特别是当数…

销售管理的五大职能

什么是销售管理 销售管理&#xff0c;这一看似简单的概念&#xff0c;实则蕴含着丰富的内涵与细致的操作。它不仅仅是对销售团队的监督和对客户满意度的追求&#xff0c;更是通过一系列策略和手段&#xff0c;优化销售流程&#xff0c;提升业务成果的过程。 销售管理的内核 …

electron本地OCR实现

使用tesseract.js - npm (npmjs.com) 官方demo&#xff1a;GitHub - Balearica/tesseract.js-electron: An example to use tesseract.js in electron 目录结构&#xff1a; async function ocr() {const worker await Tesseract.createWorker("chi_sim", 1, {wor…

前端打印功能(vue +springboot)

后端 后端依赖生成pdf的方法pdf转图片使用(用的打印模版是带参数的 ,参数是aaa)总结 前端页面 效果 后端 依赖 依赖 一个是用模版生成对应的pdf,一个是用来将pdf转成图片需要的 <!--打印的--><dependency><groupId>net.sf.jasperreports</groupId>&l…

探索 YOLO11:更快、更智能、更高效

点击下方卡片&#xff0c;关注“小白玩转Python”公众号 在人工智能这个不断进化的世界中&#xff0c;有一件事我们可以肯定&#xff1a;模型不断变得更好、更快、更智能。就在你以为 YOLO 系列已经达到顶峰时&#xff0c;Ultralytics 推出了最新升级——YOLO11。没错&#xff…

K-means 聚类算法:目标函数推导、迭代过程及可视化解析

一、K-means 的背景 在机器学习领域&#xff0c;许多任务涉及 训练模型来做预测或分类 。比如&#xff0c;医生可能希望通过以往的病例数据来预测某个病人未来是否会患上某种疾病&#xff0c;或者新闻网站可能需要根据文章的主题将新闻自动分类。这些任务通常依赖于有标签的数…

Qt之TCP收发图片的例子

一.效果 二.实现 1.发图片 void MainWindow::slotSendImage() {matrix.rotate(90);QPixmap tempPixmap = pixmap.transformed(matrix);QBuffer buffer;tempPixmap.save(&buffer,"jpg");ui->labelImage->setPixmap(tempPixmap);int dataLength = buffer.d…

UE4 材质学习笔记09(雨水水坑着色器/完整雨水着色器)

一.雨水水坑着色器 要用到这样一个噪声贴图&#xff0c;我们要做的就是&#xff0c;做出水坑并让水坑在这种浑浊的噪点中产生&#xff0c;因此水坑将从最暗的斑点生长&#xff0c;然后随着它继续占据越来越亮的像素而生长 现在水坑将从上到下投射到世界空间中&#xff0c;所以…

C++:模拟priority_queue

目录 priority_queue的介绍 概念 特点 priority_queue的使用 基本操作 演示代码 ​编辑 priority_queue的模拟实现 仿函数 向上调整和向下调整 模拟实现的代码 priority_queue的介绍 概念 在C标准库中&#xff0c;priority_queue是一个基于优先级堆的容器适配器。…

设计感十足的喇叭裤来咯,亲子款get~

微喇叭的设计&#xff0c;时尚感爆棚&#xff0c;瞬间让宝贝成为冬日里的小潮人。而且这种设计非常显瘦&#xff0c;能够很好地修饰宝贝的腿型&#xff0c;穿上秒变大长腿。表面磨毛质感&#xff0c;摸起来舒软绒顺&#xff0c;温柔气质&#xff0c;下脚隐形拉链&#xff0c;拉…

如何通过 Nginx 只允许 www 域名访问并禁止裸域名访问

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

learn C++ NO.23——map、set的模拟实现

STL库的实现方式 map和set的底层用的红黑树是一样的吗&#xff1f;从容器特点的角度出发&#xff0c;这里个容器的底层应该分别用key搜索模型的红黑树和key value 搜索模型的红黑树。但是&#xff0c;从库的设计角度出发&#xff0c;这两者用同一份红黑树代码更好。而STL就是用…