欢迎来到《圣博凯斯》变频供水设备官网
精锐于专业 / 卓然于品质 -- 20年专注于供水行业,缔造至臻品质 -- 服务热线:0731-85783205 18932453205

冯诺依曼型计算机的工作原理是什么_冯诺依曼式计算机的基本工作原理

文章目录 一、冯诺依曼体系二、CPU的基本工作流程1.逻辑门2.门电路(Gate Circuit)1.非门2.与门3.或门4.异或门 3.算术逻辑单元 ALU(Arithmetic & Logic Unit)1.算术单元2.逻辑单元 三、存储器四、操作系统(OS)1,进程2.进程管理(重点)并发式执行并行式执行 3. 进程的属性(1) 进程的状态(2) 进程的优先级(3) 进程的上下文(4) 进程的记账信息 4. 虚拟地址空间 总结


一、冯诺依曼体系

清爽的钥匙,可以说是计算机的祖师爷。被后人成为“现代计算机之父
它提出了计算机制造的三个基本原则,即采用二进制逻辑、程序存储执行以及计算机由五个部分组成(运算器、控制器、存储器、输入设备、输出设备),这套理论被称为lhdrg体系结构。

CPU 中央处理器: 进行算术运算和逻辑判断.存储器: 分为外存和内存, 用于存储数据(使用二进制方式存储)输入设备:用户给计算机发号施令的设备.输出设备: 计算机个用户汇报结果的设备

如果对于存储空间
磁盘 > 内存 > CPU
如果对于访问速度
CPU > 内存 > 磁盘

二、CPU的基本工作流程

CPU想必都不陌生,现在的电脑CPU已经到了 11 代了,这个 2.40GHz是什么意思呢。这其实是CPU的主频
粗略的说:CPU的主频就是时钟的震荡的每秒次数,可近似的看作每秒执行的指令数。简单的说就是主频决定了CPU的运算速度。

接下来,我们用一个从无到有的过程,一步步搭建一个 CPU 出来,希望大家可以借助这个过程,理解CPU、内存等计算机主要部件的工作原理。

1.逻辑门

电子开关 —— 机械继电器(Mechanical Relay)

通过电子开关,我们可以实现 1 位(bit) 的看似无用的逻辑运算。

2.门电路(Gate Circuit)

接下来,我们学习如何使用电子开关构建一些有用的部件 —— 门电路。可以实现 1 位(bit) 的基本逻辑运算。其实几个门电路非常好理解,Java的逻辑运算差不多。

1.非门

非门非常好理解,输入为 true 输出 false,输入false 则输出 true

2.与门

两个都为 true才输出true,否则输出false

3.或门

一个为 1则为1,两个为 false 则为false

4.异或门

通过非门与门和或门相结合就形成了异或门,相同为 false,不相同则为 true

这里的 true 和 false 在计算机里其实就是 1 和 0

3.算术逻辑单元 ALU(Arithmetic & Logic Unit)

ALU 是计算机中进行算数、逻辑运算的核心部件,是计算机的数学大脑.

说到运算我们首先想到二进制的运算,这个想必大家都了解,逢二进一嘛。

1.算术单元

算数单元,负责计算机里的所有数字操作,比如四则运算,当然它能做的远远不止这些。

半加器:
半加器就是通过一个与门和异或门,来计算两个 1位(bit)数的相加,既要考虑到和也要考虑到进位。

全加器:
全加器是通过两个半加器进行 3个1位(bit)的数 进行运算,同样要考虑计算出来的和是否要进位

加法器

通过1个半加器和7个全加器就能组成一个能计算 8个位 1位(bit) 的全加器。
图中的A和B就是输入的两个数的第几个bit位,同理 S 就是输出数的 bit 位

算术单元支持的操作当然远不止这些,通过继续组合逻辑门,算数单元可以做到加减乘除甚至更多的算术运算,但一个加法器作为演示已经足够了。
其实计算机只能做加法运算,都是通过加法器来实现的,因为计算机里存的都是补码,就是为了通过加法器来计算加减乘除运算,只不过更复杂,这里就不深究

2.逻辑单元

逻辑单元主要用来进行逻辑操作,最基本的操作就是 与、或、非操作,但不只是一位(bit)数的比较

三、存储器

存储器分为内存外存
内存:就是平时所说的电脑内存,也就相当于手机的运存。
外存:磁盘、U盘等。
内存比较而且贵,外存比较大但比较便宜。

内存有一个特点:它可以随机访问内存中任意地址的数据。
外存其实也有随机访问的能力,但开销较大,所以外存更适合顺序访问。
内存的访问速度非常快,外存的访问速度非常慢。

CPU上其实也能存储,CPU上的寄存器,内存更小速度非常的快,也更加的贵!

四、操作系统(OS)

操作系统是一个"搞管理" 的软件
1.管理硬件设备
2.管理软件资源(文件、进程)
所谓的”管理“一般值的是两个方面:描述+组织

1,进程

进程是操作系统中非常核心的一个概念,进程其实是计算机完成工作的一个"过程"

如图所示:进程就是一个正在运行的程序,要想让进程跑起来,就得给这个进程分配一定的系统硬件资源(CPU,内存,磁盘,网络带宽…)

关于进程,最核心的问题就是进程在系统中是如何被管理的,
管理 = 描述(PCB) + 组织

PCB:进程的控制块,这是一个C语言的结构体类似于Java中的类,一个结构体对象就对应一个进程

组织:使用一定的数据结构来组织,常见的作法就是使用双向链表

