关于POSIX的研究,RTEMS的POSIX

news2025/1/11 9:00:12

https://www.cnblogs.com/hhddd-1024/p/17732334.html
https://panzhongxian.cn/cn/2022/01/what-is-posix-indeed/
https://www.cnblogs.com/alexliu2360/p/5674345.html
https://zhuanlan.zhihu.com/p/392588996

POSIX 是可移植操作系统接口 Portable Operating System Interface of UNIX 的缩写, POSIX 标准定义了操作系统应该为应用程序提供的接口标准,是在各种UNIX操作系统上运行的软件的一系列 API标准的总称。

一个POSIX API函数可以由一个系统调用实现,也可以通过调用多个系统调用来实现,还可以完全不使用任何系统调用。

C库提供了POSIX的绝大部分API,同时,内核提供的每个系统调用在C库中都具有相应的封装函数。

一般情况下,应用程序通过应用编程接口(API),而不是直接通过系统调用来编程。这点很重要,因为应用程序使用API实际上并不需要和内核提供的系统调用对应。一个API定义了一组应用程序使用的编程接口。它们可以调用一个系统调用,也可以通过调用多个系统调用来实现,而不使用任何系统调用也可以。实际上,API可以在各种不同的操作系统上实现,给应用程序提供完全相同的接口,而它们本身在这些系统上的实现却不同。

POSIX API 主要涉及文件操作、进程管理、线程管理、信号处理、网络通信等方面。

POSIX线程

与线程有关的函数构成了一个完整的系列,绝大多数函数的名字都是以pthread_开头的
要使用线程库中的函数,要通过引入头文件<pthread.h>
链接这些线程函数库时要使用编译器命令的-lpthread选项

RTEMS的pthread.h, rtems/cpukit/include/rtems/posix/pthread.h :
目前只允许用户为 POSIX 初始化线程指定入口点和堆栈大小。

设备和面向类的函数

termios机构
该结构在<termios.h>中定义,在控制特定的终端I/O特性中要用到。
函数原型:

#include<termios.h>
speed_t cfgetospeed(const struct termios *termios_p);
int cfsetospeed(struct termios *termios_p,speed_t speed);
speed_t cfgetispeed(const struct termios *termios_p);
int cfsetispeed(struct termios *termios_p,speed_t speed);

以上这些接口被用来在termios结构获得和设定输入与输出的波特率值。

IO多路复用

https://blog.csdn.net/weixin_41859900/article/details/130906873

IO多路复用是一种能够同时监控多个文件描述符的技术,其能够使得一个线程同时处理多个IO事件,提高系统的性能。Linux下主要有select、poll和epoll等系统调用可实现IO多路复用的技术。

1)select是基于POSIX定义的标准接口,具有跨平台,兼容性好,而且可以监听多种事件且支持超时等待,但其所支持的功能不太适合高并发的场景。其主要有以下三个缺点:
1 其所监听的文件描述符有限,默认为1024个,且支持越多性能越低。其fd_set集合是一个位图(bitmap)
2 每次调用select函数都需要重新设置监听的集合,且需要花费在用户态和内核态来回拷贝的开销。
3 每次文件描述符有事件通知时,都需要遍历整个fd_set集合。

2)而poll本质与select没有什么不同,其将传入的监视集合从位图改成结构体数组,在每个结构体中记录所监视的描述符以及相关事件,从而避免了每次调用select都需要重新设置监视集合的问题,且突破对文件描述符的限制,但select的缺点2 和 3还是保留了下来。

3)epoll则直接在内核中创建监视文件描述符集合的空间和通过使用回调通知来解决了前两种所存在的内存拷贝开销大和每次都需遍历(轮询)整个监视集合的问题。
epoll是Linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。

epoll的水平触发和边缘触发有什么区别?

水平触发和边缘触发是两种不同的事件触发方式。select和poll 只支持水平触发(LT 也叫条件触发),而epoll的默认方法也是水平触发。
水平触发(LT):当文件描述符有事件被触发时,内核会不断地通知应用程序进行数据的读取或写入,直到该事件被处理完毕。否则内核会一直通知应用程序处理该事件。*
边缘触发(ET):当文件描述符有事件被触发时,内核对该事件只会通知应用程序一次,即使没有处理该事件,内核也不会再通知,除非有新的事件到来。
区别: 边缘触发可以提高 I/O 处理效率,但也需要更加谨慎地处理事件,确保每个事件都被正确处理。而水平触发则相对简单一些,但会存在可能的性能问题。

