0


[入门篇]初识操作系统OS(这篇博客将帮你打开操作系统OS大门的第一步 超超超超超详细)

1.冯诺依曼体系

要讲操作系统OS , 首先我们就要从最底层的硬件 , 冯诺依曼体系结构讲起。

1.1冯诺依曼体系的构成

冯诺依曼体系结构分别由 **输入设备 输出设备 存储器(内存) 中央处理器(运算器&&控制器)**四大件组成。

四大设备的举例 :

输入设备 : 键盘 磁盘****网卡 话筒

输出设备 : 显示器 磁盘 网卡 音响

存储器 : 存储器仅指内存!!!并不指磁盘硬盘!!!不要混淆

运算器&&控制器 : 合称中央处理器CPU , 其中运算器可以计算 , 控制器可以输出控制指令。

四大设备说明 : .

输入设备主要用来向内读取输入数据

输出设备主要用来向外输出数据信息。

有些设备既可以做输入设备 , 也可以做输出设备 。 例如磁盘 , 磁盘可以做输入设备 , 我们可以读取磁盘(输入设备)上的数据到内存存储器中 , 同时 , 磁盘也可以做输出设备 , 将内存中的数据写入到磁盘(输出设备)当中

运算器&&控制器 , 合称中央处理器CPU , 其实就是指芯片--高精度集成电路 , 当今大数据时代进步都是依靠CPU的进步。CPU中的运算器 , 可以进行算术运算和逻辑运算 , 如 +-*/% 算术运算 , | & ^等逻辑运算 。CPU中的控制器 , 可以执行CPU中某些控制逻辑 , 如读取,分析,执行指令 , 响应某些中断信号。

当然冯诺依曼体系中最重要最核心的是 存储器(专指内存) , 下面会我们对之做详细介绍。

1.2 存储器-内存

1.2.1 为什么需要存储器(内存)的两个理由

在冯诺依曼体系中 , 存储器专指内存 , 切处在最核心的位置(沟通其他所有器件) , 那为什么要有内存呢? 我们首先看一下冯诺依曼体系结构的运作过程 :

四大设备之间的运行过程 (即冯诺依曼体系结构数据信号的流动处理过程):

我们以黑色的数据信号为例 , 首先我们通过输入设备获取到数据 , 由输入设备将数据信息传输 到存储器即内存当中 , 之后内存将数据传输给CPU中的运算器进行运算 , CPU计算完毕后将数据再传回到内存当中 , 最后内存再将计算好的结果交给输出设备进行输出

所以内存在整个过程处在最核心的位置 , 是输入设备 , CPU , 输出设备 交互的唯一桥梁

同样也可以说明 , 任何的程序,数据,文件只有在导入到内存后,才能被CPU操作,才能输出显示

那这个过程中我们可不可以**不要内存(存储器)**呢?

事实上是可以这样做的但是世界上没人这样做

如果我们不要内存 , 那输入设备就会直接将数据交给CPU , CPU也会直接将计算的结果交给输出设备。然而 , 我们还需要考虑到不同设备的效率差问题!

**输入设备的输入效率是ms毫秒级别的(比如磁盘) **, CPU的计算效率是ns纳秒级别的,如果直接进行CPU和输入设备的交互 , 此时我们的运算效率就不再由CPU来决定 , 而是由输入设备来决定,那计算机的运行效率效率就变得很低了(ns->ms) , 所以我们引入了内存的概念。(内存的速度是us微秒级别的)

而当我们有存储器(内存)作为核心沟通的硬件设备。此时输入设备就不用直接打到CPU当中,而是先将数据传到内存存储器当中 , 工作的生活 , 等到CPU计算任务不是特别繁重时 , 存储器再将数据传输给CPU去进行运算 , CPU计算出结果后 , 此时也不会把结果直接交给输出设备 , 而是先交给内存 , 内存再适时将数据刷新到输出设备当中

有了内存作为核心沟通设备 , CPU就不再需要和外设们打交道了 , 而只需要和内存打交道。这个过程中 , 计算机效率的体现就不再是输入设备和CPU之间的数据传输过程了(ms毫秒级别) , 而就是在于内存与CPU之间的数据传输过程(us微秒级别) , 这样我们计算机的运算效率就大大提高了。

