当前位置: 首页 > news >正文

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:运算器,控制器 输入设备:键盘,麦克风,摄像头,鼠标,网卡,磁盘等。 输出设备:显示器&#xff0…...

推荐一份适合所有人做的副业,尤其是程序员。

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

Linux中字符设备的打开、写入

一个内核模块应该由以下几部分组成。 第一部分&#xff0c;头文件部分。一般的内核模块&#xff0c;都需要 include 下面两个头文件&#xff1a; #include <linux/module.h> #include <linux/init.h> 第二部分&#xff0c;定义一些函数&#xff0c;用于处理内核…...

3d max软件中的缓存垃圾该如何清理?

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

11.13 牛客刷题8/10

11.13 信号完整性 指针地址 的加减&#xff0c;注意 最后转为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流水线 从最初的瀑布模型&#xff0c;到后来的敏捷开发&#xff0c;再到今天的DevOps&#xff0c;这是现代开发人员构建出色产品的技术路…...

python opencv 读取文件夹下所有MP4文件并解析成jpg图像

你可以使用Python的OpenCV库来读取文件夹中的所有MP4文件&#xff0c;并将其解析为JPG图像。以下是一个示例代码&#xff0c;演示了如何实现这个功能&#xff0c;并设置解析间隔为3帧&#xff1a; import os import cv2def extract_frames(input_folder, output_folder, inter…...

MySQL binlog 日志解析后的exec_time导致表示什么时间?

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

【Linux】:git基本操作_添加文件_两种场景_查看.git文件 || git修改文件 || 版本回退

&#x1f3af;添加⽂件–场景⼀ &#x1f3af;在包含.git的⽬录下新建⼀个ReadMe⽂件&#xff0c;我们可以使⽤ git add 命令可以将⽂件添加到暂存区&#xff1a; • 添加⼀个或多个⽂件到暂存区&#xff1a; git add [file1] [file2] … • 添加指定⽬录到暂存区&#xff0c;…...

Django 基于ORM的CURD、外键关联,请求的生命周期

文章目录 基于ORM进行的CURDORM外键关联Django请求的生命周期流程图 基于ORM进行的CURD 本质上就是通过面向对象的方式&#xff0c;对数据库的数据进行增、删、改、查。 这里将会将我们之前所有内容结合到一起&#xff0c;首先确保基于上序操作已经建立好了UserInfo表&#xff…...

集合贴4——QA机器人设计与优化

基础课21——知识库管理-CSDN博客文章浏览阅读342次&#xff0c;点赞6次&#xff0c;收藏2次。知识库中有什么信息内容&#xff0c;决定了智能客服机器人在回答时可以调用哪些信息内容&#xff0c;甚至可以更简单地理解为这是智能客服机器人的话术库。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实例有什么区别&#xff1f;如何选择&#xff1f;ECS经济型e实例是共享型云服务器&#xff0c;通用算力型u实例是企业级独享型云服务器&#xff0c;e实例性价比高&#xff0c;现在2核2G3M带宽一年99元&#xff0c;云服务器u1价格相对要…...

modbus-TCP协议详解

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

爬虫项目(12):正则、多线程抓取腾讯动漫,Flask展示数据

文章目录 书籍推荐正则抓取腾讯动漫数据Flask展示数据 书籍推荐 如果你对Python网络爬虫感兴趣&#xff0c;强烈推荐你阅读《Python网络爬虫入门到实战》。这本书详细介绍了Python网络爬虫的基础知识和高级技巧&#xff0c;是每位爬虫开发者的必读之作。详细介绍见&#x1f44…...

gedit编辑文件时常用快捷键

问题&#xff1a; 最近在修改文件时提到了gedit这个工具&#xff0c;与vi一样也是一个文件编辑器。但是在命令方面又有不同&#xff0c;在快捷键方面和Windows的使用习惯非常相似。 gedit举例&#xff1a; CTRL-Z:撤销CTRL-C:复制CTRL-V:粘贴CTRL-T:缩进CTRL-Q:退出CTRL-S:保…...

【C++干货铺】剖析string | 底层实现

个人主页点击直达&#xff1a;小白不是程序媛 C专栏&#xff1a;C干货铺 代码仓库&#xff1a;Gitee 目录 成员变量 成员函数 构造和拷贝构造 赋值重载 析构函数 operator[ ] size 迭代器 reserve&#xff08;扩容函数&#xff09; push_back(尾插函数&#xff09…...

nmap原理与使用

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

AI批量剪辑矩阵托管系统----源码技术开发

AI批量剪辑矩阵托管系统----源码技术开发 抖音账号矩阵系统是基于抖音开放平台研发的用于管理和运营多个抖音账号的平台。它可以帮助用户管理账号、发布内容、营销推广、分析数据等多项任务&#xff0c;从而提高账号的曝光度和影响力。 具体来说&#xff0c;抖音账号矩阵系统可…...

Pandas数据预处理python 数据分析之4——pandas 预处理在线闯关_头歌实践教学平台

Pandas数据预处理python 数据分析之4——pandas 预处理 第1关 数据读取与合并第2关 数据清洗第3关 数据转换 第1关 数据读取与合并 任务描述 本关任务&#xff1a;加载 csv 数据集&#xff0c;实现 DataFrame 合并。 编程要求 根据提示&#xff0c;在右侧编辑器补充代码&#…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述&#xff1a;海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而&#xff0c;目前该领域仍面临一个挑战&#xff0c;即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

GitHub 趋势日报 (2025年06月06日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...