第三讲 冯诺依曼计算机:机器级程序及其执行
301-本章概述
- 程序的执行和运算都是由CPU来完成
- 要了解CPU是如何从存储器当中读取程序和指令进行计算
简单计算机
- 中央处理单元(CPU):程序执行与数据计算
- 运算器:是负责算术运算和逻辑运算
- 控制器:是负责取出指令、解释指令和执行指令
- 存储器(主存又称内存):保存程序和数据
- 输入设备:将外界的信息送入计算机内部,便于计算机处理的一种设备
- 输出设备:将计算机内部的处理结果展现出来
- 基本思维:
- 机器级算法与程序 => 机器指令与指令系统 => 存储器 => 存储程序 => 运算器与控制器 => 机器级程序的执行:算法程序化 -> 程序指令化 -> 指令存储化 -> 执行信号化
要解释的问题
- 机器是如何执行程序的?理解程序如何被输入做输出的变换!
- CPU是如何从存储器中读取程序和指令进行计算?
- 理解和解释一台简单的计算机如何执行程序的:
- 存储在存储器当中的程序,是如何被读到控制器当中进行解释和执行的?
- 存储器中的程序,是如何被读到寄存器当中?如何被读到运算器当中被执行的?又如何被存储到存储器当中的?
- 理解机器级程序如何被这台计算机能够执行?能够模拟和仿真程序的执行方式和流程
核心
- 基本目标:理解程序是如何被执行的
- 概括为:算法程序化 -> 程序指令化 -> 指令存储化 -> 执行信号化
302-冯诺依曼计算机的思想和构成
存储器
- 在存储器出现之前,人们使用计算机的方式是:人们输入一条程序,计算机执行一条程序
- 这样的不好处就是,计算机的利用率太低,计算机本身的执行效率高,但是人们的输入效率低
- 为了解决计算机利用率低,从而提出把要执行的命令先存储在存储器中,在进行一条一条的读取并执行
- 上面这种思想,就是存储器
运算器为中心
- 以运算器为中心导致,输入输出设备执行的时候,运算器就需要停止工作不能进行计算
- 当进行计算的时候,就不能进行存储;即:存储和计算存在矛盾
存储器为中心
- 以存储器为中心的现代计算机构成图
- 存储器是由多种存储单元构成,因此一部分存储单元执行输入输出,一部分存储单元执行运算
- 以存储器为中心的结构,实现了输入输出和程序执行计算并行运行
- 同样是五个部件,以不同的结构来连接,便体现了不同的性能---这就是“系统”:强调“结构”,强调部件连接后的整体性、协同性
冯诺依曼计算机原理
- 冯诺依曼计算机就是不断地进行:读指令、分析指令、执行指令、在读指令、在分析指令、在执行指令...,这样不断重复这个相似动作
计算机核心部件
- CPU:中央处理单元,将运算器和控制器集成在一块芯片上,形成微处理器
- 现代计算机里面:一个微处理器(芯片)可能包含多个CPU,即多核
- 多核是解决摩尔定律失效的问题,多核同时也带来了切换消耗的问题
- CPU、主存储器(内存)、I/O(输入输出)设备及总线成为现代计算机的四大核心部件
理解计算机结构的诞生流程
- 最初的计算机出现只存在:输入设备、运算器、输出设备、控制器(也只是简单的开关功能)
- 运算器是核心,是为了解放人力提高运算效率,这是社会发展带来的需求
- 输入设备是为了让人们和运算器进行交流
- 输出设备是让人们能够看到结果,不至于成为一个“瞎子”
- 控制器就是简单的实现开关功能
- 最初没有存储器,这时期存储器的任务由:人力+输入设备承担
- 这带来的后果就是,输入工作缓慢,花费时间远远大于运算器运算时间
- 加上人力犯错程度远远高于机器,这更加加大了对时间的消耗
- 在这个还没有诞生存储器的时代,我们假设计算机整体利用率为1%
- 存储器的诞生,是为了提高计算机的单任务效率,同时解放人力
- 这个阶段人们把已经处理好的任务输入到存储器中,这样就实现了自动运算,自动输出;
- 这个阶段假设计算机的利用率达到了10%,人们不用一遍一遍的输入,实现了输入一次终身使用
- 这个阶段还是以运算器为中心,直接导致的问题就是:输入设备、运算器、输出设备三者关系依然是串联
- 并联关系才能真正的提高计算机的利用率,所以把以运算器为中心改为以存储器为中心
- 存储器是由多个存储单元组成,存储单元之间互相独立,天然具有执行多任务的属性
- 从而实现了,存储单元简单理解实现了三分天下:一部分处理输入、一部分处理运算、一部分处理输出
- 这就是现代计算的最终形态,即:冯·诺依曼计算机
核心
- 理解存储器诞生原因:提高计算机利用率,解放人力
- 理解运算器为中心存在的原因和问题:
- 原因是这样更加符合人们的逻辑,最初就是为了代替人们运算,所以以运算器为中心完全是顺其自然的结果
- 产生的问题就是:输入设备、运算器、输出设备天生串联运行
- 理解存储器为中心是实现程序的并行,原理层面还是串行,只是因为存储单元的天然独立属性,是的程序可以并行
- 理解程序在冯诺依曼计算机中执行的方式:读取指令、分析指令、执行指令...无限循环
- 能够清晰的讲述出计算机诞生的整个流程和每个阶段产生的问题和其历史必然
- 总线:是计算机线束的总称
303-自动存取:存储器的工作原理
- 存储器结构介绍:
- 存储器的基本结构:类比宿舍楼
- 存储器包含存储矩阵,存储矩阵包含存储单元,存储单元都有一条指定的存储地址编码,存储单元里面存在多个存储位
- 存储位类比床位:可以住人也可以不住人,对应可以存储1也可以存储0
- 地址控制线是房间的钥匙,地址编码是房间号
- 每个存储单元的位数是固定的,即字长,8位、16位、32位、64位
- 存储容量:
- 存储单元的地址:地址空间
- 存储单元的内容:存储字长
- 使用宿舍楼映射存储器,实际中思考是使用都应该从实际中思考理解路线,如:
- 我找具体的信息,应该先找那个存储器,即那栋楼
- 找到楼再找存储单元,即房间号
- 在找到存储为,即床位
- 就可以锁定要找的具体信息(程序或数据),即学生
- 通过映射得到的启发:
- 我们没有必要所有的环节都弄得了如指掌,比如我们本身就负责楼层的建设
- 那我们没有必要把门卫亭也弄得特别明白,而对整体有个统一的了解即可
- 我们更要弄懂得是楼层怎么能建设的更加美好和牢固才是关键
- 之所以要学习底层,也是因为,不懂底层如何能建起稳固的高楼大厦,做出来的东西更多的是空中楼阁而已
存储器内部的实现示例
- 当地址线和数据线间连接有二极管时,则存储的是1,否则,存储的是0
- 当地址线和数据线连接有二极管时,由地址线决定其是输出1或0,即:当地址线为高电平时,则输出1,而当地址线为低电平时,则输出0
- 没有连接的,则不受地址线影响,始终输出低电平0
核心
- 存储器:存储矩阵结构,每个元素叫做存储单元,存储单元里面包含固定的位数(8为、16位等)
- 存储器的地址控制线是开启存储单元的钥匙,存储编码是存储单元的门牌号
- 存储容量:地址空间和存储字长
- 存储器的原理是对二极管的控制,来确定具体是1还是0
304-机器指令与机器级程序
- 算法:从冯诺依曼计算机的角度
- 可在机器上执行的求解问题的操作规则及步骤,被称为可执行的算法
- 有存储步骤,是因为运算器要计算其他程序,当前程序暂时无法参与,需要进入等待状态
- 在计算机硬件运行的过程中,减少一步都是很大的进步,我们看到的基本运算步骤,在计算机硬件实际执行的内部,可能要执行成千上万上亿次,因此需要不少的时间
- 也因此,我们要学习和掌握,尽可能优化程序
我们要怎么确定我们优化的算法在计算机中怎么执行的呢?
- 这个时候我们就需要进一步的了解机器指令和机器语言的概念
- 机器指令-机器语言:
- 机器指令是CPU可以直接分析并执行的指令,一般由0和1的编码表示
- 指令≈操作码+地址码
- 操作码:要进行的操作,如:加法操作、减法操作等
- 地址码:操作中要到的数据,一般指存储器地址
- 具体是哪种指令,就需要对CPU提供的指令系统进行针对性了解,不同CPU会存在不同的指令系统,兼容性从此产生
通过汉字理解指令集
- 记录符号:
- 汉字中国字,是汉语的记录符号
- 指令是计算机字,是计算机的记录符号
- 字典和集合:
- 汉字集合为字典
- 指令集合为指令集
- 数量:
- 常用汉字大约在2500~7000之间,汉字总共十万加
- 常用指令大约在几十条之间,指令总共几百条
MIPS32架构指令
注意:其中不包含浮点指令
一共89条指令
- 逻辑操作指令
- 有8条指令:and、andi、or、ori、xor、xori、nor、lui
- 实现逻辑与、或、非、异或等运算
- 移位操作指令
- 有6条指令:sll、sllv、sra、srav、srl、srlv
- 实现逻辑左移、右移、算术右移等运算
- 移动操作指令
- 有6条指令:movn、movz、mfhi、mthi、mflo、mtlo
- 用于通用寄存器之间的数据移动,以及通用寄存器与HI、LO寄存器之间的数据移动
- 算术操作指令
- 有21条指令:add、addi、addiu、addu、sub、subu、clo、clz、slt、slti、sltiu、sltu、mul、mult、multu、madd、maddu、msub、msubu、div、divu
- 实现了加法、减法、比较、乘法、乘累加、除法等运算。本书设计的处理器实现了所有算术操作指令
- 转移指令
- 有14条指令:jr、jalr、j、jal、b、bal、beq、bgez、bgezal、bgtz、blez、bltz、bltzal、bne
- 其中既有无条件转移,也有条件转移,用于程序转移到另一个地方执行
- 加载存储指令
- 有14条指令:lb、lbu、lh、lhu、ll、lw、lwl、lwr、sb、sc、sh、sw、swl、swr
- 以“l”开始的都是加载指令,以“s”开始的都是存储指令,这些指令用于从存储器中读取数据,或者向存储器中保存数据
- 协处理器访问指令
- 有2条指令:mtc0、mfc0
- 用于读取协处理器CP0中某个寄存器的值,或者将数据保存到协处理器CP0中的某个寄存器
- 异常相关指令
- 有14条指令
- 其中有12条自陷指令,包括:teq、tge、tgeu、tlt、tltu、tne、teqi、tgei、tgeiu、tlti、tltiu、tnei
- 此外还有系统调用指令syscall、异常返回指令eret
- 其余指令
- 有4条指令:nop、ssnop、sync、pref
- 其中nop是空指令,ssnop是一种特殊类型的空指令,sync指令用于保证加载、存储操作的顺序,pref指令用于缓存预取
核心
- 理解冯诺依曼计算机执行程序的步骤和方式
- 并能够对程序算法进行机器级优化,减少程序的执行步骤
- 理解指令就是计算机的语言,或者说把指令比做英文单词,那指令级就是26字母
- 指令的不同组合和不同规则创造了计算机不同的程序,26字母经过不同的组合和不同规则创造了强大的英语
305-机器级程序的执行机制
运算器
算数运算逻辑部件
- 执行四则运算,所有的运算规则都可以转化成加法运算
- 加法运算又可以用逻辑运算来实现
数据·寄存器
- 用于临时保存数据
- 由于寄存器空间小,就需要充分有效的利用现有空间,通过赋值的方式提高空间利用率
理解程序在运算器中的执行
- 把算法中的运算规则,都转化成用加法运算来实现
- 通过计算机庞大的加法器,执行转换后的结果
- 加法器实现是基于逻辑运算而实现的
- 逻辑运算是基于门电路而实现的,门电路是把算法转换成电信号从而实现自动执行程序的目的
- 因为程序执行速度非常快,即使在内存中读写指令也会影响逻辑部件的执行,所以在运算器中添加了数据寄存器,让临时数据得以保存的同时也提高了读写速度
控制器
- 程序计数器PC:保存下一条将要执行指令的地址
- 指令寄存器IR:用于临时保存我从存储器当中刚刚取出的还没有来的执行完的这条指令
- 信号控制器:发送各种各样的信号、产生各种各样的信号
- 控制运算器进行算数逻辑运算
- 控制指令寄存器IR接收指令
- 控制程序计数器PC自动进行加1,在当前指令执行完成之后,自动执行下一条指令
- 信号控制器有多种线路:信号控制线、数据线、地址线
- 时钟与信号(节拍)发生器:
- 机器主频,计算机用一个时钟控制器,来控制每一个信号的发生
- 任何信号的发生都随着这个时钟,这种节拍来进行
存储器(内存)
即主存
- 地址寄存器:用于保留即将访问的存储单元的地址,通过译码然后访问指定的存储单元
- 存储单元里面的内容读取出来以后,首先读到内容寄存器(数据缓冲器)里面
- 内容寄存器里面的数据可以送给任何一个寄存器里面,具体进入哪个寄存器取决于控制信号指示:
- 运算器里面的数据寄存器
- 控制器里面的指令寄存器
寄存器汇总
寄存器就像是旅游区指定景点中的等待区一样
数据过来,要么在之前来的地方等待,要么在接下来要执行的场景中等待,都需要有个等待区
这样来看,当然是在即将执行的场景中的等待区等待更加有利于接下来发生的事情
- 运算器:数据寄存器
- 控制器:指令寄存器
- 存储器:
- 地址寄存器
- 内容寄存器
指令执行
- 不同的指令,由一组不同的电信号构成
- 同一指令的电信号在时钟与节拍的控制下按次序产生与传输
- 一条指令占用一个或多个机器周期,一个机器周期又分为多个节拍
- 最小的时间间隔单位-时钟周期
- 注意理解:时钟周期和机器周期(一个指令的执行周期)
核心
- 理解寄存器的真正价值:用于保存临时数据,即和正常数据不一致的数据,比如即将要执行的数据,比如即将要离开的数据等
- 理解程序在存储器、运算器、控制器之间是如何执行的,是根据控制器中的控制信号进行逐步执行
- 理解计算机时间最小单位是时钟周期,一个以上的时钟周期组成了机器周期(即一个任务执行周期)
306-机器级程序的执行过程模拟
终于知道为什么要学C语言
- 因为C语言是最早的语言,更重要的是C语言是最符合硬件运行规则的语言
- 因此,学习C语言更重要的是为了更了解硬件的运行规则
- 更了解硬件,才能写出性能更优的程序
计算机级程序细致执行过程理解
- 控制器是计算机大脑,用于发送各种指导信息
- 其余硬件之间组合一个固定的流水线模式,存储器、存储器中的地址寄存器、存储器中的内容寄存器、运算器、运算器中的指令寄存器、运算器中的算数/逻辑及移位运算、控制器、控制器中的程序计数器、控制器中的指令寄存器之间组合成一条处理存储器程序的全自动流水线,每个环节之间实现互相连接、互相传递
- 通过控制器中的信号控制中心向各个环节传递执行信息,从而保证整个程序的顺利被执行
- 比喻:
- 控制器中的控制中心就像军队的中央机构,中央下令军队集结,各个环节各个兵种都开始自动有序的执行对应的命令,到达指定的地点,这个时候就是等待中央的控制命令,当中央再次下令进攻,军队在执行下一条命令,具体如何执行都是自动化的电信号,不需要控制器全程监督
- 程序执行的过程就是:
- 重复取指令、分析指令、执行指令...这个循环过程
- 执行哪个程序就把哪个程序的地址赋值给控制器的程序计数器中即可
nodejs文件描述符新角度理解
- nodejs学习的时候,里面提I/O操作的时候,文件描述符不足的时候,会导致阻塞
- 从原理和硬件的角度理解,这个文件描述符不足就更加的直观,可以把文件描述符理解为各种寄存器,寄存器就是小型的存储器,是存储器就有固定的存储空间,一旦存储空间被全部占用就会导致阻塞
第三讲-扩展内容:图灵机的思想与模型
- 通过状态图形象的描述图灵机运行过程
- 可以更好的理解01级程序是如何执行的,很有趣
- 图灵机的思想:是关于数据、指令、程序及程序/指令自动执行的基本思想
- 几点结论:
- 图灵机模型被认为是计算机的基本理论模型
- 计算机是使用相应的程序来完成任何设定好的任务
- 图灵机是一种离散的、有穷的、构造性的问题求解思路,一个问题的求解可以通过构造其图灵机(即:程序)来解决
- 图灵认为:
- 凡是能用算法方法解决的问题也一定能用图灵机解决;
- 凡是图灵机解决不了的问题任何算法也解决 不了----图灵的可计算行问题
- 图灵机模型被认为是计算机的基本理论模型
第四讲 现代计算机:复杂环境下程序执行
401-本讲概述
- 程序存储在外存中,内存读取外存数据或程序
- 内存具有电易失性,一旦停电数据将会消失
- 外存可以永久保存数据
- 只有在内存中的数据和程序,才能被CPU执行
- 产生的问题:
- 外存中的程序如何被读取到内存中?
- 内存中的程序又如何被CPU执行?
- 外存、内存、CPU构成了计算机的执行环境,这个环境运行的时候,需要有环境管理员进行管理,即操作系统
- 操作系统OS:
- 管理内存/外存/CPU资源
- 完成应用程序的执行
- 基本思维:存储体系 => 磁盘存取 => 操作系统 => 作业与进程 => 程序执行的管理和控制:资源组合利用体系化、管理分工合作协同化、外存程序内存进程化、硬件不足功能软件化
- 任务:由多个作业组成
- 任务:外存中的程序如何被执行
- 作业:任务的细化,可被OS进程完成
402-现代计算机的存储体系
- 冯诺依曼计算机
- 解决了:程序装载在内存,便可被CPU执行
- 未解决:
- 永久存储问题?
- 通过外存来实现,外存通过改变硬盘/软盘自身的磁效应实现
- 存储容量问题?
- 内存存储容量有限,不足以支撑信息世界的快速发展
- 外存可以实现容量的量级增长,足以支撑信息世界的信息总量,问题就是计算机不能直接运行外存数据
- 所以需要内存作为中间人
- 存储速度问题?
- CPU运行速度最快,只有内存才能满足CPU的信息读取,当然CPU本身也存在多种暂存器,也是为了加快计算速度,CPU通过存储单元,一条一条的读取指令,大小主要取决于字节
- 外存读取速度相比内存非常慢,所以采用块单位的读取方式,换算成指令就是成百上千上万条指令组成一块,这是典型的空间换时间,从而降低了成本
- 存储器价格问题?
- 内存价格最贵,外存价格非常便宜
- 所以采用内存+外存的方式实现成本上的合理性
- 永久存储问题?
- 存储体系:内存和外存
- 所有内容需装入内存,才能被处理
- 所有内容需存入外存,才能永久保存
- 内存和外存:是采用时间换空间的方式,再通过读取单元的不同实现速度上的统一
- 内存:
- RAM/ROM
- 地址:存储单元,通过存储单元进行访问和读取操作
- 地址访问:按存储单元,1、2、4、8等个字节
- 内存使用半导体来制造
- 外存:
- 硬盘/软盘
- 盘面/磁道/扇区:按照块的方式进行访问和读取操作
- 顺序访问:按块,一个扇区存放512个字节
- 通过磁性材料,通过磁性感应来存储01的
403-操作系统对计算机资源的分工-合作与协同管理思想
- 操作系统OS:
- 管理内存/外存/CPU资源
- 完成应用程序的执行
- 概念:操作系统是控制和管理计算机系统各种资源(硬件资源、软件资源和信息资源)、合理组织计算机系统工作流程、提供用户与计算机之间接口以理解用户对机器的各种操作需求并完成这些操作的一组程序集合,是最基本、最重要的系统软件
- 分工、合作、协同思维,是化解复杂任务的重要思维
- 管理一个程序执行的各项工作,从大到小:
- 任务:一个任务由多个作业组成
- 作业:一个作业由多个进程组成
- 进程:一个进程是由多个线程组成,线程是轻量级的进程,是进程的实体
404-操作系统对集中资源的分工管理
- 操作系统对:外存、内存、CPU分工管理
- 磁盘管理 :化整为零,还零为整
- 存在问题:
- 连续存储在实际中非常困难,相当于整体存储一样
- 整体存储难点在于,要存储的空间尺寸和要存储数据的尺寸不对等
- 文件分配表:
- 是还零为整的关键,记录磁盘块的位置信息,二维信息
- 每个磁盘块会记录下一个磁盘块的位置信息,第一个磁盘块的位置信息,绑定在文件夹等入口处
- 存储磁盘块的链接信息
- 组成部分:文件、文件夹、磁盘簇块、文件分配表
- 磁盘的四个主要区域:
- 保留扇区
- 文件分配表区域
- 根目录区域
- 数据区域
- 存在问题:
- 病毒攻击目标:
- 内存攻击:读写文件就会,把病毒带入到存储器各个环节中
- 外存攻击:
- 文件夹(文件目录):无法找到第一个磁盘块的位置,导致所有数据全部丢失
- 文件分配表:无法找到剩余信息的存储位置,导致大部分信息丢失
- 磁盘块:导致部分信息丢失
内存为什么要管理
- 一个房间(存储单元)是不用管理的,但是数千万个房间就需要统一管理起来了
- 管理是为了提高各个房间的效率
- 内存管理主要有:
- 内存空间管理
- 内存空间分配
- 内存与外存信息的自动交换
- 内存空间回收
CPU管理/处理机管理
- 冯诺依曼计算机的自动执行:
- 当程序装载到内存以后,只要把第一条指令的地址,赋值给CPU控制器里面的程序计数器
- CPU就可以,一条接一条的读取和执行指令
- 内存中多个程序管理
- 程序执行切换中的状态/环境保护问题处理
基本目标
- 理解现代计算机系统的工作思维
- 基本思维:存储体系 => 磁盘存取 => 操作系统 => 作业与进程 => 程序执行的管理与控制
- 资源组合利用体系化、管理分共合作协同化、外存程序内存进程化、硬件不足功能软件化
保留扇区的理解
- 把磁盘比作城市,那政府相关部门就属于保留扇区部分;
- 保留扇区的作用:是为了更好的管理磁盘,就像政府部门是为了更好的管理城市一样
- 那发散性思维能够想到:
- 购买电脑,电脑内存的可利用内存小于内存的所有空间,原因操作系统占据了部分内存空间
- 这就可以理解所有电子存储相关的产品,都存有“保留扇区”,或者起名叫,“电子政府”
程序员工作比喻磁盘
- 研发工作比作:数据区域
- 公司管理层比作:保留扇区
- 部门经理比作:根目录区域
- 我的工作比作:完善文件分配表的管理研发工作
405-操作系统对资源的合作与协同管理
- 分工-合作-协同:是化简复杂问题,进行复杂问题求解的重要思维
- 概念区分:
- 程序(文件):存储在磁盘上的程序文件,即外存
- 进程:装入内存中的程序;进行中的程序
- 任务:大粒度的工作,一个应用程序的完整的执行。一个任务由多个进程来完成
- 作业:小粒度的工作,不同的作业由不同的进程来完成
- 操作程序的进程:为使应用程序顺利执行而做的辅助性管理性工作的进程。操作系统的进程也存储在内存中,也需要调度CPU来执行:CPU在操作系统进程和多个应用程序进程之间来回切换
- 应用程序的进程:应用程序本身的进程
- 协同完成“应用程序执行”:
- 用户请求执行程序
- 进程相关的准备工作
- 为进程分配相关的内存空间
- 将程序由外存装载到内存中
- 让CPU执行已经准备就绪的进程
理解作业和进程
- 概念上看:任务>作业>进程
- 而在特定时候,作业=进程
- 疑问:为什么不直接叫进程,为什么还要产生一个作业的概念呢
- 回答:就是因为大部分时候,一个作业有多个进程组成,而进程直接是串联的形式,如果都叫进程,不清楚是叫多个进程组成的结果;还是在称呼某个进程;为了防止这种概念的混乱,才诞生了作业的概念
多个进程如何进行管理,怎么表现的一直无法理解!
- 进程:是由有限数量的指令组成,CPU通过计数器进行一条一条执行
- 进程等待,直接从电路的角度理解很困难,但是可以从指令集合的角度进行理解,就很好理解了
- 状态管理:只需要把运行到的位置(指针的位置)保存下来,并且把当前要保存的状态进行保存,就可以实现状态的管理
- 等我们再次执行之前等待中的进程的时候,只需要把当时保存下来的数据,输入到保存指针的位置中就形成了程序的再次运行
从函数的角度理解进程管理
进程管理有:进程就绪、进程等待、进程运行
- 进程的一系列操作就是操作一个完整的函数运算一样
- 我们在函数运算到某个阶段的时候进行暂停,再次启动如果还想在暂停的位置启动
- 要做的就是,把当时的状态变量全部保存下来,等下次要再次从暂停的位置运行,只需要把当时保存下来的状态变量和当时的函数状态相互结合,就实现了“原地运行”
之前一直无法理解进程运行就是困扰在电路怎么进行管理
- 想不明白的地方就是,电路运行到一半怎么暂停呢
- 也许要想理解这层就需要在电路上面下功夫,目前没这个必要
406-现代计算机的演进
- 冯诺依曼计算机:解决了,程序是如何在内存、CPU之间运行的
- 现代个人计算机:解决了,外存中的程序如何被内存读取,然后通过CPU执行
- 单个CPU执行多个作业:采用分时处理
- 多个CPU执行多个作业:主CPU进行管理、控制和分发,其余的CPU进行执行,然后再由主CPU进行合并处理
- 分布:一个作业被一台机器的操作系统拆分成若干个可分布与并行自执行的小作业,通过局域网络或互联网传送到不同的机器,由不同机器的操作系统控制其CPU予以执行。如此网络上,多台计算机可并行完成一个作业
- 分布式执行作业,是多CPU执行作业的扩展:是把现有资源的合理利用,而比特币更是把分布式利用的最完美的地步
- SAAS(Software As A Service):将应用软件以可配置可计费的服务方式提供给用户使用
- 云:实现了人们用计算机像是日常中用水用电一样
- 苹果应用商店也是云的一体现、淘宝网也是云的一种体验:就是把一类资源汇集起来,对外提供