前言:
在之前,我们已经对Linux环境开发的基本工具进行了详细的学习。接下来,我们将要学习的第一大块便是关于计算机体系结构的知识!!
![]()
目录
前言
(一)冯诺依曼体系结构
基本介绍
木桶原理
数据流动过程
(二)操作系统
1、概念
2、感性理解
总结
在我写的《操作系统》中,我们通过文字简单的叙述了关于进程了概念和其他的相关知识。今天,我们将站在Linux系统编程的视角下“欣赏”关于进程知识!!!
我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。
冯·诺依曼系结构(Von Neumann Architecture)是一种计算机硬件设计原则,也被称为存储程序算机结构它是由冯·诺伊曼于1945提认为是现代计算机设计的基础。
冯·诺依曼体系结构具有以下几个关键特点:
中央处理器(CPU):CPU包含算术逻辑单元(ALU)和控制单元(CU)。ALU负责执行算术和逻辑运算,而CU负从存储器中获取指令、解析指令并:计算机的指令集是一组能够被CPU执行的指令。指令集通常包括算术、逻辑、存储、跳转等操作,可以根据需要扩展;
输入/输出设备(I/O):用于将计算机与外部世界连接起来,例如键盘、鼠标、显示器、打印机等等;
总线(Bus):一个用于组件之间交换数据和指令的物理通道;
存储器(Memory):用于存储计算机程序数据、指令和中间结果。存储器分为两种类型:随机存储器(RAM)和只读存储器(ROM)。
以下是一个简单的示意图,展示了冯·诺伊曼体系结构的各个部分:
【 解释】
大家可能没有发现,在我手工画的图形中,这里的存储器指的是内存,不知道大家是否比较好奇这里为什么要有内存呢?接下来,我们围绕这个话题来给大家聊聊!!!
上述。我们说过了对于输出、输入设备我们都简称为外围设备,众所周知,外设的速度相对来说都比较慢一些,例如:
那这里不要内存是否还可以呢?即像如下这样:
【解释】
木桶原理:木桶原理又称短板理论,木桶短板管理理论,由劳伦斯·彼得提出,其核心内容为:一只木桶盛水的多少,并不取决于桶壁上最高的那块木块,而恰恰取决于桶壁上最短的那块。.
因此,上述的现象就可以解释为:
结论一:不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)
有了上述的知识介绍,我们就可以理解这样的一件事情:
此时又有这样一个问题那 “为什么程序执行前要先加载到内存?”
执行程序需要先加载到内存的原因有以下几点:
提高执行效率:将程序加载到内存中可以加快程序的执行速度。当程序运行时,CPU需要从内存中读取指令数据如果没有加载需要从磁盘或其他外部存储器读取数据,这会导致较长的访问时间,降低执行效率;
空间管理:通过将程序加载到内存中,可以有效地管理程序和数据的空间分配。内存管理系统可以根据需要动态地分配和释放内存资源,以满足程序的运行需求;
便于访问和操作:内存中的数据和指令可以直接被CPU访问和操作,而不需要通过外部设备进行读取和写入。这样可以大大简化程序的访问过程,提高数据的读取和写入速度;
综上所述,将程序加载到内存中可以提高程序的执行效率、简化访问和操作过程、便于空间管理,并增加程序的安全性。因此,执行程序前先加载到内存是必要的。
接下来,我们从硬件角度出发,解释单机或者跨主机之间数据是如何流向的!!
在冯·诺依曼体系结构中,数据的流动是按照下面的过程进行的:
以上是冯·诺依曼体系结构中最基本的数据流动过程。在实际应用中,可能存在更复杂的数据流动方式,例如缓存、DMA直接内存访问等技术,它们都需要在体系结构中进行显式设计和管理。
接下来,我们以具体的例子来带大家感性的理解数据流动的过程:
请解释:从你登录上qq开始和某位朋友聊天开始,数据的流动过程
当你输入消息并点击“发送”按钮时,这些消息会存储在计算机内存中。CPU负责将这些消息从内存中读取,并编码为网络所需的格式,例如TCP或UDP协议。
数据被编码后,将会使用计算机上的网卡进行发送。网卡是一种硬件设备,与计算机的PCIe接口或USB接口相连。网卡将消息转换成数字格式,并将它们分成数据包进行传输。
当数据包离开计算机并传输到网络时,路由器或交换机等硬件设备会将数据包从源地址传输到目标地址。
当数据包到达目标计算机时,网络卡再次将数据解码并返回到计算机的内存中。
应用程序将解码的数据包存储在计算机内存中,等待用户接收或响应。
从底层硬件的角度来看,上述过程需要计算机内核操作系统和硬件及设备之间的协调来完成这项工作。
从你打开窗口,开始给他发消息,到他的到消息之后的数据流动过程
用户在计算机上打开 QQ 聊天窗口并输入消息,这些消息被存储在计算机内存中。计算机内存由一些小型的具有短暂储存功能的芯片组成,这些芯片能更快地与 CPU 进行通讯。
当用户单击“发送”按钮时,CPU 从内存中读取这些消息并将其编码。CPU 根据协议使用网络适配器 / 网络接口卡(NIC)将数据发送到网络上。
数据包通过网线或无线网络传递,进入目标计算机中。目标计算机接收数据包并存储在内存中。
计算机芯片解码数据包,将其内容存储在应用程序的内存中,例如 QQ 聊天窗口。
用户的好友可以在他自己的计算机上接收到发送的消息,这些数据流动与发送的过程相似。
请解释:在qq上发送文件的数据流动过程
用户在 QQ 中选择要发送的文件,并将其存储在计算机内存中。计算机内存由一些小型的具有短暂储存功能的芯片组成,这些芯片能更快地与 CPU 进行通讯;
当用户单击“发送”按钮时,文件被编码并打包成数据包,然后通过 CPU 和网络适配器 / 网络接口卡(NIC)发送到网络上;
数据包通过网线或无线网络传递,进入目标计算机中。目标计算机接收数据包并存储在内存中;
计算机芯片解析数据包,并将文件存储在目标计算机的硬盘中。存储设备(硬盘)位于计算机内,它可以写入和读取数据;
当目标计算机确认文件被成功接收时,目标计算机会向发送方计算机发送响应信号,这样发送方计算机可以在 QQ 窗口中看到文件已经发送成功。
在这个过程中,计算机中的多种硬件组件协同工作,以实现文件的传输和接收。
关于冯诺依曼,必须强调几点:
- 这里的存储器指的是内存
- 不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)
- 外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。
- 一句话,所有设备都只能直接和内存打交道。
在上述,我们提到了关于“预加载”这样的词语,此时就会面临许多问题:
大家思考 :这些问题是由谁完成的呢?是上述我们所说的硬件帮我们完成的吗?
这种场景类似于到医院的场景:
综上所述,我们就需要一款对系统资源进行管理的软件来帮助系统协调的进行工作——操作系统!
我们以校园中的场景进行叙述,假定此时有三类人---【学生、校长、辅导员】;
在学校中作为学生显然是被管理的对象,那大家认为管理者的应该是谁呢?
我给大家简单的说明一下管理者和被管理者之间的主要差别:
有了上述的理解之后,此时便有这样的一个场景:
校长:
辅导员:
学生:
很显然,在上述这个例子中校长是起“决策”作用的;对于辅导员只是起到“决策被执行”的作用;而对于学生则是“参与执行”。
【结论】
到此,我们就完成了关于【管理】的建模过程。
总结:管理的本质就是先描述在组织
那此时可能就有小伙伴疑惑了,你说了这么多,跟我们此时所说的操作系统之间有什么联系呢?
根据上述我们所说的管理的本质就是先描述在组织,如何理解对硬件做管理呢?
那说了这么多,我都还没回答大家为什么要对其做管理呢?
具体来说,操作系统要对软硬件资源进行管理有以下几个方面的原因:
而我们作为用户,想要使用操作系统的功能就需要通过 系统调用 的方法来使用,而不允许我们直接对操作系统内核进行操作(主要考虑的安全性的问题)
到此,关于计算机体系结构的全部知识便讲解完毕了,接下来我们简单的总结一下!
以上便是本文的全部内容,感性大家的观看与支持!!!