4.0 Linux进程前导知识
个人主页:Lei宝啊
愿所有美好如期而遇
冯.诺依曼体系
CPU:运算器,控制器
输入设备:键盘,麦克风,摄像头,鼠标,网卡,磁盘等。
输出设备:显示器,声卡,显卡,打印机,磁盘,网卡。
存储器:内存
这些设备并不是随便连接起来的,是由总线连接,现在总线集成在主板上,这些硬件只需要插入主板的插槽就可以实现连接,设备的连接不是单纯为了连接,是为了数据的流动,能够让数据从输入设备流入内存,从内存流出到输出设备,就好像数据从磁盘加载到内存,再从内存刷到显示器上一样,如果硬件不连接,数据无法从一个硬件到另一个硬件,设备连接不是目的,而是为了让数据流动的手段。设备之间数据流动的本质是数据在硬件之间进行来回拷贝,拷贝的整体速度,是决定计算机效率的重要指标。
而冯.诺依曼体系能够在如今还是主流,是因为他的稳定性和效率都不错,而且价格便宜。
那么第二个问题来了,我们为什么需要内存,直接外设和CPU交互不好吗?
就像这样:
我们加了内存之后看起来更耗费时间了,但内存的存在一定是有他存在的意义
寄存器和缓存是集成在CPU上的
越靠近CPU的硬件越贵,效率越高,容量越小。
越远离CPU的硬件越便宜,效率越低,容量越大,如磁盘。
而CPU和磁盘的效率差距非常大,CPU太快,磁盘太慢,直接交互的话,那么对CPU来说会造成效率上的极大浪费。(磁盘将数据加载到CPU会很慢,而CPU计算很快,也就是CPU算出来了,而且已经给了输出设备,但是输入设备和输出设备反应不过来,数据还没再次给到CPU,并且CPU算出的数据输出设备还未刷新出去)
那加上内存就不浪费了吗?硬盘直接和CPU交互,还省了和你内存交互的时间,你凭什么说加上内存就效率高了?
这是因为我们在内存中加了预加载和缓存,把硬件上的问题转换为软件上的问题,只要有个好的操作系统,那么就可以由操作系统判断,预先把数据加载到内存上,CPU需要时直接和内存交互,然后计算出来的结果不给输出设备,而是返回给内存,在内存不忙时刷新到输出设备,最后,也就变成了CPU和内存交互。
这样,计算机的整体效率就提高到了以内存效率为主。
当然,如果你非常非常有钱,可以把所有硬件全部换成寄存器,这样的设备当然极快。
那么,我们明白了,数据传输时先从输入设备加载到内存上,再由内存和CPU交互,CPU算出来后给内存,再由内存刷新到输出设备。
我们也就又有了个问题:
为什么说程序要运行时要先加载到内存上呢?
首先,程序是不是可执行的二进制文件,是文件就存储在磁盘上,要运行就要先加载到内存上,这是冯.诺依曼体系所决定的,然后二进制文件由CPU计算后再给到内存,结果由内存刷新。
就好像我们的QQ,是不是个程序呢? 他要运行一定是在内存中,由CPU执行,我们在给别人发消息时,由键盘输入内容,加载到内存中,经过CPU计算到内存,由内存刷新到网卡中,通过网络传输到别人的网卡上,这个内容加载到内存中,通过CPU解码,再由内存刷新到显示器上。、
而硬件都是由操作系统进行管理,操作系统是个进行硬件管理的软件,其实本质也是可执行程序
它包括了内容管理,文件管理,进程管理,驱动管理等
每一个硬件都有他们各自的驱动程序,驱动程序可以驱动硬件,也可以使其待机,但是驱动只负责执行,是否驱动硬件的指令,由操作系统下达,也就是说操作系统通过驱动来控制硬件。
而操作系统对硬件的管理是有一套逻辑的:
首先他要对硬件的属性进行描述,定义一个struct结构体,去存放硬件的属性,操作系统要管理硬件,是定义硬件数量的对象,然后通过链表将他们连接起来,在操作系统想要管理某个硬件时,可以通过遍历这个链表找到对应的硬件,然后他通过驱动程序去驱动。当我们不需要这个硬件卸载其驱动或者需要其他硬件而下载驱动时,通过对这个硬件的链表的增删查改来管理这些硬件。
总结就是:先描述,再组织
描述硬件的属性,然后通过定义硬件对象,将他们用链表连接起来,也就是组织起来,这样就能进行管理。
就像是我们写的通讯录,我们首先是对人的属性进行描述,定义人的对象,可以定义很多对象,而后通过链表将这些联系人连接起来,在我们需要查找或者删除某人时,他通过对链表的增删查改来管理这个通讯录。
任何面向对象的语言,都离不开这六个字,一定是先描述对象的属性,如类,然后通过类去实例化对象,而且不止一个对象,然后我们通过容器,也就是某种数据结构来组织连接这些对象,对他们进行增删查改,实现对他们的管理,C语言也是如此。
这些就是将现实的实际问题,进行计算机级别的建模过程,转化成计算机能够认识的问题,就像我们的操作系统去管理硬件。
相关文章:

