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语言也是如此。

这些就是将现实的实际问题,进行计算机级别的建模过程,转化成计算机能够认识的问题,就像我们的操作系统去管理硬件。

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

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

相关文章

都快2024年了,别只使用React,需要学习一下Vue,不然没出路了

最近,我的朋友因为不熟悉 Vue.js 而未能通过面试。 她平时工作中大部分时间都在使用React,所以也懒得去了解其他前端框架。 世界上所有的前端框架我们都应该熟悉吗? 不,这是极其不合理的。 但为了生存,朋友还是要学…

2023数字科技生态展,移远通信解锁新成就

11月10日,以“数字科技,焕新启航”为主题的中国电信2023数字科技生态大会暨2023数字科技生态展在广州盛大启幕。作为物联网行业的龙头标杆,同时更与中国电信连续多年维持稳定友好的合作关系,移远通信受邀参加本次展会。 在本次展会…

使用xlwings实现对excel表中指定列隔行求和

需要对上表中的营业额隔行求和,即橙色背景颜色的求和,无背景颜色的求和。 看了大佬的视频,有两种方法: 1.加辅助列 2.使用判断行的奇偶函数,然后在用sumproduct函数 在此,我使用xlwings对excel表中数据…

Java编程--单例模式(饿汉模式/懒汉模式)/阻塞队列

前言 逆水行舟,不进则退!!! 目录 单例模式 饿汉模式: 懒汉模式: 什么是阻塞队列 什么是高内聚 低耦合 阻塞队列的实现 单例模式 单例模式(Singleton Pattern)是一种常见…

WorldView 1 2 3 4卫星影像

WorldView WorldView卫星是Digitalglobe公司的商业成像卫星系统。它由两颗(WorldView-I和WorldView-II)卫星组成。 WorldView-1 WorldView-1卫星为美国DigitalGlobe公司的高分辨率商用卫星,于2007年9月18日成功发射,可提供0.5m分辨率卫星影像。灵活的…

设计模式之适配器(Adapter)

Adapter Wapper 接口转换器 如果一个类不能直接访问另一个类的时候,中间加一个Adapter转换器就能访问了 常见例子: 电压转接头 java.io jdbc-odbc bridge(不是桥接模式) ASM Transformer java io里面的读文件操作: FileInputStream是字节流读文件,就像…

2023-2024-2 高级语言程序设计-二维数组

7-1 矩阵运算 给定一个nn的方阵&#xff0c;本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。 输入格式: 输入第一行给出正整数n&#xff08;1<n≤10&#xff09;&#xff1b;随后n行&#xff0c;每行给出…

深入理解Kafka3.6.0的核心概念,搭建与使用

Kafka是最初由Linkedin公司开发&#xff0c;是一个分布式、支持分区的&#xff08;partition&#xff09;、多副本的&#xff08;replica&#xff09;&#xff0c;基于zookeeper协调的分布式消息系统&#xff0c;它的最大的特性就是可以实时的处理大量数据以满足各种需求场景&a…

桌面便签软件用哪个?10款全球好用的便签软件推荐,告别杂论无章!

在如今的快节奏社会中&#xff0c;我们的生活和工作节奏越来越快&#xff0c;每天面对的信息成倍地增长。有时候&#xff0c;我们需要随手记下一些重要的事情&#xff0c;或者是一些突然的灵感&#xff0c;这时候就需要一款好用的桌面便签软件。 桌面便签软件可以帮助我们更好…

LeetCode(13)除自身以外数组的乘积【数组/字符串】【中等】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 238. 除自身以外数组的乘积 1.题目 给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素…

前端NaN解决方案

// 2.3 函数表达式可以传递参数还可以有返回值&#xff0c;使用方法和前面具名函数类似let sum function (x, y) { // 形参xx||0yy||0return x y}let re sum() // 实参console.log(re) // 3 function sum(x 0, y 0) {return x y}console.log(sum()) // 0console.log(s…

HTML+CSS、Vue+less+、HTML+less 组件封装实现二级菜单切换样式跑(含全部代码)

一、HTMLCSS二级菜单 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Document</title><…

mysql之正则表达式匹配

题目&#xff1a; 今天在牛客网看到一道关于数据库正则表达式匹配的问题&#xff0c;发现自己一点不会做。 正则表达式&#xff1a; 一、正则表达式 MySQL 正则表达式通常是在检索数据库记录的时候&#xff0c;根据指定的匹配模式匹配记录中 符合要求的特殊字符串。MySQL 的…

Flowable串行流程移动活动

在Activiti6和Activiti7中跳转节点都要自己实现&#xff0c;Flowable增加了这个功能。 一&#xff1a;简介 串行流程是指简单的一条线的流程&#xff0c;流程中如果包含会签、排它网关也算串行流程。 节点移动有三种方式&#xff1a; 向前移动foreward。向后移动back。直接跳…

【Python+requests+unittest+excel】实现接口自动化测试框架

一、框架结构&#xff1a; 工程目录 二、Case文件设计 三、基础包 base3.1 封装get/post请求&#xff08;runmethon.py&#xff09; 1 import requests2 import json3 class RunMethod:4 def post_main(self,url,data,headerNone):5 res None6 if header …

微服务nacos实战入门

注册中心 在微服务架构中&#xff0c;注册中心是最核心的基础服务之一 主要涉及到三大角色&#xff1a; 服务提供者 ---生产者 服务消费者 服务发现与注册 它们之间的关系大致如下&#xff1a; 1.各个微服务在启动时&#xff0c;将自己的网络地址等信息注册到注册中心&#x…

【科研新手指南4】ChatGPT的prompt技巧 心得

ChatGPT的prompt心得 写在最前面chatgpt咒语1&#xff08;感觉最好用的竟然是这个&#xff0c;简单方便快捷&#xff0c;不需要多轮对话&#xff09;chatgpt思维链2&#xff08;复杂任务更适用&#xff0c;简单任务把他弄复杂了&#xff09;机理chatgpt完整咒语1&#xff08;感…

Vue基础必备掌握知识点-Vue的指令系统讲解(二)

Vue指令系统继续讲解 v-for 作用:基于数据进行循环&#xff0c;多次渲染整个元素 数据类型:数组.对象.数字。。。 遍历数组语法&#xff1a;v-for"(item,index)" in 数组 item:表示每一项 index:则是表现下标 注意:v-for中的key值&#xff0c;key属性唯一的…

探秘亚马逊云科技海外服务器 | 解析跨境云计算的前沿技术与应用

目录 一、什么是海外服务器 二、不同主流海外云服务器对比 三、海外服务器的创建(亚马逊为例) 四、个人总结 一、什么是海外服务器 亚马逊云科技海外服务器&#xff1a;指的是部署在世界各地的亚马逊数据中心中的服务器设备。这些服务器提供了计算、存储、数据库、网络等各…