前言
存储器与CPU
在正式介绍今天的话题之前,博主先来带大家搞清楚一些硬件的概念,方便接下来的理解。
存储器
,顾名思义就是用来存储的设备,那在计算机里,存储器包含什么呢?
答:内存 + 外存(辅存)
那内存与外存里面又有啥呢? 先来谈第一个内存,涉及到内存,可能不少小伙伴可能会想到主存
,有人说内存和主存说是一个东西,这是基于现实的角度考虑的,其实严格
从学术的角度的来说内存包含主存和高速缓存(Cache)
,那主存里面又有啥呢?
答:ROM和RAM
说明:
ROM,全名——read only memory(只读存储器),是内部存储器的一种,其特点是只能读取,用来存放不可更改的电脑的出厂信息。至于跟硬盘的区别,博主下面一块讲。
RAM,全名——random access memeory(随机存取存储器),一般叫做运行内存
,是与CPU直接交换数据的内部存储器。其特点是断点数据丢失。
拓展知识:
RAM和ROM都采用的是半导体存储介质,使计算机的运行速度能够得到很大的提升。RAM还包括SRAM(static ~,全称动态随机存取存储器)和DRAM(dynamic ~,全称静态随机存取存储器),ROM后面又发展产生了EPROM与EEPROM(可以进行修改,不过命名方式沿用了ROM,所以光看意思有点不明白),后来又发展有了NAND FLASH闪存,这种技术应用于U盘和固态硬盘。所以ROM和固态硬盘是有关系的,但ROM不等于固态硬盘,只是
固态硬盘采用的ROM发展产生的新技术,因此后来的商家又将这种采用这种技术的存储器称为ROM
,所以才有了今天的概念混淆。
OK,我们再来谈第二个部分——外存,那外存包含啥呢?
答:光盘,U盘,磁盘,磁带。
磁带,以前英语听力想必都用过,光盘,想必小时候看电视也都用过,U盘,是采用NAND FLASH闪存技术,延伸出的应用。那我们重点来说说磁盘,磁盘分为两类——硬盘和软盘
。那硬盘里面又包括机械硬盘(Hard Disk Drive,简称HDD),固态硬盘(Solid State Drive,简称SSD),混合硬盘(hybrid harddrive,简称HHD)——基于HDD诞生的新硬盘
。软盘,由于基盘是软的
所以被称为软盘,通常用于搬运数据
。
这里放几张图便于理解:
机械硬盘:
固态硬盘:
混合硬盘:
软盘:
再来谈谈CPU,这个概念,我们用一张图来说明。
铺垫了这么多概念,那么话不多说,正式进入今天的正题。
一、冯诺依曼体系结构
基本概念
为了更好的理解冯诺依曼体系结构,我们点击先来了解一下约翰 · 冯诺依曼大佬,先来了解这个人,再来了解其思想效果会更好。
冯诺依曼体系结构源自一篇文章First Draft of a Report on the EDVAC,简称《第一份草案》。
要知道那时候还没有计算机,可谓这篇文章开辟计算机的先河,也为程序员职业的发展奠定了基石。
我们先来看看冯诺依曼体系结构长啥样子~
这里说明一下:冯诺依曼体系结构在当时
只是一个抽象
的概念,在当今这个时代我们可以用具体的概念
代入进行理解,这也是下面我我们的讲解方式。
存储器
- 存储器,在上面我们统一讲过,那在这里我们用什么理解比较合适呢?答案是
内存
。为啥是内存,而不是磁盘这样的存储器呢?答案也很简单,内存的数据的访问速度较快,能更好的适配CPU
,更好地与CPU进行交换数据,而磁盘是外存,数据的读取和写入较慢,不适合与CPU进行交换数据。
说明:随着时代的发展,有的高速缓存会集成在CPU内部。
寄存器的速度:10ns
高速缓存的速度:20ns
内存的速度:200ns
硬盘的速度:1ms
拓展知识:
1.为了提高性价比,降低计算机的造价成本,所以采用了上面的金字塔型的存储结构,而如果全采用寄存器,这样造价会异常的昂贵,不利于计算机的传播。
2.计算机硬件的加载顺序为:先预加载数据到内存中,然后CPU从内存中拿数据,CPU拿的途中,内存中又可以放其它程序的数据,这样处理数据效率会提升许多,再结合分级缓存技术,这样就使计算机的成本大大降低,利于计算机的传播。
有的小伙伴可能产生疑问,既然CPU的速度那么快,为啥不采取下图的结构呢?
这就涉及到一个木桶原理~
- 输入输出设备的访问速度很慢,会降低CPU处理数据的效率,就好比任务分工合作,有一个拖油瓶,导致等了好久,任务才做完。这里的输入输出设备就好比拖油瓶。
我们再提一个问题,就是我们之前实战写的进度条小程序,会不会缓存,在哪进行缓存呢?
答:我们写的进度条是可执行程序,需要预加载到内存中,在运行过程中,内存与CPU进行交换数据,CPU将处理的数据再写回内存,那内存里的某个区域就是缓冲区,只不过没有刷新,当刷新之后再进行输出,就显现出了我们看见的样子。
输入输出设备
为了与计算机进行交互,我们先得输入数据,如何输入数据呢?用输入设备。
- 常见的输入设备 : 键盘,鼠标,话筒,摄像头,磁盘,网卡。
说明:获取文字可以从键盘读取,移动鼠标的动作的信息从鼠标读取,声音从麦克风中读取,头像信息从摄像头中获取,发送文件,文件在磁盘中,所以信息从磁盘中获取,接收朋友消息从网卡上获取。
为了得到计算机的反应,计算机得输出数据,如何输出数据呢?用输出设备。
- 常见的输出设备:显示器,耳机,磁盘,网卡。
说明:将接收的文件需要写入磁盘,将信息需要通过网卡进行发送。
这里我们可以看到有的设备是纯的输入或者输出
,有的设备既是输入也是输出
。
但这些设备都是独立的,那如何实现计算机的功能呢?这就需要将这些设备通过"线"连接起来,那我们又将这些线进行分类,进行输入输出的,我们叫做IO总线
,进行数据交互的我们叫做系统总线
。
到这里我们为了更进一步的理解,提一个问题:你跟你的好朋友如何通过qq进行交互呢?(不考虑网络,只基于冯诺依曼体系结构来说明)
答:
- 总结:冯诺依曼体系结构,主要是从硬件的角度,抽象的解释了一台计算机的五大部件以及之间的运行逻辑,下面我们从软件的角度来继续理解操作系统的概念。
二、操作系统
操作系统是什么呢?
百度给出答案:
操作系统(英语:Operating System,缩写:OS)是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序。
- 总结一句话:
操作系统是一款管理软硬件的系统软件。
我们从两个问题来进行理解操作系统,为什么操作系统要进行管理?操作系统是如何实现管理的?
我们先来解决第一个问题,首先要解决这个问题,我们先从硬件的角度出发,操作系统能够更好的管理好硬件资源,那管理好硬件资源的目的肯定是为了给用户提供更好的运行环境,这里的更好指的是稳定,安全,高效。
那这里的用户指的是谁呢?其实分为普通用户和程序员
。普通用户使用的是程序员开发出来的软件,比如抖音和B站,王者荣耀,金铲铲等软件,而程序员使用的是开发语言比如C、C++等语言进行开发,那如何使用操作系统呢?这其实涉及到操作系统的结构,如下图。
我们可以看出其实是使用操作系统的接口进行访问的。
那为啥不直接访问底层硬件呢?
- 前提是你能看懂吗?由于太复杂了,难度呈指数型上升,所以不可直接访问。
那能不能直接访问操作系统呢?
- 答案:不能。这就好比开银行,你要让群众得到服务,在银行存钱和取钱,也要防止群众,从银行抢钱,因为群众里面有坏人啊!因此,银行的窗户都是防弹的,就是为了防止坏人,但会设置一个小窗口进行服务。操作系统也是如此,为了防止恶意用户篡改操作系统,但又考虑到为用户提供服务,因此操作系统保留了一些接口,供用户获取操作系统的数据,这些接口是由C编写的,任何访问操作系统的行为都必须通过系统调用接口进行实现!
比如:调用printf函数接口,底层上就是调用对应的系统调用接口,进而实现对硬件资源的使用,这里是显示器,实现的是在显示器上打印相应的内容。
我们接着讨论第二个问题——操作系统是如何实现管理的?,
我们举一个实际的例子进行分析,小伙伴可能大多数都是学生,那么在学校里面有最典型的几种角色,学生(被管理者),校长(管理者),辅导员/老师(执行者)。
我们从常识可以知道,学生一般是见不到校长的,可能从开学到毕业只见过一两次,也就是说管理者是不需要见到被管理者的
。
那校长在不见面的情况下是如何管理学生呢?
比如,一个学生获得了一项全国比赛的第一名,这时校长从老师的传递的数据中,得到了这个消息,于是就让老师给这位学生进行颁奖。这样在不见面的情况下,是可以进行管理学生的。那这个过程其实是通过获取到的数据进行管理
,那如何获取数据呢?通过执行者进行获取数据
。
那如果学生有几万个,校长该如何管理数据呢?
这时恰巧校长是一名程序员,学过数据结构,就会先用表格的方式进行管理,比如学生的属性有姓名,性别,身份证,学号等信息,然后派老师去统计这些信息,然后汇成表格,这时就可以比较方便的查找,但校长可是程序员!于是校长就利用自己的编程技术,将这些数据进行封装成一个结构体,通过链表的形式将每一个学生链接起来。这样更易进行管理。
这样将数据通过结构体进行封装的过程,我们叫做描述,将结构体形成链表的形式,我们一般叫做组织。
- 那么这样先组织,再管理的过程。就是操作系统实现管理的方式。
总结
今天的分享就到这里了,如果觉得文章不错,点个赞鼓励一下吧!我们下篇文章再见
!