Linux 常见的冷知识集锦

news2024/9/20 0:10:44

一、前言

在这里插入图片描述

本文旨在记录那些常见的Linux概念和名词,但这些又没经常直接使用到,更多在底层运行,见过却又不是特别清楚的碎片知识,以温故知新。

二、知识点和概念说明

2.1、POSIX标准/协议

POSIX(Portable Operating System Interface可移植操作系统接口)是IEEE为在UNIX操作系统上运行软件而定义API的一系列互相关联的标准的总称,其正式称呼为IEEE Std 1003,POSIX.1 已经被国际标准化组织(International Standards Organization,ISO)命名为 ISO/IEC 9945-1:1990 标准。简言之,POSIX就是Unix的一种标准,主要就是IEEE当时为了提高unix生态的兼容性和应用程序的可移植性。这样,任何一个 基于POSIX 兼容的操作系统编写的程序,都可以在任何其它的 POSIX 操作系统上编译执行。之后,这些遵循Posix标准的程序就可跨平台进行POSIX系统调用,即调用一组通用的API。
在这里插入图片描述

相关资源:IEEE Std 1003.1-2001、

Linux之父linus在其书中提到:POSIX标准是一个可以适用于数以百计的UNIX系统调用(system call)中的任意一个的一套冗长规则, 计算机要执行任务(从读、 写、 开机和关机开始) 就需要这个标准。 Linux下对文件操作有两种方式:系统调用(system call)和库函数调用(Library functions);其中,系统调用是操作系统本身的接口,是面向底层硬件的。通过系统调用,可以使得用户态运行的进程与硬件设备(如CPU、磁盘、打印机等)进行交互,是操作系统留给应用程序的一个接口。对于库函数(Library function),是把函数放到库里,一般是一些常用到的函数写入lib文件里,供其他人使用的一种方式,库函数调用是面向应用开发的;由于版权原因,库函数的源代码一般是不可见的,但在头文件中你可以看到它对外的接口。最常见的比如开源的标准 C 库glibc ,它提供了丰富的 API(Application Programming Interface),这些API都是遵循POSIX标准的,API的函数名,返回值,参数类型等都必须按照POSIX标准来定义。即广义的POSIX兼容也就指定这些接口函数兼容,其并不管API具体如何实现。目前的POSIX主要分为四个部分:Base Definitions、System Interfaces、Shell and Utilities和Rationale。

2.2、MPI-IO标准/协议

MPI(Message Passing Interface)是在高性能计算程序中,用于在参与计算的不同CPU、或服务器节点之间进行消息传递的一组规范或接口,通过这组接口,能帮助开发工程师们在不同的计算平台上快速编写可跨平台移植的并行计算程序,提升开发效率。基于MPI的规范和接口,业界有不同的MPI实现,如OpenMPI等。在高性能计算的世界中,除了计算,还必须有数据读写的支撑,所以除了MPI,还需要有一组跨计算平台的、可移植的、并行数据读写接口,这就是MPI-IO设计的初衷:让IO能够像消息传递(MPI)那样,通过标准的接口实现并行的数据读写访问。
在这里插入图片描述

传统标准的NFS Server通常只提供相当有限的并行访问能力,即单个客户端通过单一访问入口来访问数据,因此在HPC中使用并行IO策略时,难以提供足够高的性能。因此,在大型并行计算应用中,通常不使用NFS来进行数据访问。并行文件系统通常将单个文件数据分布在多个存储服务器上,而运行在多个计算节点上的并行应用程序的多个任务,经常对单个文件同时发起并发访问请求。并行文件存储系统可以通过并行的多个IO访问请求,为单个文件提供高水平的读/写带宽。

2.3、RDMA(远程直接内存访问)

RDMA(Remote Direct Memory Access)是基于消息的数据传输协议(而不是基于字节流的传输协议),数据传输都是异步操作,所有数据包的组装都在RDMA硬件上完成的,也就是说OSI模型中的下面4层(传输层,网络层,数据链路层,物理层)都在RDMA硬件上完成。它是为了解决网络传输中服务器端数据处理的延迟而产生的。RDMA通过网络把资料直接传入计算机的存储区,将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响,几乎不需要用到计算机的cou处理功能。它消除了外部存储器复制和上下文切换的开销,让内存、带宽和CPU这些可用于改进更多应用系统的性能。

