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

news2024/11/28 5:33:01

文章目录

      • 冯诺依曼体系结构
      • 操作系统(Operator System)
        • 什么是操作系统
        • 为什么要有操作系统
        • 操作系统是怎么实现管理的
      • 系统调用接口和库函数
      • 总结

冯诺依曼体系结构

谈到计算机的硬件结构,第一个想到的必然是经典的冯诺依曼体系结构:

f4d0c6c0ff2b87de097d2d1ddc4858bb

我们常见的计算机,如笔记本,和我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。

我们所认识的计算机,都是有一个个的硬件组件组成:

输入设备:包括键盘, 鼠标,扫描仪, 写板等

中央处理器(CPU):含有运算器和控制器等

存储器:这里特指内存(泛称,像缓存等也都在这里归结为内存),存放临时数据,通电时才工作

输出设备:显示器,打印机等

其中输入设备和输出设备都叫做外设,在数据层面,CPU是不直接和外设打交道的

怎么理解呢?

如上图中的实线所标记的数据流,

是先由输入设备传输到存储器,也就是内存,

然后数据再有内存传到CPU进行运算,

运算结果再由CPU返回到内存,

最终输出到输出设备,可能是显示器,也可能是网卡、音响等等。

这种设计的合理之处在哪呢?

首先我们知道,CPU再细分一下,

内部有寄存器,作为存储结构,

而寄存器是读取速度最快的存储单元,

内存次之,外设最次。

可不可以让数据直接从外设流入寄存器呢?

当然可以,但是这样有一个问题,

寄存器直接从外设中读取数据,

数据的传输数据是取决于寄存器还是取决于外设呢?

很明显是外设,可以类比一下木桶原理。

而内存呢,造价相对寄存器低了太多,效率相比外设又高了许多,

所以内存的存在,一是可以存放大量的临时数据而又控制了成本,

二是可以作为一个缓冲,让数据的流入和流出效率更高。

代码指令同样是数据,

所以外设中需要CPU执行的指令也要先流入内存,

再由内存流入控制器,由控制器直接发送相关指令操作。

举一个很简单的例子,我从微信给朋友发送了一条消息,这条消息是如何经过上面的体系流入我朋友的机器最终在他的屏幕上显示出来呢?

首先我从键盘输入信息,此时键盘就作为输入设备,

信息经内存流入运算器进行编码,然后再由内存流入输出设备,也就是网卡,

其中输入信息点击发送后不仅有数据的流入,还有指令的流入,

指令经过控制器解码执行,最终给各硬件发送指令,

比如让我的显示器显示我发送的信息,

比如让网卡将消息经网络传输到我朋友的网卡。

然后朋友的网卡那边就接收到了来自我这边的消息和一些指令,

消息和指令数据通过内存从网卡流入运算器和控制器,

处理完毕后再作用于外设,也就是他的屏幕上。

经过这么一个过程,就完成了数据的流转。


操作系统(Operator System)

有了这么一个硬件体系,计算机就可以正常工作了吗?

显然不是,就好比工厂购入了各种机器,此时工厂就可以进行生产了吗?

工厂需要工人来操作这些设备,

而计算机也同样需要这样一个角色将各种硬件组织起来。

充当这个核心角色的就是大名鼎鼎的操作系统了。

什么是操作系统

任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。

操作系统是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序

笼统理解,操作系统由两部分组成;

内核(进程管理,内存管理,文件管理,驱动管理)

其他程序(例如函数库,shell程序等等)

为什么要有操作系统

对上层使用者来说,操作系统可以为用户提供一个安全的、稳定的、高效的运行环境:

从普通用户的角度来说,计算机操作系统体现为其提供的各项服务

从程序员的角度来说,其主要是指用户登录的界面或者接口

如果从设计人员的角度来说,就是指各式各样模块和单元之间的联系

对中层的各种需要运行的程序来说,操作系统需要将它们组织起来,对其进行管理。

对下层的各种硬件来说,操作系统需要将它们组织起来,让硬件跑起来,物尽其用。

从计算机的视角出发,操作系统是一款纯粹为管理而打造的软件

操作系统是怎么实现管理的

作为学校学生,我们可以先思考一下,

学校是怎么对我们进行管理的呢?

学校不会去一对一地监视到我们每个具体的个人,

而是会通过我们的各种信息对我们进行管理。

比如开学的时候会对新生进行信息采集,

将新生的基本信息录入到教务系统的数据库中,

在此基础上,对学生的管理就变成了对数据的管理。

比如你参加了期末考试,你的成绩会被更新到数据库中上,

从而评奖评优就可以以你所取得的“数据”为部分参考指标。

学校对你的管理并不严格关注你个人,而是关注你的数据。

但是对你的数据进行管理会影响到你个人吗?

把你的成绩全都改成了0,会影响你吃喝睡吗?

不影响,因为你不知道你的数据是什么样的,

而影响你的会是学校通过你的数据对你下发的决策。

