C++术语

本文介绍了Linux系统中的关键术语,如内核负责的进程和硬件管理,以及Linux发行版的组成。同时阐述了用户态和内核态的概念,包括它们之间的切换、权限差异和系统调用。另外,还涉及到C/C++编程中的术语,如流、字符串、内存管理和函数等。
摘要由CSDN通过智能技术生成

Linux术语

术语含义
Linux内核负责进程管理,硬件驱动,内存管理等
Linux发行版Linux内核+软件+x11桌面环境
阻塞阻塞就是函数不返回,一直等待,这一般代表该线程没有其他事可做了
非阻塞非阻塞是如果没拿到资源,就先返回做其他事,然后循环
字符型设备输入输出都是字符,与之相对的是非字符型设备,如图形设备,二进制设备
SPService Pack
shell内核与用户之间的中间件,并且可以执行脚本
上下文可以替换为”对象”
sdk开发套件,至少包括API接口,有的还包括开发工具
平坦地址即不分段的地址
不可执行权限如果文件被标记为没有执行权限,那么代表着elf文件不能被操作系统解析,并且不会被加载到内存
动态链接在执行到该段指令时链接
静态链接在编译期链接
作业一组相关的进程
port/portable移植/可移植
open一般是“创建”或“建立联系”的意思
前景色抽象概念,会覆盖默认的字体颜色、线条颜色,而使用前景色在画布上画图
像素像素是一个抽象概念,泛指一个基本显示单元,不同的显示器,像素大小不同
逻辑尺寸以“毫米”等为单位,保证在各种设备上尺寸都相同
协议协议代表着有至少两个对象要通信,然后协议就是规定了通信格式,也叫编码格式,因此有协议的地方必有至少两个对象,必有编码和解码。
编码格式转换,按协议将原始格式的二进制转换为协议格式的二进制
解码按协议以指定规则读取二进制数据
终端输入设备和输出设备的统称
计算机相对于终端是计算和存储单元
子系统子系统是指,具有不同的执行环境、入口函数、启动选项和用户交换模式,在编译构造程序时需要通过/SUBSYSTE 选择指定应用程序的类型。
虚拟内存虚拟内存由页表维护,页表左边是虚拟内存,页表右边是物理内存
用户态和内核态见详细说明
MMU处理虚拟地址到物理地址的转换
TLB缓存虚拟地址到物理地址的映射关系
buffer磁盘驱动维护的缓冲区
cache文件系统维护的缓冲区
文件文件是一个数据结构,或者说是一个对象,维护了inode号,读写权限,当前位置等
渲染3D图像转2D图像的过程

C/C++术语

术语含义
本质是一块内存,以队列的方式输入输出
套接字socket,进程间通信的一种方式,使用一个缓冲区,两个进行分别以字节为单位进行读写
消息进程间通信,以消息格式为单位传输数据
字符串字符数组
字符串流对比字符串,字符串流不必将字符串作为一个整体来移动,而是以字节位单位进行输入输出
表达式表达式可以返回值
语句语句不返回值
loop无条件循环,使用break退出
for条件循环,循环指定次数
while条件循环,循环未知次数
静态分配由编译器完成分配
动态分配由操作系统完成分配
RAIIResource Acquisition Is Initialization,资源获取即初始化
浅拷贝只复制了一份指向目标的指针,没复制数据
深拷贝指针和数据都复制一份
运算符运算符不会进行跳转
函数函数会进行跳转
内联函数内联函数也不会进行跳转,相当于一次复制粘贴
.引用自身
->解指针引用
函数函数和对象是一样的,只是所属权不同,函数不属于任何对象
方法函数和对象是一样的,只是所属权不同,方式是对象的一部分
字面值字面值就是嵌入到指令中的值,换言之,不需要内存寻址和跳转
立即数同字面值
str/字面值字符串字符数组,本质是数组
string以面向对象的形式,提供了处理字符串的若干方法,本质是对象
字符串流以字节形式来移动,而非以块的形式移动
缓冲区溢出buffer overread,数组越界访问
函数签名形容一个函数的核心要素,包括函数名(即函数地址),参数,返回值
实例即instance。函数可以直接调用,但类中有变量,必须实例化(初始化变量),才能使用。
头文件存放数据类型和函数定义的,用于辅助链接,编译后就不再需要头文件

十万个为什么

从用户态到内核态发生了什么?

切换到内核态时,需要用到以下内容:

内核栈:内核态使用的是自己的栈,当从用户态进入内核态时,需要将用户态栈的内容保存到内核栈中。

系统调用号:系统调用函数被调用时需要指定系统调用号,内核通过系统调用号来确定需要执行的系统调用函数。

参数传递:系统调用函数通常需要一些参数,这些参数需要从用户态传递到内核态。在x86架构上,通常使用寄存器来传递参数。

中断向量号:当CPU接收到一个中断请求时,需要通过中断向量号来确定中断处理函数。

内核态代码:在进入内核态后,CPU需要执行内核态的代码,这些代码通常被存放在内核空间中。

进程上下文:内核态中处理完中断或系统调用后,需要恢复进程原本的上下文,包括CPU寄存器、程序计数器、堆栈指针等,以便能够继续执行用户态程序。

