【Linux】计算机的软硬件体系结构

一、冯诺依曼体系结构

目前我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系,它的特点是将数据和指令存储在同一块内存中,并使用程序计数器(Program Counter,PC)来控制计算机执行指令的顺序。其具体结构如下:

在这里插入图片描述

冯诺依曼体现结构主要由运算器控制器存储器输入设备输出设备五个部分组成。

其中运算器,控制器和一些寄存器统称为中央处理器(CPU),主要负责执行指令和处理数据。

存储器一般指的是内存,内存掉电易失,只能用做于临时存储程序和数据

输入输出设备用于与外部设备进行数据交互,被统称为外设,其中磁盘,网卡属于输入输出设备,键盘属于输入设备,显示器属于输出设备,其中磁盘是不带电存储的,可以用于永久存储

我们知道,CPU是一台计算机的核心,因为它具有很快很强的运算能力(算术运算和逻辑运算),但是实际上我们可以说CPU是很笨的,这是因为它只能被动的接收别人传递的数据和指令,然后将运算得到的结果进行返回,所以这里就有两个问题:

1.CPU是如何能够识别我们传递给他的数据和指令的?

CPU能够识别我们传递给它的数据和指令,是因为计算机是按照一定的规则和格式来存储和处理数据和指令的。这些规则和格式被统称为计算机体系结构,其中包括了数据和指令的编码方式和存储方式等。

具体来说,当我们向计算机中输入数据和指令时,它们会被转换成二进制代码,并按照一定的格式存储在内存中。CPU通过控制总线和存储器的读写,从内存中读取数据和指令,并按照指令的编码格式进行解析和执行。

CPU中的控制单元(Control Unit)负责解析指令,确定指令的类型和操作对象,然后将操作对象从内存中读取到寄存器中,并执行指令所要求的操作。CPU中的算术逻辑单元(Arithmetic Logic Unit,ALU)负责执行算术和逻辑运算,将结果存储到寄存器或内存中。

总之,CPU能够识别我们传递给它的数据和指令,是因为计算机按照一定的规则和格式存储和处理数据和指令,并且CPU中的控制单元和算术逻辑单元能够解析和执行这些指令.CPU内部有一套直接的指令集,它会把指令对应到指令集,然后完成对应的操作

2.CPU需要的指令从哪里获取?

CPU需要的指令通常从内存中获取。在计算机中,指令和数据都是以二进制形式存储在内存中的,而计算机的CPU是通过总线和内存进行通信的。

当CPU需要执行指令时,它会从内存中读取指令,并将其存储到CPU的指令寄存器中。指令寄存器中存储的指令会被解码成CPU可以理解的指令格式,并且执行相应的操作。在执行完当前指令后,CPU会将程序计数器(PC)的值加上指令的长度,以便读取下一条指令。

需要注意的是,CPU需要的指令并不是一次性从内存中读取的,而是根据需要进行读取的。此外,为了提高CPU执行指令的效率,现代计算机中通常会采用高速缓存(Cache)来存储最近使用过的指令和数据,以便快速读取和执行。

总之,CPU需要的指令通常从内存中获取,并且现代计算机通常会采用高速缓存来提高指令读取和执行的效率,CPU只会向内存中读取和写入数据,内存再向磁盘读取和写入数据,其中,内存向磁盘读取和写入数据的过程就是IO的过程

【总结】

在数据层面上,CPU不会直接和外设打交道,只会和内存打交道,同样,所有的外设,有数据需要载入,只能载入到内存中,内存要写出,数据也只能写入到外设中

CPU不和外设直接沟通,只和内存直接打交道

所以此时我们就能理解为什么程序运行必须加载到内存了,这是因为CPU要执行我的代码访问我的数据,只能从内存中读取,因为CPU只和内存打交道,而我们的程序是存储在磁盘上

下面我们以一个例子,来对冯诺依曼体系结构(软件数据流的层面)进行更一步的理解:我们平时在QQ聊天的时候,在聊天窗口向别人发送信息,别人又在聊天窗口接收信息,在这个过程中,数据是怎样流动的呢》如果我们发送的是文件呢?

发送信息->接收信息 的数据流动:A的键盘 输入到A 的内存,然后A的CPU从A的内存中读取数据,然后进行加密,然后传输到A的网卡,再到B的网卡,然后传输到B的内存中,B的CPU从内存读取数据,进行解密,然后再读入内存,再输出到显示器上

发送文件->接收文件 的数据流动:A的磁盘输入到A的内存,A的CPU从A的内存中读取数据,然后进行加密,之后传到A的网卡,B的网卡,然后输入到B的内存中,B的CPU从内存读取数据进行解密,然后读入内存,再写入B的磁盘中

二、操作系统(Operator System)

1.操作系统的概念

操作系统是一个进行管理软硬件资源的软件,它通过对下管理好各种软硬件资源(手段),对上为用户提供良好的(稳定的高效的安全的)的运行环境(目的)

操作系统有四大软件管理模块:进程管理文件系统内存管理驱动管理

在这里插入图片描述

2.为什么要有操作系统

操作系统是计算机系统中最基本的软件之一,它是计算机硬件和应用程序之间的桥梁,为计算机用户提供了一种友好、高效、安全的使用环境。

以下是操作系统的几个主要作用:

1**.资源管理**:操作系统负责管理计算机的各种资源,包括CPU、内存、磁盘、网络等。它通过进程管理、内存管理、文件系统等机制,为各个应用程序提供资源的分配和管理

2.用户接口:操作系统为用户提供了一种友好、直观的用户接口,使得用户可以方便地使用计算机。操作系统提供了各种应用程序和工具,例如文本编辑器、图形界面等,使得用户可以更加高效地完成工作。

3.安全保护:操作系统通过访问控制、加密等机制,保护计算机系统的安全。它可以限制用户对系统资源的访问权限,防止恶意软件的攻击和数据泄露等问题。

4.系统维护:操作系统可以监控计算机系统的运行状况,检测和修复系统错误,提高系统的稳定性和可靠性。它还可以进行系统更新、升级等操作,使得计算机系统始终保持最新的状态。

综上所述,操作系统是计算机系统中不可或缺的一部分,它为用户提供了友好、高效、安全的使用环境,为计算机系统的稳定性和可靠性提供了保障。

3.操作系统如何进行管理

操作系统通过多种机制进行管理,包括进程管理、内存管理、文件系统、设备管理等。

1.进程管理:操作系统通过进程管理机制,为每个应用程序分配独立的内存空间和CPU时间。它可以监控和调度进程的运行状态,防止应用程序之间的干扰和冲突,提高计算机系统的稳定性和响应速度。

2.内存管理:操作系统通过内存管理机制,为每个应用程序分配独立的内存空间,并且可以动态地调整内存的使用情况。它可以监控内存的使用情况,防止内存泄漏和内存溢出等问题,提高计算机系统的稳定性和性能。

3.文件系统:操作系统通过文件系统机制,为用户提供了一种方便、安全的文件存储和访问方式。它可以管理文件的创建、读取、写入和删除等操作,防止文件的损坏和丢失,保护用户数据的安全性。

4.设备管理:操作系统通过设备管理机制,管理计算机系统中的各种设备,包括输入输出设备、网络设备、存储设备等。它可以协调设备之间的通信和数据传输,防止设备冲突和数据丢失等问题,提高计算机系统的稳定性和可靠性。

总之,操作系统通过多种机制进行管理,为计算机系统提供了一种高效、安全、稳定的使用环境。它可以监控和调度各种资源的使用情况,防止资源的浪费和冲突,提高计算机系统的性能和可靠性

此外,我们还需要从一下三个方面方面进行理解:

1.管理者不需要与被管理者直接交互,依旧可以能够很好的将被管理者管理起来

我们以我们大学的学校管理为例,我们的校长并没有直接和我们打交道,即进行交互,即使交互也是问我们对学校满不满意,但是他仍然能够将我们很好的管理起来,我们可能会说,我们并不由校长来管理的,而是由我们的辅导员来管理的,但是实际上,辅导员并不能完全算一个管理者

这是因为拥有对重大事宜有决策权的人才是管理者,虽然在我们的日常生活中,与我们进行交互最多的就是我们的辅导员,那么辅导员对我们的某些事物没有决策权,比如我们是否能评奖评优,是否被开除学籍等等

2.管理的本质是对数据进行管理

那么我们的管理者是如何对我们进行管理的呢?比如我们的校长是如何对我们进行管理的呢?

答案是对我们的数据进行管理,校长通过辅导员获取我们的各种数据,比如成绩情况,有没有挂过科等等,然后做出决策,最后辅导员再对我们执行这些决策,所以管理者通过执行者提供的数据对被管理者进行管理,执行者通过与被管理者进行交互得到被管理者的各种数据,管理者通过这些数据对被管理者做出决策,然后执行者再执行这些决策

对于我们的计算机来说,在操作系统和硬件之间有一层驱动硬件的驱动层序,各种硬件对应的驱动就是我们所说的执行者,驱动程序执行操作系统的指令去完成相关任务,比如网卡有网卡驱动,磁盘有磁盘驱动,操作系统从这些驱动中获取硬件的数据,根据硬件的数据对硬件进行管理

在这里插入图片描述

3.管理的方法:先描述,再组织