另外这里我们不得不提到DMA,即直接内存访问,它是一种完全由硬件执行I/O交换的工作方式.在这种方式中, DMA 控制器(DMAC)从CPU 完全接管对总线的控制,数据交换不经过CPU ,而直接在内存和IO设备之间进行,减少大批量数据传输时CPU 的开销,也是实现zero-copy的前提。

在传统通信模式中,使用TCP/IP协议的应用程序几乎都会采用应用编程接口:UNIX BSD的套接字(socket),来实现网络进程之间的通信。无论编写客户端程序还是服务端程序,系统都需要为每个TCP连接都要创建一个socket句柄,导致每次传输通信,都要经过OS和协议栈的管理,无论是Socket同步通信还是异步通信,都会存在CPU占用过高的现象。这种传统的TCP/IP通信,发送和接收数据的过程中,都是在源端应用层数据从上向下逐层拷贝封装,目的端从下向上拷贝和解封装,需要CPU多次参与,比较慢。对此,才有了DMA和RDMA更好的数据处理实现。

在这里插入图片描述

RDMA让计算机可以直接存取其他计算机的内存,而不需要经过处理器的处理。RDMA可将数据从一个系统快速移动到远程系统的内存中,过程中,本地用户空间虚拟内存与RNIC(RDMA-aware Network Interface Controller)网卡直接进行数据传输不涉及到系统内核,没有额外的数据移动和复制,不会对操作系统造成任何影响。RDMA通信过程中,发送和接收,读/写操作中,都是RNIC直接和参与数据传输的已经注册过的内存区域直接进行数据传输,速度快,不需要CPU参与,RDMA网卡接替了CPU的工作,特别适用于高性能计算、大数据处理、分布式存储等场景。目前支持RDMA的网络协议主要有三种:InfiniBand(IB)、iWARP(RDMA over TCP/IP)、RoCE(RDMA over Converged Ethernet):RoCEv1和RoCEv2;RoCE v1是一种链路层协议,允许在同一个广播域下的任意两台主机直接访问。RoCE v2是一种Internet层协议,即可以路由;RoCE协议也可以使用在传统以太网网络或者非融合以太网络中;RoCE和InfiniBand,一个定义了如何在以太网上运行RDMA,而另一个则定义了如何在IB网络(主要是基于集群的应用)中运行RDMA;RoCE和iWARP,一个是基于无连接协议UDP,一个是基于面向连接的协议(如TCP)。

RDMA 的工作过程如下:

1)当一个应用执行RDMA 读或写请求时,不执行任何数据复制,在不需要任何内核内存参与的条件下, RDMA 请求从运行在用户空间中的应用中发送到本地NIC( 网卡)。
2)NIC 读取缓冲(buffer)的内容,并通过网络传送到远程NIC。
3)在网络上传输的RDMA 信息包含目标虚拟地址、内存key和数据本身,请求完成既可以完全在用户空间中处理(通过轮询用户级完成排列) ,或者在应用一直睡眠到请求完成时的情况下通过内核内存处理;RDMA 操作使应用可以从一个远程应用的内存中读数据或向这个内存写数据。
4)目标NIC 确认内存key,直接将数据写入应用缓存buffer中,用于操作的远程虚拟内存地址包含在RDMA 信息中。

使用RDMA的优势如下:

  • 零拷贝(Zero-copy): 应用程序直接执行数据传输,数据能够被直接发送到缓冲区或者能够直接从缓冲区里接收,而不需要被复制到网络层。
  • 内核旁路(Kernel bypass) :应用程序可以直接在用户态执行数据传输,不需要在内核态与用户态之间做上下文切换。
  • 不需要CPU干预(No CPU involvement) :应用程序可以访问远程主机内存而不消耗远程主机中的任何CPU。远程主机内存能够被读取而不需要远程主机上的进程(或CPU)参与。远程主机的CPU的缓存(cache)不会被访问的内存内容所填充。
  • 消息基于事务(Message based transactions) :数据被处理为离散消息而不是流,消除了应用程序将流切割为不同消息/事务的需求。
  • 支持分散/聚合条目(Scatter/gather entries support) :RDMA原生态支持分散/聚合。它能取多个内存缓冲区然后作为一个流发出去或者接收一个流然后写入到多个内存缓冲区里去。