在x86架构中,0-2级特权级被称为用户特权级(User mode),3级特权级被称为内核特权级(Kernel mode)。当CPU从用户态切换到内核态时,通常使用中断或异常处理程序来触发,此时CPU会将当前进程的特权级从用户态切换到内核态,即从3级切换到0级。这时候,CS和SS会切换到内核模式下的代码段和堆栈段。而通过0x80中断指令,实际上是触发了一个中断,然后CPU会跳转到中断处理程序,在这个处理程序中可以根据需要修改CS和SS,以及其他的寄存器值,从而控制特权级的切换。

用户态和内核态的区别是什么?

用户态和内核态是指操作系统中不同的特权级别,这两个特权级别有以下不同之处:

访问的资源不同:在用户态下,进程只能访问自己的地址空间,而不能访问操作系统的地址空间;而在内核态下,进程可以访问整个系统的资源,包括操作系统的地址空间和硬件资源等。

执行的指令不同:在用户态下,进程只能执行非特权指令,而不能执行特权指令,比如访问硬件、修改内存页表等;而在内核态下,进程可以执行特权指令,从而获得对系统资源的控制。

系统调用的方式不同:当一个进程在用户态下需要访问内核资源时,需要通过系统调用的方式,将控制权转移到内核态,由内核来完成相应的操作,然后将结果返回给用户态。而在内核态下,进程可以直接访问内核资源。

用户态和内核态的区别是什么?

用户态和内核态是指操作系统中不同的特权级别,这两个特权级别有以下不同之处:

访问的资源不同:在用户态下,进程只能访问自己的地址空间,而不能访问操作系统的地址空间;而在内核态下,进程可以访问整个系统的资源,包括操作系统的地址空间和硬件资源等。

执行的指令不同:在用户态下,进程只能执行非特权指令,而不能执行特权指令,比如访问硬件、修改内存页表等;而在内核态下,进程可以执行特权指令,从而获得对系统资源的控制。

特权指令是什么?

除了加法,减法、乘法、移位、逻辑运算等基本算术和逻辑指令都属于非特权指令。此外,还有一些数据传输指令、堆栈操作指令、控制转移指令等也是非特权指令。

在C语言中,除了系统调用,都可以视为在使用非特权指令。

双核CPU架构

image.png

CPU缓存

image.png

一级缓存包括指令缓存和数据缓存;

什么是GPU?

GPU(Graphics Processing Unit,图形处理器)是一种专门用于图形处理和加速的处理器,主要用于3D图形渲染、视频编解码、深度学习等领域。GPU的主要功能包括:

图形渲染:GPU可以通过对图形进行数学运算和图形数据处理来实现3D图形的渲染,从而在屏幕上显示出高质量的图像。

并行计算:GPU具有大量的计算单元和并行计算能力,可以加速大规模的并行计算任务,如机器学习、计算流体力学等。

视频编解码:GPU可以用于视频的编码和解码,可以加速视频的压缩、解码和处理,提高视频的播放流畅度和质量。

声音处理:GPU也可以用于音频的处理,如音频编码、解码、特效处理等。

虚拟现实:GPU可以提供高质量的图形渲染和3D图形加速,从而提高虚拟现实应用的体验和性能。

什么是渲染管线

渲染和渲染管线不是同一个意思。

渲染是指将3D图形转换成2D图像的过程,包括模型、光照、纹理等等。

渲染管线(Render Pipeline)是将渲染过程中的各个步骤有序地连接起来,以完成渲染的过程。渲染管线的步骤包括顶点着色器、几何着色器、光栅化、片段着色器、深度测试、透明度排序等等。渲染管线的设计和实现,对于渲染的性能和效果都有着非常重要的影响。

渲染管线可以有不同的流程?
是的,渲染管线可以有不同的流程,不同的图形API(如OpenGL、DirectX等)都有自己的渲染管线实现方式。此外,即使在同一种图形API下,不同的硬件或操作系统也可能会对渲染管线的实现方式有所不同。

着色器
着色器(Shader)是一种运行在显卡上的小型程序,它们被用于执行图形渲染的各个阶段,比如顶点处理、几何处理、像素处理等等。着色器在渲染管线的各个阶段中负责对图形进行不同的操作和处理,从而最终生成最终的渲染图像。

着色器通常用着色器语言编写,不同的API和显卡可能支持不同的着色器语言。目前,比较流行的着色器语言有OpenGL着色器语言(GLSL)、微软着色器语言(HLSL)和Khronos Group着色器语言(SPIR-V)等等。着色器语言通常具有一定的编程能力,可以进行数学计算、逻辑控制等等操作,以实现对图形的精细控制和处理。

代码是如何驱动硬件的?

  1. 首先要清楚,二进制代码是存放在硬件磁盘上的;
  2. 执行程序时,利用磁盘磁头判断0和1信息,并将信息转化为高低电平,发送给内存储存;
  3. CPU从内存读取信息后,通过高低电平传递给硬件,这期间会通过继电器方法电流,达到驱动硬件的目的。
  4. 所以整个过程都是电信号在传递信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多弗朗强哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值