作者:学Java的冬瓜
博客主页:☀冬瓜的主页
专栏:JavaEE
分享:一、让你知道我的存在;二、让你存在下去,对我来说都是危险的,都违反第一条公理。
——《三体》
主要内容:对冯诺依曼体系结构的认识,CPU的组成,操作系统的功能,进程的调度,管理内存等
CPU 中央处理器:进行算数运算和逻辑运算
存储器:分为内存和外存,用于存储数据(使用二进制的方式)
输入设备: 如键盘,鼠标,麦克风,摄像头
输出设备: 如显示器,音箱等
注意:有的设备既可以输入,又可以输出,比如触摸屏、网卡(既可以上传也可以下载)
1> 主频:CPU最重要的指标
如我的电脑主频为2.1Ghz,描述了CPU的运算速度。本质上是2.1G个时钟周期,可以近似的看成每秒能执行2.1G条指令,即21亿条指令(因为对于一条指令,大部分都能在一个时钟周期内完成)。
2> 显卡(GPU),显卡和CUP类似,区别在于:
CPU是通用计算机芯片,GPU是专用计算机芯片 通俗来讲,CPU属于六边形战士各方面功能都强,而GPU专用于某一个方面。
3> 存储器详解: 存储器又包括内存和外存,内存又包括随机存取存储器RAM(集成到CPU里,用于和CPU交换高速缓存数据) 和只读存储器ROM。外存如硬盘,U盘等等。
4> 寄存器:CPU内部用来存放数据的一些小型存储区域。
分析:在《三体》中,用三个人实现最基本的与门、或门、与非门、或非门、异或门等,用两个人实现非门,然后组合实现半加器、全加器,加法器等等。最终用三千万人组成CPU、存储器、输入和输出的计算机结构的人列计算机。(以后学深后专门出一篇博客来研究介绍)
ALU+CU+寄存器+时钟 组成CPU
ALU是计算机进行算数、逻辑运算的核心部件,是计算机的数学大脑,下面就来制造一个ALU加法器。
1> 从逻辑门到加法器:
2> 图示:
异或:
半加器:
全加器:
加法器:
1> CU为 Cintrol Unit(控制单元)缩写: 作为CPU的一部分,基本功能是从内存存取指令,分析指令和执行指令。
我们现在有 ALU、存储(RAM和寄存器)了,但这还是不足以让我们的计算机工作起来,我们需要有一个部件来指挥 ALU进行何种的运算,而这个部件就是控制单元(CU)。
就是一的2中提到的CPU主频,为时钟震荡每秒的次数,可以近似看作每秒执行的指令数。
1> 首先,什么是操作系统,它的作用是什么?
操作系统:搞管理的系统软件
- 对下,管理硬件设备
- 对上,给软件提供稳定的运行环境
操作系统是软件 硬件 用户之间交互的媒介
2> 知道了操作系统是什么,功能是啥,那么有哪些操作系统呢?
Windows
Linux(特别适合开发和部署)
Mac(苹果电脑的系统,和Linux很相似)
Android(安卓,本质上也是Linux)
IOS(苹果)
1> 什么是进程?
进程是操作系统对正在运行的程序的一种抽象,也就是说,跑起来的程序叫进程,没跑起来的还是程序。可以把进程看作程序一次运行过程。
在操作系统内部,进程是操作系统进行资源分配的基本单位。
电脑卡不卡,和你的硬盘上的东西无关,取决于你开的进程多不多。
2> 什么是句柄?
系统中有很多的软件资源,进程就是其中一种,写代码时就需要用到一些软件资源。
软件资源是在操作系统内核里,在引用程序的代码中,不方便直接操作资源。
句柄(handler),可以想象成C语言里的指针,可以拿来标识资源。有了句柄,系统调用就可以借助句柄操作,操作系统内核的软件资源了
进程是一个特别重要的资源,由操作系统内核负责管理。
2> PCB包括进程的哪些属性?
3> 想要深刻了解进程调度,要知道什么是并行?什么是并发?
1> 理解
虚拟内存:
- 在程序中获取到的内存地址,并不是真实的物理地址,而是通过转化而来的虚拟内存地址 在C语言中学到的地址就是虚拟地址。
真正的内存:
- 在真正的内存中,每个空间占1Byte。 每个空间都有一个编号,编号从0开始,这个编号就是内存的物理地址
内存有个特别重要的特性:
支持随机访问,即访问内存上任意地址的数据,耗费时间基本相等。
2> 画图分析
进程直接访问内存的缺陷:
进程之间可能会因为内存越界访问,出现互相影响的情况。
改进进程互相影响问题:
通过引入虚拟地址的方式,从源头解决(内存冲突)进程互相影响的问题
在上面中,使用MMU硬件设备解决了进程间相互影响的问题,做到了进程与进程间的隔离。但有时候,我们需要进程之间进行交互,所以就在隔离的基础上留了个后门,就是进程间通信。
进程间通信方式有很多,但核心思路是一致的。
进程间通信的核心思路: