软件和硬件 软件的重要性 pc如果没有软件就仅仅是一个盒子 源代码 通过编译器 形成汇编 然后被加载到内存(因为内存的读写速度非常快) CPU(从内存中取数据)。 CPU能做的东西很简单,就是从上而下,依次执行,根据程序计数器里面的地址来一步一步的完成操作,然后再通过标志寄存器进行跳转(逻辑处理)。 但是我们从来没有写过一句与硬件相关的代码,这些硬件都是由操作系统为我们提供的,我们使用最多的是API,这些API是一些指令,我们的指令是由操作系统来翻译 我们所有的硬件都是ic芯片,有两个操作,IN和OUT来进行硬件和Windows之间通信的指令。 IN 寄存器名,端口号 从硬件读数据到CPU中 OUT 端口号,寄存器名 从CPU写入指令到硬件中 端口号:存在于电脑中的唯一编号 我们电脑中有各种各样的硬件,我们使用端口号来区分这些硬件。 在xp操作系统中,经常遇到硬件冲突的问题,就是硬件的端口号冲突,因为CPU不知道往哪个端口号读写,现在的端口号,都是由系统统一分配。 如果电脑中有很多的硬件,我的CPU处理不过来怎么办?还有电脑中的每个硬件的电流特征码不一样,我们如何让它一致化呢? 硬件和操作系统之间还有一个中间层:就是I/O控制器,I/O控制器就是将硬件中的电流信息统一进行一个翻译,翻译成我们的统一的信号。但是这样还会有一个问题,我有很多硬件,这些硬件应该是同时工作的,应该有一个东西让我们同步进行,这就是中断(IRQ)。 IRQ:就是来发送中断请求的。 新的问题,电脑中有这么多硬件,一直中断一个硬件,那么就没法运行了,这是又有了中断控制器。 在I/O控制器和CPU之间又有一个中断控制器,就是所有的I/O控制器都将自己的信息发送到中断寄存器中,发来之后,按顺序发给我们的CPU,我们CPU这边还会来做一个事情,就是轮询处理中断信息。 CPU是如何来处理中断的呢?答案是:通过栈实现的。 跟显卡通信:VRAM(Vedio RAM):负责显示,这是一块特殊的内存区域,即显存,在最开始的时候(dos时期),没有这样的东西,它是在内存中直接划分这样一块内存用来显示。现在的显卡带有GPU,已经集成好了VRAM,来显示,节省了宝贵的内存资源。 我们用过的程序可以分为两种:一种是工具类的程序(办公软件),还有一种是可以思考的程序(智能电饭煲,智能电冰箱,导航)。 猜拳游戏:石头剪刀布 我们可以让我们的这个游戏的程序有一下几种运行方式: 一直出石头 -》 随机出石头剪刀布 -》 简单的看起来像是在思考 通过记忆来完成这个程序 -》 我们的电脑是能够存储值的, 1. 我以每 10 把为一个随机 2. 10 把分析你出什么最多,我就多出赢你的那个 3. 还可以分析你输了之后喜欢出什么,赢了之后喜欢出什么? 经过这样一分析,我们的软件就看起来能够自己思考了,这也就是人赋予它的一些简单的逻辑思考能力,这就向我们上面所说的人工智能。