以上是计算机需要存储器的第一个理由 , 即内存的出现 拉高了计算机的总体运行效率 , 不过与此同时内存的出现也大大降低了计算机的制造成本。那内存是如何降低成本的呢?

我们首先要知道 : 在计算机体系中 , 凡是离CPU越近的存储设备 , 单价就越高 , 效率就越高 , 凡是离CPU越远的存储设备 , 单价就越低 , 效率就越低

例如寄存器离CPU最近 , 寄存器的效率就最高 , 不过寄存器的造价也最贵 , 再远一点的主存DRAM(即内存)的效率次之 , 造价相对便宜 , 再再远一点就是本地磁盘 , 其造价最低 , 不过效率也是最低的。

举个例子 : 我们花500块钱 , 能买几百G的磁盘 , 而寄存器的也就能买到几M , 差价就是这么离谱!

所以如果没有存储器(内存)的出现 , 输入设备带来的大批数据需要直接导入到CPU内部进行运算 , 这就需要我们以极巨大的成本来扩充寄存器的大小 , 来存储输入的大批数据 。所以内存的出现可以帮助CPU存储来自输入设备的大批数据 , CPU计算多少数据就从内存中拿多少, 这样做就降低了计算机的成本。

综上 , 存储器(内存)既能提高计算机的运行效率 , 又能降低计算机的存储造价 , 所以冯诺依曼体系下存储器必不可少的 ! 同时我们也看到 , 在计算机运行过程中 , 输入设备 , 输出设备 , CPU都需要以存储器为桥梁来完成自己的工作 , 所以存储器的核心地位也是不可动摇的 !

1.3 冯诺依曼体系的重要性

当代计算机遵循的体系结构就是冯诺依曼体系。

计算机的运行机制就是围绕冯诺依曼体系结构来运行的 , 万物都围绕冯诺伊曼来走 , 这其实是从是底层纯硬件角度揭示计算机的运行原理

通俗点说 :

我们每个人的计算机其实就是一组冯诺依曼体系

计算机中一切的运行 , 都可以看作在硬件层面 数据信号 在冯诺依曼体系中 流动全过程。即一切的程序运行都是在冯诺依曼体系中的运行

这样说还是太抽象 , 而且我们对冯诺依曼的理解,不能停留在概念上,要深入到对软件数据流理解上 , 下面我们通过一个生动的例子来帮助我们继续理解冯诺依曼体系的运作。

1.4 一个生动的例子理解冯诺依曼体系运作

高中毕业后 , 你和高中的好朋友们都远走高飞 , 去到了全国各个城市的大学 , 假设你现在在北京市的中国地质大学 , 然后你的兄弟在西安市的西安电子科技大学 , 你们相隔十万八千里 , 但是你们还是能够通过QQ在各自的笔记本电脑上远程聊天 , 比如身处北京的你在笔记本电脑上输入发送了 我想你了 这个消息 , 那你的好朋友就能在他的笔记本电脑的QQ上收到这条富有感情的消息 , 下面我们从纯硬件的角度来解析数据流向的过程

首先每一台计算机都是一组冯诺依曼体系 , 两台计算机的交互 , 其实是两组冯诺依曼体系之间的交互 。然后**QQ作为一款软件程序 **, 必须要首先导入到内存中才能被我们使用。

我们首先在我们的计算机的键盘(输入设备)输入消息数据 , 然后加载到内存当中 , 然后消息数据从内存再交给CPU进行加密逻辑的运算 , 随后CPU将数据结果加载回内存中 , 内存最后将加密的数据信息传输到我这台笔记本的输出设备 --网卡当中。

随后网卡将加密数据再网络中进行转发 , 最后将数据接入传输到你好朋友的电脑中的输入设备--网卡当中。之后在好朋友的冯诺依曼体系中 , 数据从输入设备网卡中 ,** 首先被加载到内存当中** , 之后内存将数据信息交与CPU进行解密运算 , CPU最后把解密后的消息传回内存 , 最后这条消息从内存传输写入到了输出设备显示器当中 , 你的好朋友就知道你想他了。

