冯诺依曼体系结构以及操作系统初步理解
冯诺依曼体系 操作系统冯诺依曼体系
如下图:
那么为什么计算机当今都还要采用这种设计模式呢?
我们为什么不能让用户通过外设输入后通过cpu处理直接输出显示呢?
下面我们先来了解一些硬件的基本知识:
CPU:运算器&&控制器
输入设备:网卡,键盘,鼠标,磁盘,话筒等。
输出设备:网卡,显卡,声卡,显示器等。(有些设备即可输入又可输出)
这些设备是如何连接的呢:通过总线–主板,但这种连接方式并不是目的,它们只是在物理上连接起来,我们需要做的是数据的流通
,而数据流通的本质就是数据在不同设备之间的来回拷贝,拷贝的速度就决定了计算机运行的效率。
回到刚开始的问题:我们为什么不能让用户通过外设输入后通过cpu处理直接输出显示呢?
我们知道木桶效应
:假设一个木桶是由不同长度的木板围起来的,那它装水的多少并不取决于最长的那个木板,而是取决于最短的那一条木板。
将这个效应运用到计算机上,我们都知道外设输入到计算机中的过程效率是非常低下的,和cpu处理这些输入的数据的效率根本不在一个档次,那如果没有内存的设计,那么计算机运行的效率取决于最低的即外设的效率,就会非常低下,那么我们为什么还要设计更先进的cpu呢。
所以我们引进了一个叫内存的东西,它的运行速度在外设和cpu之间,它负责两方面,一是预处理,二是缓存。
当cpu在处理数据的时候,内存预先把数据从外设提取出来,然后等cpu处理完后就不用再漫长等待数据的到来,直接从内存中拷贝到cpu中即可,输出数据也是,输出外设的速度太慢会导致cpu无法处理别的事情一直处于“闲置”状态,这时候就需要先把输出数据拷贝到内存中,这两方面都提高了计算机的运行速度。
所以内存就使得计算机的运行效率变为以内存效率为主,转化为了软件的问题(指的就是两方面)。
下面是一个场景,你通过qq发送了一个文件给你的同学(B),那么计算机中是如何运行的呢?
qq是一个程序存储在你的磁盘中,先从磁盘中将qq这个程序读取到内存,然后又把文件从磁盘读取到内存,然后通过网卡,同时B也通过网卡接收到这个文件,点击下载后,拷贝到内存再拷贝到B的磁盘中。
在数据层面:cpu只和内存打交道,外设只和内存打交道。
对冯诺依曼的理解,不能停留在概念上,要深入到对软件数据流理解上
操作系统
上图是操作系统软硬件的架构,什么是操作系统呢?它的定位是用来进行管理一个软件
。当我们电脑在开机的那几十秒,就是在加载我们的操作系统。
那什么又是管理呢?
先来简单谈一下:有管理必然分为管理者
和被管理者
管理者:执行决策
被管理者:执行
我们用一个生活中的典型例子来说明:
在大学里面校长就属于管理者,学生当然就是被管理者,那有人就问:辅导员不是才是管理学生的吗?答:辅导员也是在校长的管理下来保证校长他管理决策的执行的。
而辅导员就相当于驱动程序,底层的这些每一个硬件都需要提供相应的驱动程序来对硬件进行相应的数据访问以及其他的操作
,比如:当你新买一个鼠标刚接入你的电脑时,有些厂商会给你提供一个链接来安装相应的驱动程序,安装后才能使用你的鼠标。
这样一个场景:校长的决策是今天放假,辅导员就告诉学生今天放假的决策,学生当然执行这一决策。校长充当的就是操作系统,辅导员充当的相当于驱动程序这个角色,学生就是底层的一些硬件。
所以我们也可以看出管理者和被管理者是不需要见面的(就好比你大学一般只是在开学典礼的时候能看到校长吧,其他时间见得到他吗🤙),所以管理的本质是数据的流通而不是对学生(人)进行管理,是管理校长通过辅导员来统计学生的信息来做一些管理。
那当数据非常庞大的时候管理者怎么管理的呢?
六个字:先描述,再组织。
什么意思呢?继续下面这个场景:
开学了,校长需要统计每一个同学的信息,包括什么姓名,班级,学号,身高…很多很多,那怎么进行管理这些数据呢?可以发现它们虽然内容不同,但是属性是相同的,于是校长就创建了一个结构体:
struct students
{
char name[];
char class[];
int height;
......
struct students*next;//
}
然后通过辅导员(驱动结构)来收集统计所有同学的信息,最后再通过创建一个结构体
struct contact
{
int num;
struct students[5000];//5000个学生
}
最后把这些数据通过链表这个数据结构来管理,这个场景就是对管理的一个计算机的建模的过程。
相信通过这些生活中的例子我们就知道了底层硬件属于被管理者,操作系统属于管理者,而驱动程序就是相应的接口,操作系统调用驱动收集硬件信息后再通过驱动来执行它的决策,并不需要操作系统和硬件面对面了。
希望这些例子能帮大家更好理解,如有错误,欢迎指正,谢谢大家!
总结
本文系统地介绍了冯诺依曼体系结构和操作系统的基本概念及它们在实际计算环境中的运作原理。以下是文章的总结:### 冯诺依曼体系
- **核心概念**:冯诺依曼体系是现代计算机设计的基石,强调了计算机的五个基本组成部分:输入设备、输出设备、存储器(内存)、运算器和控制器。
- **内存的角色**:引入内存是冯诺依曼体系的一大创新,它作为CPU与外设之间的桥梁,提高了数据处理效率。内存不仅负责预处理数据,还作为缓存,减少了CPU等待时间,使得计算机运行速度不再受限于最慢的硬件(如外设),而是转向了内存效率。
- **数据传输**:数据在不同硬件设备间的流通是计算机运作的关键,而流通的本质是数据的拷贝。内存作为数据存储的中转站,加速了数据拷贝过程,从而提升了系统的整体效能。
- **实际应用**:以文件传输为例,描述了数据如何在计算机内部流转,强调了CPU只与内存直接交互,而外设同样通过内存与CPU间接通信的运作机制。
### 操作系统
- **定义与功能**:操作系统是负责管理计算机硬件与软件的桥梁。它启动并维持系统的所有硬件和软件井然有序地运行。
- **管理者与被管理者**:通过大学管理的例子,生动解释了操作系统作为管理者、驱动程序作为接口、硬件作为被管理者的关系。强调了管理的本质是数据的流通和处理,而非物理接触。
- **数据结构与管理**:介绍了在数据量庞大时,操作系统如何采用“先描述,再组织”的策略来管理硬件信息,如通过结构体和链表等数据结构来建模和管理学生(硬件)信息。
- **实际运作**:详细说明了操作系统如何调用驱动来收集硬件信息,并执行相应决策。整个过程体现了管理者与被管理者、数据流通和数据处理在计算机系统中的核心地位。
### 总结
本文通过深入浅出的讲解和生动的例子,使我们深刻理解了冯诺依曼体系结构和操作系统的重要性和工作原理。冯诺依曼体系通过引入内存这一关键组件,极大地提高了计算机的运行效率;而操作系统作为软硬件的枢纽,通过精细的管理确保了各类资源的有效利用和系统的稳定运行。