查看进程列表,本质上就是遍历操作系统内核中的这个链表,并显示其中的属性;

创建一个进程:本质上就是创建一个PDB对象,加入到内核的链表中

销毁一个进程,本质上就是把这个PCB对象从内核链表中删除掉

PCB中大概有那些属性呢?

pid:一个进程的身份标识,一个机器同一时刻,不可能有两个进程的 pid 相同

内存指针:描述了这个进程使用的内存空间是哪个范围(虚拟地址空间)

文件描述符表:描述了这个进程都打开了那些文件

系统中打开一个文件,其实就得到了一个"文件描述符",这个文件描述符就像一个遥控器一样,文件数据是存放在磁盘上的,代码中操作磁盘数据不像操作内存数据那么方便,所以往往是借助这种遥控器的方式来操作

2.进程管理(重点)

我们电脑上有几百个进程在运行,但电脑只有1个CPU,而且一般都是4核或者8核的CPU,8核心相当于CPU有8个分身,那么这么多进程是怎么运行的呢?

进程这么多,CPU就那么几个分身。那么就涉及到进程调度了,电脑上的多任务系统其实就是基于进程调度这样的机制来完成的。

并发式执行

并发式执行:1个CPU运行多个进程,
由于CPU的运行速度极快,虽然CPU在一直进行切换,但是咱们坐在电脑前的用户,是感知不到这个切换的过程的。

并行式执行

并行式执行:多个CPU,运行多个进程
CPU1运行进程1,CPU2运行进程2.
进程1和进程2无论是微观还是宏观,都是同时执行的。

真实的计算机,真实的操作系统在进行进程调度的时候,是并发并行两种策略综合使用的。

3. 进程的属性 (1) 进程的状态

运行状态:进程正在运行

就绪状态:进程已经做好准备,随时准备被CPU调度执行

阻塞状态:进程在此状态不能执行,只有等阻塞该进程的事件完成后才能执行,比如编程时等待我们输入

(2) 进程的优先级

给进程安排不同的优先级,优先级越高的进程,更容易被CPU调度执行。

(3) 进程的上下文

记住进程上次运行到哪个指令了,方便下次调度的时候能够继续从这个位置来运行。

进程的上下文,主要是存储调度出CPU之前,寄存器中的信息(把寄存器信息保存到内存中)
等到这个进程下次恢复到CPU上执行的时候,就把内存保存好的数据恢复到寄存器中。(进程本身是感知不到自己啥时候被调度出CPU的)

(4) 进程的记账信息

记录进程在CPU上执行了多久了,用来辅助决定这个进程是继续执行,还是要调度出CPU了。

4. 虚拟地址空间

一个进程想要运行,就需要给它分配一些系统资源,其中内存就是一个最核心的资源。

物理地址:真实的内存的地址

假设:

0x100 - 0x700 这个内存分给 进程1
0x100 - 0x700 这个内存分给 进程2
0x100 - 0x800 这个内存分给 进程3
这里的地址都是操作系统抽象出来的虚拟地址
系统会自动的把这个虚拟地址转换成真实的物理地址


为什么要有虚拟地址空间?而不直接访问真实的物理地址?
目的就是为了一定程度的减少内存访问越界,带来的后果

比如:
进程1 的内存范围 0x100 - 0x700,如果我的代码尝试修改 0x701的地址的数据,这个操作就是越界访问(错误的操作)

如果这是一个真实的物理地址,这个修改就真的把 0x701给修改了,
恰好 0x701是进程2 要使用的内存地址,此时进程2 可能就出 bug 了,就会直接奔溃

但如果进程访问的是虚拟地址,也尝试修改0x701
此时系统就要针对 0x701 来查询页表,找到对应的物理地址
由于 0x701 已经是非法地址,在 页表中查不到了,系统就会明白,是在越界访问,于是就直接让这个进程出现崩溃(系统就会发送一个型号,这个信号通常会导致进程奔溃),防止影响到其它线程。

这样做,就让进程和进程之间相互影响的可能性变小了,隔离性增加了,进程也就更加稳定了。

虚拟地址空间:好处就是让进程之间独立性提高了,不至于相互影响,整个系统更加稳定。
缺点:两个进程需要相互配合的时候,沟通起来就困难了(进程间通信)

进程1 和 进程2 由于虚拟地址空间(进程的独立性),导致很难相互进行访问对方的内存。
如果要想相互交流沟通,就需要使用一些特殊的手段,比如:文件,管道(是内核中提供的一个队列),消息队列,信号量等


总结

进程的几个重要属性:

进程的状态进程的优先级进程的上下文进程的记账信息

猜你喜欢

  • 消防泵启动注意事项,消火栓泵几点使用注意事项

    消火栓泵是消防系统中重要的设备之一,那么咱们知道这种设备在运用中应该留意哪些事项吗?下面小编就为咱们总结一下消火栓泵使用过程中需要注意的几点问题一、当购买到消火栓泵之后假设发现在长沙供水设备这种东西上面的底阀是不适宜的,有的状况下会大

  • 智能整体预制泵站,助力城市排水,一体化预制泵站生产厂家推进环保进程

    大家好!今天给您提供一篇助力城市排水,上海一体化预制泵站生产厂家推进环保进程的文章,在上海一体化预制泵站生产厂家这块领域中,本公司一直在努力做好,给您提供一个安全可靠的平台。在全国城镇化的进程中,排水一直是城市建造一项重要的关键问题。国家提