计算机中的硬件是最底层的 , 即冯诺依曼体系在计算机的最底层 , 而操作系统OS位于冯诺依曼体系的上一层 , 所以操作系统实际上沟通管理了冯诺依曼体系 , 即掌管对最底层硬件的管理使用 , 进而OS才可以操作这台计算机 , 所以我们要了解OS , 就需要先了解最底层的冯诺依曼体系。下面我们正式开始了解操作系统OS。

2. 操作系统OS

2.1 什么是操作系统OS

操作系统是一款软件 , 是程序员写出的程序,且后续经过编译的 , 在内存中运行起来的一个程序 , 而这款软件是专门针对软硬件资源进行管理工作软件

由以上对于OS的简介我们可以衍生以下三点认识 :

操作系统也是软件程序 , 操作系统在没有启动的时候,是存储在磁盘当中或者其他外设当中

所谓操作系统OS的启动 , 就是将软件数据与代码 , 都加载到内存当中

如果把将你电脑上的WindowsOS操作系统删除 , 只留下纯硬件的话 , 你是无法跑程序使用计算机的。比如你想在磁盘删除一个文件 , 你想让CPU跑一个代码 , 你想让网卡发送一个数据 , 这些都是不能做的或者更准确的说成本太高 , 你不得不去直接操作这些硬件 , 所以你就得懂各个硬件的协议使用标准等 , 硬件种类繁多而且型号互不相同 , 不要OS操作系统(例如windows)作为管理硬件的中介 , 用户是很难直接操作各个硬件设备的。

总之 , 操作系统就是一款软件,一个程序 , 这款软件的作用是管理计算机的软硬件资源 , 用户需要管理软硬件资源的操作系统OS作为中介 , 从而使用软硬件资源(使用我们的计算机)。

2.2 操作系统OS的作用

下面我们通过一个生动的例子来说明 操作系统OS 硬件资源 软件资源 之间的关系 :

在大银行当中 , 我们有 仓库,电脑,窗口,板凳,员工宿舍,警棍,警盾 等等物体 , 这是银行的硬件资源 , 同时银行中也有 各种各样的员工们 , 这其实是银行的软件资源 。同时银行中也有 管理人员 , 比如说 行长或管理班子 , 这其实是银行的**操作系统OS **。

银行中 ,** 管理团队 工作的员工 硬件设备** , 三者缺一不可 , 三者集齐才能维持银行正常的运作服务 , 比如员工没有窗口电脑等硬件设备 , 就没法做好自己的本职工作 , 只有硬件设备而没有员工 , 老百姓很多服务也没法自己做到 , 没有管理班子 , 那银行的例如设备采购,人员招聘等事情也就没法做出决策 。再具体一点 , 比如老百姓需要进行存钱取款的服务 , 那工作员工就必须通过电脑,窗口来服务老百姓 。 比如现在员工反映银行点钞机都坏了 , 数钱效率低下 , 这时反馈给管理团队 , 管理团队就做出购买点钞机决策 , 再依托采购部的员工去采购 ,从而在以后提升对老百姓的服务效率。 比如现在员工工作情绪低迷 , 管理班子就会组织开展激励大会 , 来振奋员工更好的为老百姓服务。比如管理班子考虑到银行的安全问题 , 就会决策审批招聘更多的安保员工 , 决策加固防弹玻璃 , 让下面员工去招买 , 来更好的保障老百姓的生命财产安全。

计算机中为什么要有OS操作系统? 这个问题可以类比为在银行中为什么要有管理班子?

银行管理班子对下 : 管理好员工与银行硬件设备

银行管理班子对上 : 给老百姓一个稳定的,高效的,安全的服务环境。

操作系统OS 对下 : 管理好软件硬件资源。

操作系统OS 对上 : 给用户提供稳定的,高效的,安全的运行环境。

其中主要的逻辑就是 , 银行的管理团队通过管理银行的员工和管理银行的硬件设备 , 来更好的为老百姓提供金融服务。OS操作系统通过管理好软硬件资源 , 来给用户提供稳定的,高效的,安全的运行环境。管理软硬件资源是方式 , 更好的服务用户是目的

这里我们知道了操作系统OS的作用 , 那再具体点, OS操作系统是具体如何管理软硬件资源的呢?

2.3 操作系统OS如何管理软硬件资源