4.0 Linux进程前导知识
个人主页:Lei宝啊 愿所有美好如期而遇 冯.诺依曼体系 CPU:运算器,控制器 输入设备:键盘,麦克风,摄像头,鼠标,网卡,磁盘等。 输出设备:显示器࿰…...

推荐一份适合所有人做的副业,尤其是程序员。
我建议每个人都去尝试一下网上接单,这是一个门槛低、类型多样的方式,尤其适合程序员! 在接单平台上,你可以看到各种类型的兼职。以freelancer为例,你可以在这里找到技术、设计、写作等类型的兼职,只要发挥…...

Linux中字符设备的打开、写入
一个内核模块应该由以下几部分组成。 第一部分,头文件部分。一般的内核模块,都需要 include 下面两个头文件: #include <linux/module.h> #include <linux/init.h> 第二部分,定义一些函数,用于处理内核…...

3d max软件中的缓存垃圾该如何清理?
使用3d max建模到渲染操作,来回对效果图调整的次数过多时,就会出现一下看不到的垃圾缓存,影响保存的速度,影响效率! 对于这类的3d垃圾清理的有什么高效方法呢? 3dmax垃圾清理的常规操作如下: 1、…...

11.13 牛客刷题8/10
11.13 信号完整性 指针地址 的加减,注意 最后转为16进制...
CI/CD简介
CI/CD简介 1、CI/CD流水线2、什么是CI/CD3、CI/CD的优点4、CI/CD的工作原理5、CI/CD流水线工具6、CI/CD的应用7、CI/CD的未来趋势 1、CI/CD流水线 从最初的瀑布模型,到后来的敏捷开发,再到今天的DevOps,这是现代开发人员构建出色产品的技术路…...
python opencv 读取文件夹下所有MP4文件并解析成jpg图像
你可以使用Python的OpenCV库来读取文件夹中的所有MP4文件,并将其解析为JPG图像。以下是一个示例代码,演示了如何实现这个功能,并设置解析间隔为3帧: import os import cv2def extract_frames(input_folder, output_folder, inter…...

MySQL binlog 日志解析后的exec_time导致表示什么时间?
1. exec_time 到底表示什么时间? MySQL binlog日志解析后,我们能看到会有 exec_time ,从字面意思理解这个记录的是执行时间,那这个记录的到底是单条sql的执行时间?还是事务的执行时间?下面通过测试来解读一…...

【Linux】:git基本操作_添加文件_两种场景_查看.git文件 || git修改文件 || 版本回退
🎯添加⽂件–场景⼀ 🎯在包含.git的⽬录下新建⼀个ReadMe⽂件,我们可以使⽤ git add 命令可以将⽂件添加到暂存区: • 添加⼀个或多个⽂件到暂存区: git add [file1] [file2] … • 添加指定⽬录到暂存区,…...

Django 基于ORM的CURD、外键关联,请求的生命周期
文章目录 基于ORM进行的CURDORM外键关联Django请求的生命周期流程图 基于ORM进行的CURD 本质上就是通过面向对象的方式,对数据库的数据进行增、删、改、查。 这里将会将我们之前所有内容结合到一起,首先确保基于上序操作已经建立好了UserInfo表ÿ…...
集合贴4——QA机器人设计与优化
基础课21——知识库管理-CSDN博客文章浏览阅读342次,点赞6次,收藏2次。知识库中有什么信息内容,决定了智能客服机器人在回答时可以调用哪些信息内容,甚至可以更简单地理解为这是智能客服机器人的话术库。https://blog.csdn.net/22…...

【Verilog语法】
Verilog语法 1. Verilog语法1.1 拼接运算符1.2 运算符优先级1.3 注释1.4 关键字1.5 模块结构1.6 结构语句1.7 赋值语句1.8 条件语句1.9 状态机1.10 OSI七层模型 1. Verilog语法 1.1 拼接运算符 1.2 运算符优先级 1.3 注释 1.4 关键字 1.5 模块结构 1.6 结构语句 1.7 赋值语句 …...

阿里云通用算力型u1服务器和e实例有什么区别?选择攻略
阿里云服务器ECS经济型e实例和通用算力型u1实例有什么区别?如何选择?ECS经济型e实例是共享型云服务器,通用算力型u实例是企业级独享型云服务器,e实例性价比高,现在2核2G3M带宽一年99元,云服务器u1价格相对要…...

modbus-TCP协议详解
modbus-TCP协议详解 1996年施耐德公司推出基于以太网TCP/IP的modbus协议:modbus-TCP。 MODBUS-TCP使MODBUS-RTU协议运行于以太网,MODBUS-TCP使用TCP/IP以太网在站点间传送MODBUS报文,MODBUS-TCP结合了以太网物理网络和网络标准TCP/IP以及以…...

爬虫项目(12):正则、多线程抓取腾讯动漫,Flask展示数据
文章目录 书籍推荐正则抓取腾讯动漫数据Flask展示数据 书籍推荐 如果你对Python网络爬虫感兴趣,强烈推荐你阅读《Python网络爬虫入门到实战》。这本书详细介绍了Python网络爬虫的基础知识和高级技巧,是每位爬虫开发者的必读之作。详细介绍见ὄ…...
gedit编辑文件时常用快捷键
问题: 最近在修改文件时提到了gedit这个工具,与vi一样也是一个文件编辑器。但是在命令方面又有不同,在快捷键方面和Windows的使用习惯非常相似。 gedit举例: CTRL-Z:撤销CTRL-C:复制CTRL-V:粘贴CTRL-T:缩进CTRL-Q:退出CTRL-S:保…...
【C++干货铺】剖析string | 底层实现
个人主页点击直达:小白不是程序媛 C专栏:C干货铺 代码仓库:Gitee 目录 成员变量 成员函数 构造和拷贝构造 赋值重载 析构函数 operator[ ] size 迭代器 reserve(扩容函数) push_back(尾插函数)…...

nmap原理与使用
kali的命令行中可以直接使用 nmap 命令,打开一个「终端」,输入 nmap 后回车,可以看到 nmap 的版本,证明 nmap 可用。 一、端口扫描 扫描主机的「开放端口」,在nmap后面直接跟主机IP(默认扫描1000个端口&am…...

AI批量剪辑矩阵托管系统----源码技术开发
AI批量剪辑矩阵托管系统----源码技术开发 抖音账号矩阵系统是基于抖音开放平台研发的用于管理和运营多个抖音账号的平台。它可以帮助用户管理账号、发布内容、营销推广、分析数据等多项任务,从而提高账号的曝光度和影响力。 具体来说,抖音账号矩阵系统可…...
Pandas数据预处理python 数据分析之4——pandas 预处理在线闯关_头歌实践教学平台
Pandas数据预处理python 数据分析之4——pandas 预处理 第1关 数据读取与合并第2关 数据清洗第3关 数据转换 第1关 数据读取与合并 任务描述 本关任务:加载 csv 数据集,实现 DataFrame 合并。 编程要求 根据提示,在右侧编辑器补充代码&#…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...

相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...
深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向
在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...