冯诺依曼体系结构及操作系统的介绍

1 冯诺依曼体系结构

在这里插入图片描述
冯诺依曼体系结构就是计算机的构成体系,包括以下几个部分:

  1. 存储器: 其中存储器指的是计算机的内存。
  2. 输入设备: 输入设备包括键盘、话筒、摄像头、网卡、磁盘等等,计算机的本质是需要计算数据,要想计算数据就得把数据传输给计算机,就需要对应的设备来采集用户想要处理的信息,如键盘获取用户的输入,磁盘将保存的文件运行等操作。
  3. 输出设备: 计算机要把计算结果呈现给用户,所以需要有输出设备,输出设备包括显示器、磁盘,网卡、声卡、音响等。
  4. 中央处理器(CPU): 计算机需要计算就一定要有CPU。

2 内存的概念

问题:
1、为什么要有内存?

输入和输出设备称为外围设备(外设),外设(如磁盘)一般比较慢,内存比较快。但是内存的运算速度没有 CPU 快。

2、那么为什么还要加内存呢?直接将输入设备和输出设备与CPU进行交互不好么?

在这里插入图片描述
因为外围输入设备输出设备速度太慢了,而 CPU 速度非常快,最后整体表现出来的效率取决于外设的速度,所以引入了内存,可以暂时存储数据,如 CPU 在处理 A 任务的时候,可以预先把外设的数据加载到内存中,当 CPU 将A任务跑完之后,再让CPU 执行加载到内存的数据。即内存会对数据进行预加载CPU 在进行数据计算的时候,不需要直接访问外设,而是去内存中拿数据。

3、 写一个 c 代码编译成可执行二进制文件,这个文件保存在磁盘中,而磁盘是一个外设,而程序运行需要加载到内存才可以,那为什么程序运行要事先加载到内存呢?

因为编译好的二进制指令是由 CPU 执行和计算的,由于体系结构的限制,CPU 只能向内存要数据,所以要运行可执行程序需要把在硬盘中的数据加载到内存,所以自己写的程序在运行的时候需要加载到内存中。这是体系结构决定的。
注: 在 windows 中,双击软件就完成了加载到内存的过程。在 linux 中,输入 ./ 就完成了内存加载。

4、在硬件层面,单机和跨主机之间的数据流是如何流向的?

场景一: 播放音乐在计算机中的数据流动:

在这里插入图片描述
场景二: 你和你的朋友聊 QQ ,发送一个“在吗?”信息,信息在冯诺依曼体系中是如何流动的?

在这里插入图片描述
结论:
1、在数据层面,一般CPU不和外设直接沟通,而是和内存建立联系
2、外设只会和内存打交道(在数据层面)

2 操作系统的介绍

冯诺依曼体系结构中,除了有硬件还有软件的概念,通过之前的介绍,我们知道,可以把数据预加载到内存中供 CPU 读取,那么系统中那么多的文件,预加载哪一部分数据?如果内存不够了怎么办?CPU 如何找到预加载在内存中的数据?等等问题这些问题都是需要软件去处理,这个软件就是操作系统。接下来我们谈论一下操作系统:

2.1 操作系统对硬件的管理

操作系统是一款进行软硬件资源管理的软件,如何理解操作系统对硬件进行管理?
首先举一个例子:在学校里面有校长辅导员学生三种身份,那么校长一定是管理者,他起到了决策作用(如学采集学生的基本信息);辅导员执行决策的作用,负责接收校长的命令并传达给学生(传达校长的命令),学生是命令的执行者

在这里插入图片描述
管理的本质是对被管理对象的数据做管理,就是校长(管理者)需要知道每个学生(被管理者)的信息。

那么有一个问题:校长(管理者)是如何拿到学生(被管理者)的数据的呢?

在这里插入图片描述
就是通过辅导员收集提交的数据。那么如果收集到的学生信息太多,会导致校长无法快速处理这些信息,所以校长会让辅导员按照某一格式上传学生信息,如(姓名、年级、电话、成绩),假设这个校长是计算机协会大佬,会写 C 语言,他把每个学生的信息定义成一个结构体,里面有每个学生的数据和指向下一个学生结构体的指针,这样串联起来就形成了一个单链表。如果校长想要调取成绩最高的学生信息参加某一比赛,只需要对单链表进行遍历找到成绩最高的同学。再下发命令让这个同学参加比赛。校长此时的决策行为,转化成了对链表的遍历动作。
如果校长想开除某一个学生或者添加新学生的信息,就是对链表删除增加动作,因此校长的动作可以看成是对链表增删查改,以上动作这就是对管理动作做建模的过程,即把一些具体场景转化成了计算机语言。

3 操作系统对硬件管理的本质

对管理者进行建模:

1、管理者本质:决策作用 对被管理对象的数据进行管理
2、管理的本质:先描述,再组织