要讲明白操作系统OS管理软硬件资源的方式 , 我们首先举一个生动的例子 :

生活中 , 我们通常有两种事情需要做 , 一类是 做决策 , 一类是 做执行 。

现在我们说在学校里 , 有校长 , 辅导员 , 校长只负责做决策 , 辅导员只负责做执行 , 当然学校里还有被管理的同学们校长并不直接管理同学们 , 而是通过辅导员来间接管理到同学们 。校长我们站在校长的角度来思索校长是如何间接管理同学们的。

校长基本上是见不到学生的 , 我们也知道在学校中除了开学/毕业典礼 , 我们学生也见不到校长 , 那校长是通过什么来知道学生,并管理学生呢? ->通过学生的数据!!!

校长并不需要直接和学生接触 , 而只需要获取每个学生的个人信息数据 , 比如校长其实只需要知道这个学生的绩点成绩 , 职务情况 , 奖惩历史 , 志愿活动 , 社团参加 等的数据信息 , 校长知道了学生的数据信息即可对之进行管理。事实上 , 我们每个同学都只是校长手上的一个一个数据而已。校长通过我们每个人的数据来对我们进行管理

例如 , 校长一天在办公室中看到了张三同学的数据 , 看到张三同学已经挂科重修二十门以上了 , 有多次违反校规校纪的记录。所以 , 校长就做出劝退张三同学的决策 , 校长只负责做决策 , 校长就会将这个决策告诉张三的辅导员 , 让辅导员去做这件事 , 辅导员就去通知张三,给张三做退学手续等等的执行行为。再比如 , 校长看到了李四同学的数据 , 发现李四同学全科满绩,而且任职学校团委部长 , 志愿活动时长全校第一 , 校长依据这些数据 , 做出给李四同学奖大钱的决策 , 专做决策的校长就会让做执行的辅导员去办这件事 , 辅导员就去组织召开表彰李四同学大会 , 辅导员去财政部申请领导奖金 , 在大会上辅导员把奖金交给李四同学。

那校长是如何知道张三,李四同学的数据信息的呢 , 还是做执行的辅导员 , 辅导员在开学或者什么时间段会去做学生的数据信息采集这件事 , 最后将数据汇总起来再交给校长。

其实 校长 , 辅导员 , 学生们 之间的关系 , 其实类比下来就是** 操作系统 , 驱动程序 , 软硬件资源 之间的关系 ,学生的数据信息其实就是软硬件资源的数据操作系统也不直接操作管理软硬件资源 , 而是通过管理软硬件的数据信息间接的实现对软硬件资源的决策与管理** , 而数据的获取包括OS所做决策的执行 , 这些依托的都是执行者--驱动。操作系统所管理的硬件资源是以冯诺依曼结构组织的磁盘,网卡,内存等等硬件设备 , 操作系统所管理的软件资源有四大类 , 分别是** 进程管理 , 内存管理 , 文件系统 , 驱动管理**。

2.4 操作系统如何管理数据

前面我们知道 , 操作系统是通过管理软硬件资源的数据信息 , 再通过中间执行者--驱动 , 来管理到这些软硬件资源。我们不妨再具体一点 , 操作系统是如何具体来处理这些数据信息的呢?

我们这次站在校长(OS)如何管理处理数据的角度 ,在上面的那个例子当中 , 校长是如何汇总处理这些海量的来自各个学院各个专业的学生的信息数据呢?

每个学生的数据是不是应该统一汇总在一起 , 而不是张三的数据信息混杂着李四的数据信息 , 各个学院专业的学生是不是应该统一的串在一起呢 , 而不是外国语学院的学生信息会和材料学院的学生信息混到一起。这就是我们下面要解决的[1][2]两个问题:

[1] 如何聚合同一个学生个体的数据 (如何聚合一个软硬件资源个体的数据信息)

首先第一步 , 校长必须要让获取的个体数据变得不再杂乱 , 即一次性看到的就是张三同学的全部信息 , 而不是张三同学的绩点成绩后面却配着李四同学的任职情况 , 再后面混着王五同学的竞赛信息 , 这并不方便校长对于数据的管理以及处理 , 这非常不方便校长进行数据的处理。

在C/C++中我们有结构体struct/类class 来帮助我们聚合一个个体对象的全部信息

