网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
1.冯诺依曼体系结构(硬件)
2.操作系统(软件)
前言
硬件——深入理解冯诺依曼体系结构
软件——全面认识操作系统
1. 简要背景介绍
1946年美籍匈牙利科学家冯·诺依曼提出存储程序原理,把程序本身当作数据来对待,程序和该程序处理的数据用同样的方式存储,并确定了存储程序计算机的五大组成部分和基本工作方法。
半个多世纪以来,计算机制造技术发生了巨大变化,但冯诺依曼体系结构仍然沿用至今,人们把冯诺依曼称为“计算机鼻祖”。
2. 五大部件介绍
3. 细节解释
1.为什么输入/输出设备的数据,不直接给CPU,反而给内存呢?
[这里引入存储分级(存储金字塔)概念]
是因为,外设和CPU的速度相差太大。
在输入设备在接收输入数据的时候,CPU只能等。如果没有存储器,CPU将会长时间处于等待状态,这样的话,效率其实是很低的,输出同理。
所以,如果允许外设把它的数据直接和CPU进行交互,那么整个计算机的效率将会以外设为主(木桶原理——效率由短板决定),会变得非常慢。
在认识层面上,可以认为内存整体是外设和CPU的“缓存”(快的设备给慢的设备做缓存)。那么整个计算机的效率就以内存为主了,变得快起来。
2.为什么程序运行的时候,要先加载进内存?
对数据进行了预加载,把程序缓存起来了。CPU读取这个程序效率就会高了。
3.存储器是如何起到缓存作用的?
只要有了存储器,就能对数据进行预加载和预写入,解决了CPU和外设之间的效率相差过大而导致CPU长时间处于等待的问题。
预加载:是把输入设备的数据加载到存储器。
预写入:把CPU处理完的数据,来不及放到输出设备中的,先写入存储器。
总结:
站在数据层面上,CPU不和外设打交道,直接和内存打交道。
站在外设角度,数据不和CPU打交道,直接和内存打交道。
内存:是计算机数据的核心。
4. 举例理解冯诺依曼机中数据走向
场景一:给朋友发一条消息
键盘(我)—> 写入存储器 —> CPU(封包)—> 写回存储器 —> 我的网卡(具备从网络中接收数据的能力)—> 朋友的网卡 —> 写入存储器 —> CPU(解包)—> 写回存储器 —> 显示器(朋友)
场景二:拖拽文件 数据流走向
把硬盘上的文件(本身也是数据)放在内存当中,经过封包解包,写回内存,再经过网卡传出去,对方网卡接收,放入存储器,再进行封包解包,写回存储器,最后放到对方的硬盘。
二、全面认识操作系统
1. 操作系统的概念
操作系统是一款做软硬件管理的软件。
硬件:冯诺依曼中的所有设备。
软件:1.安装软件,卸载软件 2.在系统层面,文件,进程,驱动等都属于软件范畴
2. 计算机系统 比对 银行系统
3. 深入认识“管理”:
管理:真正的管理是要有“决策权”。重要的是,区分“决策”和“执行”。
把操作系统比喻成一所封闭的学校:
那么在学校中,
底层硬件、部分软件:学生(被管理者)
驱动程序:导员,宿管,教师等
操作系统:校长(管理者,有真正的决策权)
管理者和被管理者从来都没有见过面,如何进行管理?
- 可以通过“信息”管理
- 驱动层可以帮管理者拿到数据
- 当“信息量”特别大的时候,信息就需要被组织起来。
所以第一步要先把角色描述起来,
struct stu{
姓名,电话,成绩;
struct stu* netx;
}
struct stu s1,s2,…; //可以用链表的形式把这些结点连接起来,那么我们就将其组织起来了。所以对学生的管理,就变成了对链表结点的管理。
所以操作系统是如何进行底层的硬件管理呢?
在操作系统启动之时,通过中间的驱动程序,拿到底层的硬件信息,对其数据进行管理和决策。
也就是,先描述,再组织。
使用操作系统有难度且有风险,所以操作系统一般是被封装起来的。对外提供少量的接口(函数),要使用好系统调用接口,也需要一定的背景知识,且也要有一定的成本。
所以可以把系统调用接口封装成某些库函数。
库函数 和 系统调用的关系:具有上下级的关系,库函数(用户级别的库)可能调用系统调用
5. 操作系统存在的目的
在一套系统中,必须一定要有管理者进行统筹。
对上,给用户一个稳定高效的执行环境;
对下,管理好软硬件资源,提供稳定的软硬件环境。
6. 操作系统与Shell
Shell英译汉:外壳。
从技术角度, Shell的最简单定义:命令行解释器。
主要包含:
将使用者的命令翻译给核心(kernel)处理。
同时,将核心的处理结果翻译给使用者
在认识了操作系统的管理的概念后,我们知道,管理的本质是为了让用户使用成本更小,使用方便。
两种常见降低使用成本方案(本质相似,都是为了解决用户使用计算机的成本,只不过解决的程度不同罢了):
- 包裹软件外壳shell,给操作系统封装一层软件层,我们可以通过命令行的形式,直接操作计算机——Linux
- 包裹图形界面GUI——Windows
什么是shell外壳:包裹在操作系统外层的软件层,方便用户和操作系统进行沟通。
shell作用:
(1)交互:接受用户的输入,交给os执行,得到结果反馈给用户。(为了对用户屏蔽内核的复杂性)
(2)保护操作系统:如果用户输入了一些错误或非法的指令,在外层直接就拒绝掉了。(为了保护内核以免用户误操作造成损害)
shell和bash:shell是所有外壳程序的统称,bash是具体的一款shell。
总结
\1. 冯诺依曼体系中的存储器指的是内存。
\2. 不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)。外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。
\3. 所有设备都只能直接和内存打交道。
\4. 操作系统是一款搞软硬件管理的软件。
\5. 管理最重要的是要有决策权。
\6. 如何进行管理:先描述,再组织。
\7. Linux使用C语言编写,C语用struct描述对象。
数据结构表示的是数据的组织方式,组织方式决定结构,结构决定算法。
8.shell是包裹在操作系统外层的软件层,方便用户和操作系统进行沟通。
冯诺依曼体系结构及操作系统的认识
已剪辑自: https://blog.youkuaiyun.com/m0_63710200/article/details/128099851
1.前言
为什么现代计算机都被称为冯诺依曼结构计算机?
我们每天都在打交道的计算机到底是如何运转的?接下来博主准备开启对计算机组成结构等较为底层方面知识的学习,对我们每天都在使用的工具了解得更透彻也更有助于我们的理解和使用。本篇博客是关于博主初步了解冯诺依曼体系结构和操作系统的概念与定位的分享,为后续学习进程与地址空间等知识打下基础。
2.冯诺依曼体系结构
2.1.结构构成
在当今所有的计算机中,比如我们常见的:笔记本、电脑,或是我们不常见的:服务器,大部分都遵循着冯诺依曼体系结构,其具体构成如下:
截止至目前,我们所认识的计算机是由一个个硬件组件组成的
- 输入设备:键盘、鼠标、扫描仪…
- 中央处理器:含有运算器和控制器等
- 输出设备:显示器、打印机…
- 存储器:指内存
输入设备和输出设备都被统称为外设,其中的磁盘、网卡等属于“输入输出设备”,键盘只属于输入设备,显示器属于输出设备。
2.2.硬件分析
2.2.1存储器的作用
存储器单指内存计算机的存储器指的是内存,内存是计算机的重要部件之一,它是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都在内存中进行。此“内存”也即是我们选购电脑时的一个重要参考选项“内存容量”,一般有16GB 32GB 64GB。内存也是衡量一台计算机好坏级别的重要参考方面之一。
但是计算机的“内存”和我们手机所称的用来存放各种软件、相片的“内存”可不是同一种东西。关于计算机的存储,不少人总模糊不清。计算机中有“内存”“外存”的说法,内存是计算机的重要部件之一,而外存指的是:磁盘、U盘…外存也被归于“外设”一类之中
为何需要内存的存在?
其实计算机的“外存”能大致等同于我们说的“手机内存”,能够用来存放各种软件、文件、相片…那我们直接使用外存不就行了?为什么还得那么麻烦再搞一个存储器:内存 呢?
在计算机中,对于数据的读写,CPU的速度是最快的,其处理数据的速度也是最快的。使用计算机的本质即是CPU对数据的处理,也即是CPU读取各种数据,处理之后再写入我们的输出设备,这个过程便伴随着数据的输入输出。但是外存的数据传输速度比起CPU处理数据速度来说非常的慢,这样就会导致类似于“木桶短板问题”,即使你CPU多快多牛,外存读取与写入数据的速度慢,你整机效率也十分的低下。
于是为了提高整机效率,冯诺依曼体系引入了存储器(内存)
设备速度
CPU(中央处理器) | 最快 |
存储器(内存) | 次快 |
外设(输入输出设备) | 最慢 |
📈内存是计算机的组成部件之一,所以它无法像磁盘、U盘这些外存一样,存放几百G甚至几个T的数据。但是由于内存对于数据的读取与写入的速度较快,所以可以将内存理解为一块缓存空间,在程序需要运行时载入内存后再进行运算。所以内存是外存与CPU进行沟通的桥梁。
但是我们需要注意的是:内存是带电存储,存在断电易失的问题(好比码字码一半,还没点击保存就关机了),而外存就能够永久存储。
2.2.2CPU
我们知道,CPU是一台计算机的核心,因为它具有很强的运算能力。但是其实CPU是很笨的,它只能被动地接受别人的指令和数据,然后听从命令去执行指令,计算数据🧮🧮
1.CPU是如何能够识别我们传递给他的数据和指令?
CPU内部由一套自己的指令集,它会把传来的指令对应到指令集,翻译成CPU认识的指令再进行执行。其中CPU的指令集是二进制的,这就是为什么我们编写的代码需要经过编译连接成二进制的可执行程序才能被运行的原因。而关于数据,CPU中包含其他寄存器,用于接收和计算数据。
2.CPU进行运算的数据从哪来?
由上文对存储器的分析可知,CPU不和外设直接打交道,只和内存打交道!所以程序要运行必须加载到内存中,CPU要执行我的代码访问我的数据,也只能从内存中读取。
2.3.实际分析
对冯诺依曼的理解,不能停留在概念上,要深入到对软件数据流的理解上
请解释,从你登录上qq打开窗口,开始给好友发消息,到好友收到到消息数据流动过程?如果发送的是文件呢?
- A发送信息
--->
B收到信息 的数据流动:A的键盘(输入设备)输入--->
A的内存--->
A的CPU(对信息进行加密等操作)--->
输入到A的网卡--->
输出到B的网卡--->
B的网卡--->
B的内存--->
B的CPU(解密)--->
B的显示器(输出设备) - A发送文件
--->
B接收文件 的数据流动:A的磁盘--->
A的内粗--->
A的CPU(加密)--->
A的网卡--->
B的网卡--->
B的内存--->
B的CPU(解密)--->
B的磁盘
3.操作系统
3.1.是什么
概念
任何计算机系统都包含一个基本的程序集合,称为操作系统
(OS)。笼统的理解,操作系统包括:
- 内核:进程管理、内存管理、文件管理、驱动管理
- 其他程序:函数库、shell程序…
设计OS的目的
- 与硬件交互,管理所有的软硬件资源
- 与软件交互,为用户程序提供一个良好的执行环境
定位
- 在整个计算机软硬件架构中,操作系统的定位是:一款纯正的“搞管理”的软件
3.2.为什么
操作系统对于一台计算机来说是必不可少缺一不可的🎯
假如没有操作系统的管理,一台计算机也只是一堆废铁,各种硬件不会自己运转自己相互配合运作的,计算机可能连开机都无法实现。如果没有操作系统,各个应用软件将无法自主去调用计算机硬件的各种资源,程序无法自己跑去内存中缓存,CPU也无法读取数据进行运算执行…
总而言之,操作系统对于计算机来说,是游走于硬件和软件直接的一位管理者,负责管理计算机的正常运行。所以在整个计算机软硬件架构中,操作系统的定位
是:一款纯正的“搞管理”的软件。
3.3.操作系统怎么进行管理
3.3.1管理的本质
操作系统所谓的管理,即是(对下)合理地管理软硬件资源(手段),(对上)为用户提供良好的、稳定的、安全的…执行环境(目的)
那么我们先来了解一下操作系统对底层硬件的管理结构
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
dnimg.cn/05285c5a661c45a896912f74799a5c7c.png)
[外链图片转存中…(img-BywPba34-1715749465552)]
[外链图片转存中…(img-8oEbgnfJ-1715749465553)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!