操作系统可以将硬件结构体的方式描述硬件的属性、编号、对应的类别、硬件当前状态,然后把设备看作一个链表节点,再把所有设备以某种方式连接起来,所以对设备的管理就转换成对链表增删查改
描述的过程就是面向对象的过程,组织的过程就是数据结构的问题。学习操作系统需要知道,语言帮我们完成描述的过程、而数据结构帮我们完成再组织的过程,只有理解先描述再组织,才能理解管理的本质,进而才能理解操作系统,换言之,想学习操作系统就必须学习语言数据结构

3.2 操作系统如何进行内存管理

先描述再组织,操作系统将内存用某种语言进行描述,再用数据结构如链表链接起来,所以对内存的申请和释放或者其他操作都转化成了对链表的操作。

3.3 操作系统如何对进程做管理

先描述再组织,每一个进程看作一个结构体变量,所有进程通过链表连接起来,查找一个进程让 CPU 运行,就转换成了对链表的查找,对进程进行销毁就转换成了对链表的删除。
那么校长辅导员学生映射到计算机中就是操作系统硬件驱动硬件,如下图所示:

在这里插入图片描述
驱动就是和硬件交互操作系统拿到数据做决策并交给驱动硬件执行操作系统驱动的命令。操作系统想要对硬件进行管理,就是通过各种驱动程序提取硬件的信息,操作系统将所有硬件抽象成结构体,获取信息后,填充设备结构体,构建设备节点,将所有底层管理的设备以某种数据结构进行管理,最后对设备的管理就转换成了对链表的管理。

3.4 操作系统如何得知硬件出现问题

驱动程序上报给操作系统,或者驱动改变某一结点状态,操作系统在遍历检测的时候发现某一节点状态改变,就知道硬件出问题了。以上过程就是对管理做建模的过程。

3.5 操作系统为什么需要对软硬件资源做管理

因为计算机是为人服务,为了更好提供服务,避免软硬件出现问题,就需要对软硬件资源进行管理。操作系统对下通过管理好软硬件资源(这是操作系统的手段),对上给用户提供良好的(良好值得是安全、稳定、高效、功能丰富等)执行环境(这是操作系统的目的)。

再看下面一个例子:
一个银行的运作,会有以下几个部分,银行行长、负责各种工作的银行职员、银行的各个部门和银行的基础设施。银行的运作情况和计算机运行情况形成了一种映射关系,其中在银行中电脑服务器座椅板凳对应在计算机中的硬件IT部门会管理维护电脑服务器,对应在计算机中是直接和硬件交互的硬件驱动,而银行行长就像是我们的操作系统,负责做出决策。员工负责完成某一项专属工作,就像计算机中的软件,也可以被操作系统管理。

在这里插入图片描述
问题:
1、银行为用户提供各种非常好的服务,但是银行相信我们吗?

答案是不会。因为银行既要给我们提供服务,同时又不会允许我们访问内部细节(不会让你随便进入金库),类似地操作系统也有这种需求,操作系统(OS)给用户提供良好的服务,但是不会相信任何人,不会让人访问内部细节。

2、如何既保证自身安全,又对用户提供良好的服务呢?

银行就会有窗口和柜台,用户可以在柜台进行操作,既提供了相关服务,又保护了自身的安全。

在这里插入图片描述
3、操作系统是如和在保证自己安全的情况下给用户提供良好服务呢?

操作系统将自己的功能以接口的方式提供给用户,这种方式叫做操作系统的系统调用。操作系统提供服务的方式是通过系统调用提供的。 Linux 操作系统使用 C 语言编写的,所以系统调用中的系统指的就是操作系统,调用的本质就是操作系统设置的 C 语言的函数,系统提供 C 语言的函数,用户通过调用这些函数使用操作系统的功能。这就既保证了操作系统的封装性,又给用户提供了各种功能。

在这里插入图片描述
但是有些人不会使用系统的调用接口,所以有些人会针对这种情况进行二次的软件开发,如写一个图形化界面shell工具集(输入指令达到特定目的)如 touch 创建一个文件,touch 指令的内部调用了系统调用,通过操作系统贯穿体系结构,向硬件(磁盘)进行写入。
同理,语言中有些指令需要访问操作系统,如 printf 等需要打印字符到硬件(显示器)上,用户不能直接访问底层硬件,必须调用系统接口访问硬件。如 C 语言中的 stdio.h 头文件里面包含了很多 IO 接口,这些 IO 接口最终底层需要调用系统调用接口完成对应的操作。

在这里插入图片描述

4 总结

总之,语言是在操作系统之上的,操作系统给用户提供良好的环境,用户也包括开发者,开发者提供图形化界面、开发工具等方便普通用户对操作系统做常规操作。如果想要进行看视频、打游戏等操作,可以基于上层的图形化界面窗口编写上层应用,再通过一些其他功能(如网络),完成软件应用的编写。所以现在用到电脑的所有功能的底层功能就是操作系统。

那么上层中间层操作系统三者是什么关系?请听下回分解!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值