所以只要我们把张三同学的绩点成绩 ,担任职务 ,学号信息等等都统一在这一个struct中即可。

struct Stu
{
    string name;
    long long id;
    int grade[10];
    //...
}; //用结构体来汇总单个学生个体的所有信息

同样的 , 类比上面聚合学生数据信息的例子 , 操作系统对于各个软硬件资源个体数据管理 , 其实也都是首先用结构体来汇总每个软硬件个体的数据信息的。比如**一个一个进程个体(软件资源) **, 都是由一个一个结构体(名字叫struct task_struct)汇总起来的 , 里面存储的是进程个体的数据信息比如进程标号,上下文数据等等。

struct task_struct
{
    int pid;
    int code, exit_code;
    int status;
    mem* p;
};//这个是软件资源中 一个进程个体数的数据信息汇总

[2] 如何将多个学生的数据结构体 关联组织起来 (如何关联多个分散的数据信息个体)

现在每个学生个体的信息都聚合在一个一个的struct中了(你可以看作是结点) , 一所学校中学生有许多 , 大几千肯定有 , 而且都来自不同的学院专业 , 这亦不方便校长进行数据处理 , 因为我们在大几千个&&没有关联&&混杂各个学院专业的学生信息个体中 , 查找修改的效率必然是很低的 , 校长这时则会按照不同学院专业, 分别将这些独立结构体个体们都关联组织在一起

在计算机学科中 , 我们有数据结构这个利器 , 校长将这些结构体个体关联组织起来 , 其实就是用数据结构来将一个一个结点组织起来 , 例如我们可以用链表 , 二叉树 , 红黑树 , 哈希表等数据结构将这些结构体关联组织起来。

所以我们只要把外国语学院的学生数据个体struct按照数据结构组织起来 , 将材料学院的学生数据个体struct按照数据结构也组织起来 , 那么就方便校长对这些数据的增删查改 , 也即方便校长对数据的管理与处理 。

同样的 , 类比上面校长关联不同学生struct数据个体的例子 , 操作系统对于每一类软件资源/硬件资源 , 都会将该类资源的每一个个体struct信息 ,也会用数据结构组织关联起来。 例如我们拿计算机中的一类软件资源 --进程资源来说 , 计算机中有许多的进程个体 , 操作系统OS是通过管理一个个进程的数据间接管理到进程实体的 , 所以OS就把每个进程的数据信息集合struct结构体通过数据结构关联组织起来 **, 操作系统对进程数据信息组织起来的数据结构的增删查改(对数据的处理),间接管理处理到计算机中的一个一个进程实体(管理软件资源)**。

2.5 OS的核心管理逻辑*

总结如上操作系统如何管理处理数据的方式 (1.先用struct将数据个体信息聚合 2.使用数据结构将不同个体信息块组织起来) , 其实我们就可以总结为六个字 , 这六个字其实也是操作系统进行所有种类的软硬件资源管理绝对宗旨 , 六字真言

1.先描述 !!!!! 2.再组织 !!!!!!

先描述被管理的对象个体 , 再组织 将被管理对象使用特定的数据结构组织起来

所谓的操作系统OS做管理 就是先描述 在组织

其实最后就变成了OS对与数据结构的增删查改 , 这就是OS的管理!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

管理的本质就是先描述,再组织!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

下面我们举个例子具体应用这个六字真言:

操作系统如何管理进程资源呢?

-> 那必然是 先描述 在组织

-> 必然有一个描述进程的结构体(学名叫PCB -进程控制块 包括进程的状态优先级 进程对应的代码 上下文数据 都能从PCB struct中找到)

-> 同时操作系统也必然会将这些数据个体struct都用数据结构再组织起来。

-> 最后操作系统通过对这些数据的管理 , 即通过对数据结构的增删查改(决策->执行) , 来间接管理操作计算机中的进程资源。

标签: 服务器 运维 linux

本文转载自: https://blog.csdn.net/qq_63992711/article/details/127275042
版权归原作者 yuyulovespicy 所有, 如有侵权,请联系我们删除。

“[入门篇]初识操作系统OS(这篇博客将帮你打开操作系统OS大门的第一步 超超超超超详细)”的评论:

还没有评论