软件与硬件的关系
硬件和软件相互依存。硬件是软件赖以工作的物质基础,软件的失常工作是硬件发挥作用的惟一路径。
计算机系统必须要装备欠缺的软件系统能力失常工作,且充分发挥其硬件的各种性能。软件是如何管制硬件的
实质上并没有软件管制硬件,就和你是不能用意念管制一个货色一个情理,而是硬件管制硬件。
软件操作硬件流程图
阐明如下:
-
硬件的实质是电路, 通过输出高低电平控制电路的接通和断开来实现工作。
高低电平是:物理状态、能量的体现、物理信号,宏观的理论状态
二进制 1 和 0 是:形象的标记符号,语言,宏观的形象 -
管制硬件工作的形式的倒退过程
- 最早是通过拨开关来控制电路接通和断开来管制硬件工作。
- 而后程序时,程序的 0 和 1 代码通过专职的录入员将其用打孔和不打孔的形式转化为纸条上的一串孔洞,而后通过纸带通过光照区,有孔无孔转为光点和暗点,而后通过光敏元件转化为高低电平,通过输出高低电平来控制电路接通和断开来管制硬件工作。
- 当初通过键盘输入时,通过按键的接通和断开间接输出的就是电信号高低电平。
- 古代编程,集成电路的呈现带来了开关的电子化,能够用晶体管模仿开关,不管你以什么模式输出了 01 的数据,最初都会转化为这些贮存电路中贮存的数据
- 晓得了硬件是通过输出高低电平来工作的,那么软件是用什么来代表高低电平呢,这就是咱们说的二进制机器语言。
- 1679 年,莱布尼茨提出了二进制,能够通过 0 和 1 来代表所有数字,计算机科学家发现二进制和计算机工作须要的高低电平十分符合,于是应用二进制作为古代计算机实践的根底,规定 1 和 0 别离代表电路的高低电平
-
有了数字实践,怎么做出逻辑电路?于是人们又引入了逻辑门理念,靠他们来做运算。
- 与门
除非两个输出都是 1,则输入 1,否则输入 0
-
或门
除非两个输出都是 0,则输入 0,否则输入 1.- 非门
它会对输出取反(1 变 0,0 变 1)
- 非门
- 或非门
除非两输出雷同则输入 0,否则输入 1
- 与门
以加法为例,逻辑门实现二进制加法计算形式如下图:
1. 当两个输出都是 0,高位输入 0,低位也是 0,后果是 00, 换成十进制就是 0
2. 当两个输出都是 1,高位输入 1,低位输入 0,后果是 10,换成十进制就是 2
3. 当输出一个 0 一个 1,高位输入 0,低位输入 1,后果是 01,换成十进制就是 1
所以逻辑电路其实并不明确加法,它只是按步就搬的给咱们了碰巧正确的后果
- 编程:程序自身就是指令的汇合。
每个 CPU 都有本人的指令集,而 CPU 只能辨认本人反对的指令集,指令集作为软件和硬件的接口。
所谓编程就是将程序员想要实现的成果,用 CPU 反对的指令集写下来,指令集有很多,程序员能够(也仅能)在反对的指令集中任意组合来实现想要的成果。
高级语言的各种助记符都是对指令集的形象,从而让人们以更合乎人类思维的形式来使用指令集,通过实现【高级语言 -> 编译 -> 汇编语言 ->cpu 指令集 -> 二进制机器码】这个过程,将其转化为高低电平存储到存储器。 - 软件程序通过编译器最终会转化为二进制机器语言,即 1 和 0 的数字组合,
-
CPU 管制硬件:
- 总线:计算机外部通信,信息传输的通道,这些信息蕴含数据,指令,地址等,是计算机实现各项计算和操作工作的物理根底,在计算机外部,每一个硬件设施都以特定的形式与 CPU 相连(间接或间接)
- CPU 通过总线向其余硬件公布指令,使其工作。
- 通信协定:就像人和人之间相互高效的传递音讯须要对立的语言一样,通信协定就像一门语言,确保单方所言所闻都能被正确的解决。总线也一样,须要一套既定的协定,来让 CPU 和其余硬件之间失常的沟通,协定规定了:什么指令代表什么含意,什么时候能够发信息,有几条数据线,电压,频率等等,事无巨细,一律都有十分谨严对立的规定。例如 SPI,I2C,UART 协定等等。
- 最初总结:整个工作过程如软件操作硬件流程图。
文字举例:程序员在电脑终端写下命令 -> 编译 -> 运行 ->CPU 把数据写到内存里特定的地位 -> 通过总线呼叫一下硬件 -> 硬件到约定的内存地址去读取数字 -> 依据 1 和 0 输入高下电压 -> 完结
系列文章
[[计算机根底系列文章 (一)] 计算机简介](https://segmentfault.com/a/11…)