如果我们学习没有几个学那么校长可以用一个excel表格对我们学生的数据进行管理,但是实际上,往往一个学校的学生都是很多的,如果还是使用这种 方式的话,就会十分麻烦,管理的成本就会很高,所以,我们可以把学生需要存储的数据抽取出来,然后将这些数据描述成一个结构体或者一个类,然后将每个学生的信息用来实例化成一个对象,然后我们可以使用某一种数据结构(比如链表,顺序表)来将这些对象组织起来,我们需要查询学生信息时按照对应的key值遍历即可,删除学生直接删除学生的数据即可。这样,我们对学生的管理就变成了对某一数据结构的管理(增删查改),这样就明显提高我们管理的效率

在这里插入图片描述

操作系统不仅能够管理硬件,还可以管理软件,并且对软件的管理方式和对硬件的管理方式是一样的,对软件的管理,变成对软件数据的管理,然后将数据描述成一个结构体或者一个类,然后用一个数据结构来存储,然后就变成了对数据结构的管理

三、系统调用和用户操作接口

系统调用和库函数概念

在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。

系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发

1.系统调用接口

系统调用接口是操作系统提供给应用程序的一组接口,它可以让应用程序通过操作系统来访问计算机系统中的各种资源,例如文件、网络、设备等。系统调用接口通常由操作系统提供的动态链接库(DLL)或共享库(Shared Library)来实现,应用程序可以通过调用这些库中的函数来访问操作系统提供的服务。

为什么需要系统调用接口呢?

这是因为操作系统不能直接对各种软硬件直接进行操作,这又是因为操作系统不相信任何用户,操作系统不确定我们是否对各种软硬件进行违法操作,就好比我们生活中银行我们只能在窗户外面进行办理业务,这也是银行不相信任何人,通过这个窗口给我们提供服务,同理,操作系统也给我们用户提供各种服务,比如用户访问软硬件的需求,从磁盘 读入数据,写入数据。所以操作系统给用户提供系统调用的接口,这样就使得我们在访问软硬件的时候,直接调用系统调用接口,然后由操作系统来帮助用户来完成对应的工作,这样就和银行的工作原理类似,通过窗口来帮助用户来满足用户的需求,操作系统这样实现既满足了用户的需求,又保护了软硬件环境。

这样我们可以根据银行的工作情况来对其更好的理解。

这里我们需要注意的是,Linux操作系统是雷纳斯-托瓦兹大佬使用C语言编写的,所以Linux的各种系统调用的接口都是C式的接口,即各种函数接口是用C语言编写的

在这里插入图片描述

2.用户操作接口

用户操作接口指的是应用程序提供给用户的一组接口,它们可以让用户与应用程序进行交互并操作应用程序。用户操作接口通常包括以下几种类型:

1.图形用户界面(GUI):提供了一种直观、易用的图形界面,让用户可以通过鼠标和键盘等输入设备与应用程序进行交互。GUI通常包括窗口、菜单、按钮、文本框等控件,使得用户可以方便地进行各种操作。

2.命令行界面(CLI):提供了一种基于文本的命令行界面,让用户可以通过键盘输入命令来操作应用程序。CLI通常包括命令行提示符、命令行参数、命令行选项等,使得用户可以更加灵活地操作应用程序。

3.应用程序编程接口(API):提供了一组编程接口,让开发者可以通过代码来操作应用程序。API通常包括函数、类、方法等,使得开发者可以更加灵活地定制应用程序的功能。

4.语音用户界面(VUI):提供了一种基于语音的用户界面,

为什么需要用户操作接口?

系统调用接口对用户的要求比较的高,用户操作接口是为了让用户能够与计算机系统进行交互而设计的。通过用户操作接口,用户可以输入命令、浏览信息、执行任务等等。这样一来,用户就可以更加方便地使用计算机系统,提高工作效率和用户体验。同时,用户操作接口也有助于降低用户对计算机系统的学习成本,使得更多的人可以轻松地使用和掌握计算机技术。

所以,这样用户就可以通过这些操作接口进行指令操作开发操作以及管理操作等等,对于我们在Linux下使用 的ls 指令,将磁盘文件信息写入到显示器,touch指令等等本质上都是调用系统接口,在磁盘上创建文件,将磁盘文件信息写入来完成对应的工作

在这里插入图片描述

四、计算机的软硬件体系结构

【总结】

操作系统对所有的软硬件资源进行管理,同时为用户提供访问软硬件资源的系统调用接口,由操作系统来完成对资源的各种访问,为了降低用户的使用成本,操作系统提供了各种用户操作接口来访问软硬件资源,用户操作接口的底层再来调用系统调用接口,从而来完成用户的各种需求,此时,操作系统就将用户,软硬件有机联系了起来

至此,我们的计算机软硬件体系结构就搭建起来了:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_67582098/article/details/133279527