磁盘 - 内存 - 中央处理器缓存 / 用户缓存区 - 内核缓存区 / 零拷贝

news2024/11/15 4:55:08

文章目录

    • 磁盘 - 内存 - 中央处理器缓存
    • 用户缓存区 - 内核缓存区
    • 零拷贝
    • 意义

这些概念比较常用,涉及到物理设备 - 操作系统概念,操作系统概念 - 数据结构的区分。记录一下以供后人取笑。

磁盘 - 内存 - 中央处理器缓存

这些是计算机中比较常用的物理设备。
1,磁盘:可以代表计算机中所用的固态硬盘、机械硬盘,也可以表示某些嵌入式设备中的flash等大容量存取设备。挂载到总线上,被操作系统调度。掉电之后,内容不丢失。

2,内存:内存条等硬件设备。一般语义下,内存就是速度更快、容量较小的存储设备。内存也挂载到总线上,由操作系统调度。它的工作频率高,访问速度快,更适合搭配中央处理器使用。掉电之后,内容丢失;

3,中央处理器缓存:装机时常说的一级缓存、二级缓存就是这个东西;物理上来说,这个缓存就是cpu的一部分,不需要通过总线就可以访问。速度非常快,容量非常小。掉电后,内容丢失。为了简化某些问题的讨论,将处理器缓存和内存等同起来。

4,寄存器:cpu的一部分。如果将cpu视为一个状态机,那么所有寄存器中的值就组成了一个又一个的状态。寄存器不能担当“存储文件”的任务,和缓存、内存不同。掉电后内容丢失。

用户缓存区 - 内核缓存区

这两个概念属于操作系统 - 编程中的。我们结合上面的物理结构来说。
首先需要清楚物理内存 - 虚拟内存的联系。
图1

图2
见上图。开了一个程序,每隔100s打印一个hello world。该虚拟机总内存只有2G,被系统分配4G内存的进程依然起来了,这就是虚拟内存的功劳 — 虚拟内存4G,当进程需要时再分配物理内存给它,同时将进程中暂时用不到的部分放进磁盘内,参数swap指代的就是虚拟内存中已用值和剩余值。
通过vmsize可知,该进程占用的内存仅有4512kb,这一内存的大小也就是代码段+数据段+bss段+堆+栈的大小;通过vmrss可知,打印hello world的进程实际占用的物理内存仅有792kb。也就是说相当部分的内容被存在了磁盘中。

1,用户缓存区:以c语言为例,就是临时变量或者malloc出来的变量。这里的内容存在内存中,可能被交换到磁盘中。

2,内核缓存区:同样是存在内存中的。但是是由操作系统内核控制的,一般情况下用户无法访问这部分内存。

零拷贝

零拷贝是在干嘛?是为了满足两个需求
1,减少内核态和用户态的切换(操作系统进程和用户进程间的切换);
2,减少拷贝的次数(拷贝一定是由处理器完成的,这一操作节省了cpu操作);

没有零拷贝时,read流程是:(操作)系统将设备d1中的数据拷贝进内核缓存k1(操作系统控制的内存区域)中,再由内核缓存拷贝到用户缓存u1(用户控制的内存)中;
write流程是:系统将u1的内容拷贝到内核缓存k2中,再将k2中的内容拷贝到设备d2中。

采用零拷贝则是:调用特定接口,将d1中的数据拷贝到k1中,再将k1的内容拷贝到d2中。这样,原来原来的4次拷贝变成2次,4次内核-用户态的转换也变成2次(用户态调用系统调用接口有调用 - 返回必然有两次状态切换)

意义

1,理清楚计算机中各个硬件设备,在嵌入式开发中很重要,不至于出现沟通问题。

2,理解缓冲区的知识,可以帮助立即free输出和 /proc/pid/status输出的含义。

3,零拷贝为我们在两个设备间交换数据提供了优化思路。

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

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

相关文章

stable-diffusion-webui 安装问题记录

安装完成后,浏览器打开:http://127.0.0.1:7860/,无论点哪里,只要触发交互,都提示: 解决办法: 1、关闭(墙外魔法工具)软件(不一定有效) 2、需要不…

将 Layui 日历框,一周开始由星期日改为星期一

