• 【Linux】感性认识冯诺依曼体系结构和操作系统


    前言:本章都是为后续进程的理解做铺垫

    1、冯诺依曼体系结构

    在这里插入图片描述
    我们常见的计算机(笔记本)和我们不常见的计算机(服务器),大部分都遵循冯诺依曼体系。

    我们直观的计算机的构成有很多的外设,而输入设备输出设备都属于外设。
    其中常见的:

    1. 输入设备:鼠标、键盘、摄像头
    2. 输出设备:显示器、打印机、音响
    3. 既有输出又有输入的设备:网卡(将数据传到网络,也可从网络拿去数据)、磁盘(程序从文件中读取、写入)

    接下来我们主要讨论数据信号
    上图中的存储器代表的是内存,是一种具有临时存储能力的设备。
    中央处理器(CPU)由运算器和控制器以及其它构成。

    冯诺依曼体系结构规定

    1. CPU不和外设直接打交道,和内存直接打交道。
    2. 所有外设,有数据需要载入,也是通过外设载入到内存,同样数据写出也是从内存到外设中。

    接下来让我们试着解释一下

    我们知道这是规定,那么在数据层面CPU只和内存打交道为的是什么呢?

    这里是引用
    我们不难理解,CPU的速度很快,外设的速度较慢。

    其实它们三个的关系,遵循着“水桶效应”,容量取决于最低的木板。

    如果CPU直接和外设打交道,由于外设对数据的处理速度相对CPU是非常慢的,计算机的整体效率就非常慢。

    为了提高整体效率,让它们通过内存进行交互,可以适配CPU和外设速度不匹配的问题。

    内存的出现,使得可以通过外设将数据预先写入到内存,CPU也可以预先写到内存中,以达到计算机整体效率的提高,所以内存也就相当于一个缓存。
    在这里插入图片描述


    接着我们可以通过实例感悟一下在数据层面

    如果我们将一句 “在吗” 通过微信传给一位朋友,不考虑网络,数据流是如何流动的

    我们通过键盘输入通过我们电脑内存,经过CPU处理再经过内存出现到我们屏幕上,数据并且也从内存传输到了网卡上。朋友通过网卡输入数据到内存,经过CPU处理再经过内存出现到朋友的显示屏上。
    在这里插入图片描述


    拓展知识:
    其实CPU是比较" 笨 "的!

    CPU只能接受别人的指令,别人的数据,然后执行别人的指令,计算别人的数据!(也就是自己有能力,但只有收到任务才能体现能力,是被动的)

    那CPU是如何识别别人的指令呢?

    其实CPU拥有着自己的指令集(精简指令集和复杂指令集),我们写的代码最后转换成二进制可执行文件,就是转换成CPU能识别的指令!


    外设向内存中写入读取数据,这种过程叫做IO过程(input,output)。


    总之这一节重点就是:CPU在数据层面不会和外设直接沟通,只和内存直接打交道。这是为了计算机的整体效率

    2、操作系统

    前面说到,内存的出现,使得可以通过外设将数据预先写入到内存,CPU也可以预先写到内存中,以达到计算机整体效率的提高。

    那么谁帮忙预先处理呢?
    操作系统!

    操作系统是一个进行管理软硬件的软件。

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


    为什么要管理?
    从大概来说,操作系统向下合理的管理各种硬件(手段),向上为用户提供提供良好的(安全的、稳定的、高效的)执行环境(目的)。

    结构关系:
    在这里插入图片描述

    2.1 操作系统向下对硬件的管理

    我们先看向下合理管理各种硬件

    那么如何进行管理的呢?

    我们可以将这个通过一个例子更好理解一下,我们将操作系统看作校长,驱动看作辅导员,底层硬件看作学生。

    校长几乎不与学生打交道,依旧能将学生管理起来。
    管理者几乎不需要和被管理者进行交互依旧能管理起来!

    校长是如何对学生进行管理呢?
    管理者通常是有重大事件决策权的人,辅导员和学生没有决策权。
    而决策是要有依据的!
    虽然学生不直接与校长打交道,但是学生的数据,早已被校方拿到。
    所以本质不是对人管理,而是对学生的数据进行管理
    通过将学生的数据进行管理起来,只要通过数据的增删查改,就能有效的管理每个学生。


    管理者和被管理者不直接进行交互,怎么一直拿到数据?
    在这两者之间应该还有一个执行者(辅导员),执行上方的命令,与被管理者接触拿到数据,为校方提供数据。
    在计算机中,操作系统不与硬件直接交互,而是通过驱动程序去拿硬件数据,交给操作系统。

    管理的本质:其实就是对数据的管理

    在这里插入图片描述

    管理的本质是通过数据进行管理,那么如何管理数据呢?
    决策的执行和数据的采集都由执行者(辅导员)来做。
    那么如果被管理者(学生)数据很多怎么办呢?

    管理者需要数据的种类是一样的!
    首先需要知道学生的各种属性,就像C语言学生管理系统,建立学生结构体那样。
    之后根据这种学生类,进行实例化(每位学生填自己信息),最后可以通过一个链表将学生们的信息链接起来,通过对链表结构进行管理,从而管理学生。

    所以其实管理的方法其实就像数据结构一样,先描述再组织。

    总结一下:
    管理的本质:对数据进行管理。
    管理的方法:先描述再组织。

    其实不只是操作系统对硬件这样,生活中很多的管理现象都大致是这样。

    2.1 操作系统对软件

    通过一个形象的对比,可以让我们更好认识。
    在这里插入图片描述

    操作系统如何管理软件?

    首先我们得知道,操作系统也是软件。
    人能管理人,软件也能管理软件。

    操作系统对上不信任任何软件,但同时也要对任何软件提供服务。
    这就相当于银行不信任任何人,但同时也要对老百姓提供服务!
    用户不能直接访问操作系统,为的是操作系统需要保护自己!
    银行不让老百姓直接访问内部,为的是保护自己!

    为了这种情况,操作系统为外部提供 操作系统接口
    相当银行为老百姓提供的窗口。
    这种接口也简称系统调用
    我们将身份证、银行卡交给银行窗口,这叫做传参行为,经过办理返回现金,这叫做返回值过程。
    同样在计算机里,我们将字符串参数传给系统接口,返回结果,这就叫做系统调用。
    以上叫做接口式服务

    不仅如此,银行也有前台经理或是代为老百姓到窗口办理服务的角色!(我们学的,就是如何与前台经理办理手续)
    类似的在操作系统之上就有一个软件层,如Shell、C/C++库,为了降低成本的满足了用户指令操作和编程操作。
    (比如我们在编程使用printf或cout时,其实就是通过C/C++库,经过函数调用,再调用系统调用,将数据传给操作系统,让操作系统为我们在显示屏上打印。)

    库函数的来源: Linux操作系统是由C语言写的,操作系统接口,就是C式的接口,而我们编程调用的库函数,其实就是经过封装的操作系统提供的函数调用。

    库函数是从系统中提取出来的,我们只能通过系统调用接口访问操作系统,比如fork函数。


    对整个计算机结构有个大概的认知,方便一下我们对今后学习的理解。
    在这里插入图片描述

    本章完~

  • 相关阅读:
    【结构体内功修炼】结构体实现位段(二)
    Matlab中clear,close all,clc功能详细说明
    九、Linux用户管理
    《Java》【速学】对象-多态
    mysql 存储过程 带游标
    02 线程安全问题
    虚拟摄像头之三: 重构android8.1 的 v4l2_camera_HAL 支持虚拟摄像头
    跑步耳机哪种好,推荐五款在运动中值得佩戴的耳机推荐
    Leetcode(135)——分发糖果
    HUAWEI(26)——防火墙双机热备
  • 原文地址:https://blog.csdn.net/Ahaooooooo/article/details/127764983