RDMA的编程接口主要包括Verbs API和RDMA CM(Connection Manager)API。Verbs API提供了一套完整的RDMA操作函数,包括内存注册、队列对(Queue Pair, QP)的创建和管理、数据发送和接收等。RDMA CM API则提供了一套用于建立和管理RDMA连接的功能。
在这里插入图片描述
关联资源:DAOS文件存储、分布式文件系统、juicefs、cube studio、MPI如何对Lustre/GPFS文件系统优化

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

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

相关文章

股票技术指标 RSI KDJ MACD

具体指标解释,大模型都有,只说作用 RSI(Relative Strength Index,相对强弱指数) 超买和超卖水平:通常情况下,RSI值超过70表示市场可能超买,而低于30表示可能超卖。这并不意味着价格…

数据结构:顺序二叉树(堆)

目录 前言 一、堆的实现 1.1 头文件 1.2 堆的初始化及销毁 1.3 堆的插入 1.4 堆的删除 1.5 取堆顶数据和判空 前言 前面我们讲了二叉树有顺序结构和链式结构,今天就来讲一下顺序结构 普通的二叉树是不适合用数组来存储的,因为可能会存在大量的空间…

HTTP请求的流转路径,从Tomcat到SpringMVC

本文主要讲一下,一个HTTP请求在后端服务的流转路径,Tomcat等一众servlet容器如何定义了Web应用的基础样貌,后来的MVC框架又是如何弱化了servlet的存在,改为自己实现请求派发的。 前些日子我写了十几篇文章来介绍Tomcat的架构&…

AI在医学领域:联邦学习 (FL) 在肿瘤学的应用综述