Layui 的日历框控件中,一周的开始是星期日。 但是我更习惯一周开始为星期一。在 ISO8601:2000 中,其中也是规定了:每个日历星期从星期一开始,星期日为第 7 天。 所以改一下。 改 layui.all.js 或 laydate.js(取决于…

今日分享:如何文本转语音

嘿,各位小伙伴们!你们有没有遇到过想看文章但是又赶时间的情况呢?这时候,文本转语音工具就可以帮助你啦!通过使用文本转语音工具,你就可以实现听取文章内容而不必亲自看它们了,真是省时又省力。…

node对应的npm版本

官网地址:node对应的npm版本地址

HTML5+CSS3+JS小实例:Tab选项卡动画切换效果

实例:Tab选项卡动画切换效果 技术栈:HTML+CSS+JS 字体图标库:font-awesome 效果: 源码: 【html】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name=&q…

eclipse中maven项目pom.xml文件报错:Missing artifact com.sun:tools:jar:1.8.0解决

背景&#xff1a;在引入新的jar包后&#xff0c;突然pom.xml文件就飘红了&#xff0c;提示Missing artifact xxx 原因&#xff1a;新导入的jar包依赖别的jar包&#xff0c;别的jar包因为比较旧&#xff0c;缺失相关文件 处理&#xff1a; 1、找到本地的repository地址&#…

openlayers:圆孔相机根据卫星经度、纬度、高度、半径比例推算绘制地面的拍摄的区域

本示例的目的是介绍演示如何在vue+openlayers中模拟圆孔相机的拍摄场景,根据卫星经度、纬度、高度、半径比例推算绘制地面的拍摄的区域。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果; 注意如果OpenStreetMap无法加载,请加载其他来练习 文章目录 示…

[算法前沿]--021-baichuan-7B的测试教程

1.百川模型介绍 baichuan-7B不仅在C-Eval、AGIEval和Gaokao中文权威评测榜单上,以显著优势全面超过了ChatGLM-6B等其他大模型,并且在MMLU英文权威评测榜单上,大幅领先LLaMA-7B。baichuan-7B是由百川智能开发的一个开源的大规模预训练模型。基于Transformer结构,在大约1.2万…

推或拉? rabbitMQ 消费模式该如何选择

系列文章目录 消息队列选型——为什么选择RabbitMQ RabbitMQ 五种消息模型 RabbitMQ 能保证消息可靠性吗 文章目录 系列文章目录前言一、推拉两种模式的概念二、推模式的使用及优势1. 使用2. 优劣 三、拉模式的使用及优势1. 使用2. 优劣 四、消费端Ack模式与Qos1. Ack模式2. Q…

Linux——1初识linux

目录 1.1 硬件和软件 1.2 初识Linux 1.2.1 Linux的诞生 1.2.2 LInux内核 1.2.3 Linux发行版 1.3 虚拟机介绍 1.4 VMware WorkStation 安装 1.5 在VMware上安装Linux 1.6 远程连接Linux系统 1.6.1 图形化、命令行 1.6.2 FinalShell 1.1 硬件和软件 我们所熟知的计算…

6.S081——设备中断与驱动部分(串口驱动与Console)——xv6源码完全解析系列(8)

0.briefly speaking 点此返回上一篇博客 上一篇博客中我们简单介绍了UART和PLIC的初始化过程&#xff0c;并迭代式的分析了console的读写操作&#xff0c;这篇博客接着上一篇的话题&#xff0c;研究一下一个字符是怎么一步步被显示到我们的屏幕上的&#xff0c;经过了哪些设备…

PyCharm 2021.1.1 x64的安装 和环境搭建

环境变量 D:\Python38 path 免安装

【id:80】【20分】B. 复数的加减乘运算(运算符重载)

题目描述 定义一个复数类&#xff0c;通过重载运算符&#xff1a;、-、*&#xff0c;实现两个复数之间的各种运算。 class Complex { private:float real, image; public:Complex(float x 0, float y 0);friend Complex operator(Complex&, Complex&);friend Comple…

python中使用OAK-D PRO相机实现OCR功能

目录 OAK简介Tesseract简介Tesseract OCR安装包安装 Tesseract OCR 代码实现 OAK简介 OAK&#xff08;OpenCV AI Kit&#xff09;是一个开源的智能视觉平台&#xff0c;它集成了硬件和软件组件&#xff0c;旨在提供高性能的实时目标检测、识别和跟踪等视觉AI功能。OAK由Luxoni…

【夜深人静学JAVA | 第二十三篇】集合体系结构

目录 前言&#xff1a; 单列集合&#xff1a; set与list的区别&#xff1a; 双列集合&#xff1a; map的特点&#xff1a; 总结&#xff1a; 前言&#xff1a; JAVA中为我们提供了很多集合&#xff0c;这些集合都有自己很独特的特点&#xff0c;因此我们要学习所有的…

【Nginx】第五章 Nginx配置实例-负载均衡

5.1 实现效果 浏览器地址栏输入地址 http://192.168.6.100/edu/index.html&#xff0c;负载均衡效果&#xff0c;将请求平均分配到8080和8081两台服务器上。 5.2 准备工作 &#xff08;1&#xff09;准备两台tomcat服务器&#xff0c;一台8080&#xff0c;一台8081 &#x…

数据结构C语言版本(上)

第一章 绪论 第一节 什么是数据结构&#xff1f; 估猜以下软件的共性&#xff1a;学生信息管理、图书信息管理、人事档案管理。   数学模型&#xff1a;用符号、表达式组成的数学结构&#xff0c;其表达的内容与所研究对象的行为、特性基本一致。 信息模型&#xff1a;信息…

FANUC机器人SRVO-220 SDI保险丝熔断报警处理方法

FANUC机器人SRVO-220 SDI保险丝熔断报警处理方法 一般在R-30iB Mate Plus柜的机器人上会遇到这个报警&#xff0c;R-30iB Plus柜则不会遇到这个报警。 如下图所示&#xff0c; 故障原因&#xff1a; 机器人EE接口的接线有短路的情况&#xff0c;检查EE接口的接线&#xff0…

Mybatis-Plus:实现自定义SQL

目录 1.简介 2.自定义SQL具体实现 2.1.注解SQL 2.2.Wrapper传参注解SQL 2.3.Wrapper传参xml文件SQL 2.4.正常传参XML文件SQL 3.总结 1.简介 Mybatis-Plus&#xff08;以下简称MBP&#xff09;的初衷是为了简化开发&#xff0c;而不建议开发者自己写SQL语句的&#xff1b…

多元分类预测 | Matlab鲸鱼算法(WOA)优化极限学习机(ELM)的分类预测,多特征输入模型。WOA-ELM分类预测模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元分类预测 | Matlab鲸鱼算法(WOA)优化极限学习机(ELM)的分类预测,多特征输入模型。WOA-ELM分类预测模型 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab,程…