同步和异步的概念和区别?

同步和异步是面对耗时操作(如函数调用,IO操作)的两种不同应对方式。
同步:可以形象理解为敌不动我不动,敌动我才动。就是需要等前面的语句执行完,才能执行下一个语句,因此面对耗时操作时大都采用阻塞来实现同步(比如read、listen等函数)。
异步:跟同步相反,面对耗时的操作时,可直接将其交给操作系统去处理,程序则接着继续执行下一条语句,而等操作系统完成操作时则通过中断等机制来通知应用程序。
区别: 同步适用于并发量小,耗时短的场景,而异步则使用于并发量大和耗时长的场景

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2274828.html

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

相关文章

如何获取文件的MIME类型

文章目录 1. 概念介绍2. 方法与类型2.1 使用方法2.2 常见类型3. 示例代码4. 内容总结我们在上一章回中介绍了"如何加载本地图片"相关的内容,本章回中将介绍如何获取文件类型.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章回中提到的文件类型是指MI…

【Uniapp-Vue3】computed计算属性用法及方法对比

如果我们想要将两个响应式变量进行某种运算&#xff0c;就可以使用computed计算属性。 比如下面这个例子中&#xff0c;输入名和姓合成全名&#xff0c;可以用直接显示的方法&#xff1a; 我们也可以使用computed属性&#xff1a; import {computed} from "vue"; le…

C#实现凸壳算法