比如你门门挂科要延毕了,学校会对你下发延毕的决策,

而决策真正作用到你身上是通过你的学院对你下发的通知。

这里就诞生出了三个角色:

学生,也就是被管理对象,会被抽象成各种数据

学校,也就是管理者,会对各种数据进行管理并下发通知

学院,也就是执行者,接收上层的通知并对下执行

而对计算机来说,操作系统就充当了这里的管理者的角色,

各个硬件就充当了被管理者的角色,

操作系统怎么实现对硬件的管理呢?

通过各种硬件驱动,比如声卡驱动、网卡驱动。

这是第一个关注的问题 —— 操作系统对数据进行抽象管理,并通过执行者实现具体的管理,而不与具体的数据所有者进行直接交互

第二个需要关注的问题就是 —— 管理者会将被管理对象的数据从被管理对象本身抽象出来,这个过程叫做对被管理者的描述,通过学号、姓名、年龄等数据描述你这一个人,然后将你的这些数据整合成一个类,将同类数据整合起来,从而实现对所有学生的管理,这个过程叫做对数据的组织先描述,再组织,也就成了管理的核心。

就好比写一个简单的学生管理系统,需要声明一个结构体来描述一个学生的信息,然后通过建立一个链表或数组,将学生信息用一定的数据结构组织起来,对学生的管理就转为了对数据结构的增删查改。

操作系统同样是以此模式工作的。


系统调用接口和库函数

首先明确一点,操作系统为了安全,是不信任任何用户的。

可以类比银行系统来理解,银行系统是不信任任何一个用户的,

不然为什么还要给你开放窗口而不是直接让你去小金库。

但与此矛盾的是,他又要为你提供各种服务。

银行会开放窗口或提供ATM机供你操作完成服务,

既向你提供了服务,又保证了一定的安全性。

同样地,

操作系统对外也提供了像银行窗口似的各种接口供开发者使用,

从而满足用户的各种操作。

这就叫是所谓的系统调用接口

系统调用接口的优点很明显,

缺点也同样明显,

比如功能比较基础、使用门槛较高…

所以又有大神对其进行封装,

封装开发出了一系列的库,

在此基础上对其进行二次开发,

开发出了诸如shell、函数库、图形化界面等等开发门槛的更低的接口。


总结

所以回顾一下前面提到的软硬件。

从最底层的各种硬件:外设、内存、处理器…

向上是作为管理者的各种驱动对具体硬件进行具体管理;

再向上是作为管理者的操作系统,

通过各种控制块对软硬件进行描述,

然后再通过一定的数据结构将其组织起来,

实现对硬件或是运行在硬件之上的软件的管理;

再向上是操作系统对外开放的各种系统调用接口;

再向上是大佬们开发出来的各种封装好的库;

而最上层的就是我们用户所使用的各种较为成熟的库,或者称之为用户调用接口:

image-20230105191638613

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

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

相关文章

在购买低代码产品时,源码是必需的吗?

编者按:企业在采购软件或者平台时,到底需不需要源码?本文分析了源码交付的对于不同规模和情况企业的意义,并介绍了源码交付的低代码平台。关键词:源码交付,可视化设计,私有化部署,多…

数据上线:首届6G智能无线通信系统大赛OPPO赛道评测正式开启

12月26日,首届6G智能无线通信系统大赛——面向小样本条件场景自适应及在线更新需求的无线AI设计赛题已经正式上线,数据集也已经在1月3日正式上线啦,评测同步开启,快来打擂冲榜! 文末还将揭晓本赛题专属活动&#xff0…

图像锐化处理之一阶微分算子

图像锐化是通过增强图像的边缘和细节来提高图像的清晰度的操作。这种操作通常用于将模糊或不清晰的图像改进为更清晰的图像。由于微分是对函数局部变化率的一种描述,因此图像锐化算法的实现可基于空间微分。 一阶微分算子 对任意一阶微分的定义必须满足两点&#xf…

采用热电偶温度传感器实现超高精度温度跟踪控制的解决方案

摘要:针对温度跟踪控制中存在热电堆信号小致使控制器温度跟踪控制精度差,以及热电阻形式的温度跟踪控制中需要额外配置惠斯特电桥进行转换的问题,本文提出相应的解决方案。解决方案的核心是采用一个多功能的超高精度PID控制器,具有…

ubuntu18.04安装mysql5.7.32

目录一、下载mysql安装包二、下载依赖三、安装mysql四、导入sql一、下载mysql安装包 下载地址:https://downloads.mysql.com/archives/community/ 下载包 mysql-server_5.7.32-1ubuntu18.04_amd64.deb-bundle.tar 下载后解压,里面包含要安装的deb包 二、…

计算机编码

字符的表示原理 计算机内所有信息都是使用0和1进行表示的。 对于一个短路来说,0代表关,1代表开。那把这些电路组合起来就可以有长串0和1组成的二进制数字,我们对这些数字进行编码和解码,我们就能用它来表示我们想要表示的东西了…

