计算机是如何工作的(最简单透彻的解释)

        问题:计算机是如何工作的,电流如何转换成可执行的逻辑(软件),以及为什么?

        这是一个很棒的问题!我11岁时在PC上玩FIFA 99曾经问了自己这个问题,于是我踏上了六年的大学之旅为了能够找到这个问题的答案。

        它真的很复杂,让我思考了一下(其实很多)。我们先从底部开始吧:

  •  物质是由原子组成的(我们能够找到更小的单元,但是对于这个问题够了)
  •  原子中有电子,这些流动的电子被定义为电流。
  •  为了能够使用这些电子,我们制造晶体管可以按需随时存储/释放他们。他们被存储为1 (50 (0)
  •  8个晶体管就能够表示一个8位二进制数。所以要将8 bit表示数字3则为:0000 0011. 这是怎样在硬件上实现的呢?把8个晶体管并列排列(称为寄存器和存储器单元)。前六个晶体管保持0V,后两个保持为5V
  •  现在,将这些寄存器和存储单元组合起来就成了CPU + RAM
  •  为了让CPU变得容易计算,我们发明了机器码。这些语言能够在CPU上运行。我说的“运行”是什么意思呢?它意味着,不停地改变电压。如果我想要计算 2 + 3, 计算机就会在一个寄存器中存储21,另一个存储31.然后把这些值输入到加法器(能够运算数学加的单元,不是简单的电压相加),然后在另一个寄存器中给我答案。以下是一个简单机器码的实例:
80 02 F3
80 03 F4
88 F3 F4 F5

        显然,没有人会明白这些代码。所以我们得想出一个非天才的系统以让人们可读。这就是汇编语言(assembly language)。以下就是上面提到数字对应的代码:

MOVI 2, REG A
MOVI 3, REG B
ADD REG A, REG B, REG C (将A加B并存储到C中)

        有,       

       MOVI = 80
       REG A = F3
       REG B = F4
       REG C = F5
       ADD = 88

        瞧,我们的第一个编程语言:)

  •  现在,汇编语言对我们来说,要记住它和正确编码太难了。 所以人们又发明了编译器——能够将像C这样的高级语言转换成汇编语言(记住,这些汇编才真正控制比特的改变)。

        所以,上述代码C语言的表述就是:

{
int a = 2; 
int b = 3;
c = a + b;
}//(代码稍有问题哦~注意到了吗^.^
  •  就像人们可以用文字而不是手势来写诗,我们认为,具有一定涵义的程序语言能够让人写出更好的程序。然后将程序转换成汇编,寄存器中的电压就会变化。这反过来会影响晶体管,从而影响电子的流动。
  •  有了上述的基础,我们写了操作系统以最大限度地提高硬件使用率。因为当计算机从磁盘上获取数据时,CPU是闲置的。
  •  所有从键盘输入、鼠标移动、桌面窗口、声音都是一个个的用高级语言写的程序,在操作系统上运行。
  •  在操作系统上,我们开发了一个称为TCP/IP的网络协议栈。该协议栈提供了一个标准化的方法用来进行计算机通信。
  •  上述一旦工作,我们设法用电缆将计算机相互连通,然后创建WWWhttp。这让人们可以从不同的网络相互进行交流。需要注意的是http是一种协议。服务器和客户端程序除了遵循http外还要遵循内部协议。

        让我们从另外的角度看看,现在从软件到电子...

  •  当你在浏览器中键入Google,按回车键时,你的浏览器(客户端)就会向Google(服务器)发送一个http请求。
  •  在你的电脑上,浏览器的程序时用C/C++(假设)写的。
  •  将它编译成汇编语言(实际上浏览器已经编译好了,你只需要向浏览器中输入字符就行)
  •  操作系统(Windows / Linux)和设备驱动程序也已经编译好,并且在你的计算机上运行。
  •  当CPU流水线轮到浏览器时,就会运行它的汇编代码。
  •  这些汇编代码就会改变寄存器和存储器中的比特位。
  •  寄存器和存储器由晶体管组成。
  •  晶体管控制电子的流动,于是形成了电流。

        我已经过度地简化了问题的过程,但在本质上没什么区别。当然我只提到了不到1%的细节,另外的99%(或许更多)需要大家慢慢根据自己的专业去理解。

        原文链接:https://www.quora.com/Computer-Science/How-do-computers-work-the-way-they-do%E2%80%A6-when-does-electricity-become-executable-logic-turn-into-software-And-how

原文地址:https://www.cnblogs.com/riskyer/p/3331120.html