凸壳计算代码: public static PointD[] calcConvexHull(PointD[] points) {// 按 x 坐标对点进行排序Array.Sort(points, (p1, p2) => p1.X.CompareTo(p2.X));// 创建下凸壳var lowerHull = new List<PointD>();foreach (var point in points){while (lowerHull.Co…

设计模式 行为型 状态模式(State Pattern)与 常见技术框架应用 解析

状态模式&#xff08;State Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许对象在内部状态改变时改变其行为&#xff0c;使得对象看起来好像修改了它的类。这种设计模式的核心思想是将对象的状态和行为封装成不同的状态类&#xff0c;通过状态对象的行为改变来避免…

SAP SD学习笔记27 - 贩卖契约(框架协议)2 - 基本契约 - 金额契约(价值合同)

上一章讲了贩卖契约&#xff08;框架协议&#xff09;的概要&#xff0c;以及贩卖契约中最为常用的 基本契约 - 数量契约。 SAP SD学习笔记26 - 贩卖契约(框架协议)的概要&#xff0c;基本契约 - 数量契约-CSDN博客 本章继续讲SAP中的内容&#xff1a; - 基本契约 - 金额契约…

mysql之基本select语句 运算符 排序分页

1.SQL的分类 DDL:数据定义语言. CREATE ALTER DROP RENAME TRUNCATE DML: 数据操作语言. INSERT DELETE UPDATE SELECT 重中之重 DCL: 数据控制语言. COMMIT ROLLBACK SAVEPOINT GRANT REVOKE 2.SQL语言的规则与规范 1.基本规则 SQL可以在一行或多行,为了提高可…

Linux中SSH服务(二)

一、基于公私钥的认证&#xff08;免密登录&#xff09; 1、Windows免密登录Linux Windows推荐安装Cygwin软件&#xff1a;Cygwin 1.1Windows上面生成公私钥 之前已经生成过了&#xff0c;所以显示公私钥已存在 lovezywLAPTOP-AABHB5ED ~ $ ssh-keygen Generating public/pr…

.NET Core NPOI 导出图片到Excel指定单元格并自适应宽度

NPOI&#xff1a;支持xlsx&#xff0c;.xls&#xff0c;版本>2.5.3 XLS&#xff1a;HSSFWorkbook&#xff0c;主要前缀HSS&#xff0c; XLSX&#xff1a;XSSFWorkbook&#xff0c;主要前缀XSS&#xff0c;using NPOI.XSSF.UserModel; 1、导出Excel添加图片效果&#xff0…

NS2202X 系列 40V 输入 OVP 保护 IC

1 特性  最大输入电压&#xff1a; 40V  内部预设 2.1A 负载过流 OCP 保护  外置过流保护阈值可调节引脚&#xff0c;可悬空  外置 EN 使能控制引脚  内部预设 6V 输入过压 OVP 保护  输入 OVP 保护响应时间 20ns  内置 150 ℃过温…

Web前端基础知识(七)

要在JS中获取元素节点&#xff0c;需要使用DOM API提供的方法。 innerHTML&#xff1a;不仅会返回一个纯文本&#xff0c;还可以解析一下这个文本中的语意。 innerText: 忽略HTML标记。 举例&#xff1a; <body> <div id"box1">这是一个ID选择器标签…

[Transformer] The Structure of GPT, Generative Pretrained Transformer

The Structure of Generative Pretrained Transformer Reference: The Transformer architecture of GPT models How GPT Models Work

欧拉公式和傅里叶变换

注&#xff1a;英文引文机翻&#xff0c;未校。 中文引文未整理去重&#xff0c;如有异常&#xff0c;请看原文。 Euler’s Formula and Fourier Transform Posted byczxttkl October 7, 2018 Euler’s formula states that e i x cos ⁡ x i sin ⁡ x e^{ix} \cos{x} i …

【python基础——异常BUG】

什么是异常(BUG) 检测到错误,py编译器无法继续执行,反而出现错误提示 如果遇到错误能继续执行,那么就捕获(try) 1.得到异常:try的执行,try内只可以捕获一个异常 2.预案执行:except后面的语句 3.传入异常:except … as uestcprint(uestc) 4.没有异常:else… 5.鉴定完毕,收尾的语…

Python 模块 Uvicorn 实战指南

文章目录 1. 介绍和安装1.1 介绍1.2 安装 2. 创建基础应用2.1 简单的 HTTP 应用2.2 添加日志 3. 实现高级功能3.1 支持 WebSocket3.2 优化运行性能 4. Nginx 配置反向代理4.1 安装与配置 Nginx4.2 启用 SSL 支持4.3 性能优化建议 5. 常见问题与解决方案5.1 高并发问题5.2 WebSo…

音频数据增强:提升音频信号质量的多种技术

在音频处理和机器学习领域&#xff0c;音频数据增强是一种常用的技术&#xff0c;旨在通过对原始音频信号进行各种变换和处理&#xff0c;生成更多样化的训练数据。   这不仅可以提高模型的鲁棒性&#xff0c;还能改善其在真实世界应用中的表现。本文将介绍几种常用的音频数据…

uniapp vue2版本如何设置i18n

如何设置i18n在该软件设置过语言的情况下优先选择所设置语言&#xff0c;在没有设置的情况下&#xff0c;获取本系统默认语言就&#xff0c;将系统默认语言设置为当前选择语言。 1、下载依赖&#xff1a; npm install vue-i18n --save 2、创建相关文件&#xff08;在最外层&…

vulnhub靶场【DC系列】之9 the final 结束篇

前言 靶机&#xff1a;DC-8&#xff0c;IP地址为192.168.10.11&#xff0c;后续因为靶机重装&#xff0c;IP地址变为192.168.10.13 攻击&#xff1a;kali&#xff0c;IP地址为192.168.10.2 都采用VMWare&#xff0c;网卡为桥接模式 对于文章中涉及到的靶场以及工具&#xf…

网络安全 | 网络安全法规:GDPR、CCPA与中国网络安全法

网络安全 | 网络安全法规&#xff1a;GDPR、CCPA与中国网络安全法 一、前言二、欧盟《通用数据保护条例》&#xff08;GDPR&#xff09;2.1 背景2.2 主要内容2.3 特点2.4 实施效果与影响 三、美国《加利福尼亚州消费者隐私法案》&#xff08;CCPA&#xff09;3.1 背景3.2 主要内…

基于QT和C++的实时日期和时间显示

一、显示在右下角 1、timer.cpp #include "timer.h" #include "ui_timer.h" #include <QStatusBar> #include <QDateTime> #include <QMenuBar> Timer::Timer(QWidget *parent) :QMainWindow(parent),ui(new Ui::Timer) {ui->setup…

STM32小实验2

定时器实验 TIM介绍 TIM&#xff08;Timer&#xff09;定时器 定时器可以对输入的时钟进行计数&#xff0c;并在计数值达到设定值时触发中断 16位计数器、预分频器、自动重装寄存器的时基单元&#xff0c;在72MHz计数时钟下可以实现最大59.65s的定时 不仅具备基本的定时中断…