蓝牙模块芯片串口透传的AT指令模式和波特率是什么意思

一、什么是蓝牙串口透传模块的模式 蓝牙串口模块,一般都会有两个模式,即AT指令模式,以及透传模式 1、有的模块,会通过一个GPIO口来选择当前是什么模式,比如将一个IO口拉低则进入透传模式,也就是不再识别A…

element-ui 表格el-table高度不是一个固定值时固定表头

elementui中为表格组件提供了height属性实现固定表头 height可以为数字或者字符串,当为一个数字时表示固定的高度,也可以为百分比等字符串。 当height不是一个固定值时,如期望表格可以填充完页面剩余空间,并且固定表头时&#x…

Mysql之常见可视化管理工具

mysql在日常开发中作为基础软件,对其数据的管理必不可少,除了系统自带的命令行管理工具之外,还有许多其他的图形化管理工具,下面介绍常见的mysql图形化管理工具。 1、Navicat Navicat 是一个桌面版 MySQL 数据库管理和开发工具。…

【Linux操作系统】程序的编译和动静态链接

文章目录一.编译写在前面1.预处理2.编译3.汇编二.(动静态)链接1.动态链接2.静态链接3.静态链接库的下载安装4.windows下动静态库的后缀一.编译 写在前面 编译这整个过程都只是在编译你自己写的代码,直到链接才让你的代码和库的代码关联起来,最终形成可执行程序 源程序到可执行…

靶机测试Os-ByteSec笔记

靶机测试Os-ByteSec笔记 靶机描述 Back to the Top Difficulty : Intermediate Flag : 2 Flag first user And second root Learning : exploit | SMB | Enumration | Stenography | Privilege Escalation Contact … https://www.linkedin.com/in/rahulgehlaut/ This w…

EXSi root密码忘记通过centos7镜像破解

1.安装软碟通UltraISO刻录U盘启动盘 下载阿里云centos7镜像,选择mini的链接:https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2207-02.iso?spma2c6h.25603864.0.0.28f76aeapbXyYT 打开软碟通,打开下载的…

C语言宏定义立即数后缀U的含义

背景 在看开源的相关代码中,会有下面的宏定义用法 #define TEST_VALUE (0xFFFFFFFFU) 其和下面的宏定义区别是什么呢? #define TEST_VALUE (0xFFFFFFFF) 答疑 U表示 unsigned 无符号后缀,关于后缀的表述C99标准有如下定义&…

私有部署V3.8:自建内部应用库和预置应用

2022年12月27日,明道云私有部署V3.8正式发布。除了同步更新明道云SaaS版V7.8的功能以外,V3.8还将应用库功能下放至私有部署,私有部署用户可以自建企业内部应用库,并且给新创建的组织预置应用了。 注意:该功能仅面向明…

CSS知识点精学4-学成项目案例实现

根目录 先写好项目根目录 网站的首页,所有网站的首页都叫index.html,因为服务器找首页都是找index.html 一般网站页面配套的css文件与网站设置为相同的名字 比如index.html搭配index.css 准备工作 首先,我们发现没一个模块都是居中显示的,抓住一个边…

Python压缩模块gzip

文章目录初步认识压缩和解压缩函数初步认识 gzip是用于处理gzip格式的模块,相当于是zlib模块面向文件的一个应用,其最常用的函数为open。 有了open,那就得演示一下文件读写 import gzip with gzip.open(test.txt.gz, wb) as f:f.write(&qu…

Halcon笔记1

一、前言 最近来触碰一下halcon,一直以来作为ai算法工程师,虽然知道halcon,但是一直也没有用过 对于我们用户来说,halcon与opencv的差距主要在下面: (1)halcon是闭源的,商业的软件…

ATJ2158 LRADC的使用

LRADCLRADC对应引脚LRADC采样电压范围及位数使用LRADC涉及到的驱动文件如何使用不同的LRADC通道LRADC对应引脚 LRADC对应引脚备注LRACDC1WIO0/WIO1LRACDC2GPIO8/GPIO20LRACDC3GPIO9/GPIO21LRACDC4GPIO35LRACDC5GPIO5LRACDC6无没有找到相应的引脚LRACDC7GPIO63 LRADC采样电压范…

剑指 Offer 22. 链表中倒数第k个节点

剑指 Offer 22. 链表中倒数第k个节点 题目 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。 例如,一个链表有 6 个节点,从头节点开始&#xff0…

基于R的Bilibili视频数据建模及分析——聚类分析篇

基于R的Bilibili视频数据建模及分析——聚类分析篇 文章目录基于R的Bilibili视频数据建模及分析——聚类分析篇0、写在前面1、数据分析1.1 聚类分析1.2 聚类统计1.3 系统聚类1.4 Kmeans与主成分分析2、参考资料0、写在前面 实验环境 Python版本:Python3.9Pycharm版本…