关键词:联邦学习 (Federated Learning, FL)、机器学习 (Machine Learning, ML)、肿瘤学 (Oncology)、数据隐私 (Data Privacy)、精准医疗 (Precision Medicine)、多模态 (Multi-modal) 肿瘤学正在经历快速的变革,这得益于机器学习(ML&#xf…

tinymce字体为48px后再设置numlist数字列表导致前面的序号字体不对--【已解决】

问题描述: tinymce选择完大号字体,如48px,再选择数字列表,会导致数字列表的序号字体不对。 解决: 演示效果

【C语言篇】C语言常考及易错题整理DAY3

文章目录 选择题整形提升与算术转换左移右移操作符操作符优先级与结合性后置指针变量基本知识 编程题最大连续1的个数完全数计算单词倒排面试题.珠玑妙算两数之和 选择题 整形提升与算术转换 声明以下变量,则表达式: ch/i (f*d – i) 的结果类型为( &…

Fal.ai Flux 1-Pro/Viva.ai/哩布哩布AI:AI绘图部分免费工具+原图提示词Prompt

目录 #1 找软件 #2 懂提示词 #3 更难的一步,会英文 我个人认为,想要玩文生图,你要会3个步骤: #1 找软件 主流文生图软件:Midjourney、Stable Diffusion、Dall-E 3 巧了,我用的都是小众、免费的画笔工…

Linux 错误码

目录 一、概述二、含义三、错误处理函数1、IS_ERR2、strerr、perror 一、概述 在 Linux 系统中,错误码是用来表示操作系统运行过程中发生的错误的数字代码。错误码通常由负数表示,0 表示成功,正数表示警告或其他非致命错误。 为了开发者更好…

查询大数据信用需要收费吗?哪个平台好一点?

随着大数据技术被运用到金融行业,不少申贷人都开始了解自己的大数据信用,在查询大数据信用的时候,查询大数据信用需要钱吗?哪个平台好一点?等问题是很多人都比较关心的问题,下面本文就详细为大家详解一下,希望对你了…

基于python的百度迁徙迁入、迁出数据分析(九)

副标题:从百度迁徙数据看——人口虹吸效应 人口虹吸效应:人口虹吸效应是指大城市或中心城市因其经济、文化、教育、医疗等资源的优势,吸引周边地区的人口、资本和其他资源向其集中的一种现象。这种效应在城市化进程中尤其明显,通…

公司起诉员工泄密难吗?如何搜寻有力的证据?专业审计软件助力,追责之路其实不难!

在企业管理中,员工泄密是一个严重的问题,不仅可能损害企业的商业利益,还可能对企业的声誉造成不可挽回的影响。然而,公司起诉员工泄密并非易事,需要满足严格的法律条件和程序,并面临证据收集与举证、法律程…

10款好用的文件加密软件排行榜,2024企业常用的文件加密软件

在数据安全日益受到重视的今天,文件加密软件已成为保护企业敏感信息的重要工具。以下是2024年企业常用的10款好用的文件加密软件排行榜,帮助你选择适合的工具来保护你的文件和数据。 1. 安秉加密软件 安秉加密软件提供用户友好的界面和强大的加密功能。…

使用 nginx 搭建代理服务器(正向代理 https 网站)指南

简介 正向代理 简介 在企业开发环境中,局域网内的设备通常需要通过正向代理服务器访问互联网。正向代理服务器充当中介,帮助客户端请求外部资源并返回结果。局域网内也就是俗称的内网,局域网外的互联网就是外网,在一些特殊场景内…

unity 画线写字

效果 1.界面设置 2.涉及两个脚本UIDraw.cs和UIDrawLine.cs UIDraw.cs using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI;public class UIDraw : MonoBehaviour, IPointerEnterHandler, IPointerEx…

【大数据】什么是数据架构?

目录 一、什么是数据架构? 二、数据架构的发展历程 1. 早期阶段(1960年代-1970年代) 2. 关系数据库的兴起(1970年代-1980年代) 3. 数据仓库和数据挖掘(1980年代-1990年代) 4. 大数据和NoSQL&…

计算机基础|数据溢出

一、概念 在类似C这样的非高级语言存在数值溢出问题&#xff0c;简单概括&#xff1a;高位数据丢失被低位数据占据位置。 二、举例 2.1 以C语言 for循环为例 /*int8_t value range from -128 to 127*/int8_t input;for (input 124; input < 130; input) {printf("%…

《Unity3D网络游戏实战》深入了解TCP

从TCP到铜线 应用层 应用层功能是应用程序&#xff08;游戏程序&#xff09;提供的功能。在给客户端发送“hello”的例子中&#xff0c;程序把“hello”转化成二进制流传递给传输层&#xff08;传送给send方&#xff09;​。操作系统会对二进制数据做一系列加工&#xff0c;使…

嵌入式八股文-网络编程、多线程和进程

网络编程 1. TCP头部结构 TCP固定头部结构 每个TCP报文段都包含着此报文段的TCP头部信息,用于指定源端端口、目的端端口以及管理TCP连接等。完整的TCP头部结构可分为固定头部结构和头部选项两个部分。 32位端口号:包括了16位源端口号和16位目的端口号。32位序号:假设第一次…

Linux驱动开发基础(Hello驱动)

所学内容来自百问网 目录 1. 文件在内核中的表示 2. 打开字符设备节点时&#xff0c;内核中也有对应的struct file 3. 编写驱动程序步骤 4. 相关知识点 4.1 涉及函数解析 4.2 module_init/module_exit的实现 4.3 register_chrdev的内部实现 4.4 class_destroy/device_…

(Jmeter、Fiddler)脚本转换Loadrunner脚本

背景:公司政治任务、各种体系文档要留档,但有些不在体系内的工具生成的脚本需要转化到体系内以备留档。 一、Loadrunner代理设置 开始录制配置: Record->Remote Application via LoadRunner Proxy LoadRrunner Proxy listens on port-> 8889 (系统建立出入站规则…