1.计算机的工作原理
要想理解编程如何驱动计算机完成工作,就要理解计算机是如何工作的。
1.1 现代计算机的几个构成部件
中央处理单元(CPU,central processing unit),承担计算机绝大部分的运算和控制工作,负责处理程序。
随机存取内存(RAM,random access memory),存储程序和文件的工作区。
外围设备,如键盘、鼠标、触摸屏、监视器,提供人与计算机之间的交互。
1.2 CPU的日常工作
CPU从内存中获取并执行一条指令,然后再从内存中获取并执行下一条指令,以此类推。(*科普:世界最强CPU-ThreadRipper 2990WX,最高频率为4.2GHz,即一秒钟能重复这样的操作大约42亿次)
CPU拥有自己的小工作区,由若干个寄存器组成,每个寄存器都能储存一个数字,其具体工作方式为:
1. 一个寄存器储存下一条指令的内存地址,CPU使用该地址来获取和更新下一条指令
2. 在获取指令后,CPU在另一个寄存器中储存该指令,并更新第1个寄存器储存下一条指令的地址。
CPU能理解的指令有限(这些指令的集合叫做指令集)。而且这些指令相当具体,其中许多指令都是用于请求计算机把一个数字从一个位置移动到另一个位置。
*科普两个小知识:
1. 储存在计算机中的所有内容都是数字。计算机以数字形式储存数字和字符,每个字符都有一个数字码。计算机载入寄存器的指令也以数字形式储存,指令集中的每一条指令都有一个数字码。
2. 计算机程序最终必须以数字指令码(机器语言)来表示。
1.3 过去的编程,机器语言
用数字码表示指令,且指令贴近计算机处理工作的方式,需要考虑CPU在完成任务时具体需要哪些步骤。
例如,对于两数相加,要分成以下几个步骤:
1. 从内存位置 2000 上把一个数字拷贝到寄存器 1
2. 从内存位置 2004 上把另一个数字拷贝到寄存器 2
3. 把寄存器 2 中的内容与寄存器 1 中的内容相加,把结果储存在寄存器 1 中
4. 把寄存器 1 中的内容拷贝到内存位置 2008
而你要做的是,必须用数字码来表示以上每个步骤,十分反人类。
1.4 现在的编程,高级计算机语言+编译器
不必用数字码表示指令,且指令贴近人类思考问题的方式,抽象地表达你的想法。
例如,对于两数相加,可以写成:total = a + b;
对于我们而言,光看这行代码就能明白计算机要做什么;而对于计算机而言,这是一堆无法理解的无用数据。此时要使用编译器,它是将高级语言翻译成计算机能理解的机器语言指令集地程序。你作为程序员,进行高级思维活动,而编译器则负责翻译工作。使用不同的编译器和编译器集,可以将一种高级语言翻译成匹配不同类型CPU所使用的机器语言程序。而且,高级语言对人类更友好,简单易学。
1.5 总结
计算机的工作原理是:如果希望计算机做某些事,就必须为其提供特殊的指令集(程序),确切地告诉计算机要做的事以及如何做。在过去,你必须用计算机能直接明白的语言(机器语言,即由01组成的数字指令码)创建程序,这是一项繁琐、乏味、费力的任务;在现在,你可以使用能高级语言,抽象地表达自己想法,通过编译器创建计算机能直接明白的程序。
1.6 思考题
CPU在接收指令集后的工作原理。
参考文献:
[1]Stephen Prata.C Primer Plus[M].(第6版).北京:人民邮电出版社,2016:4-5.
原文地址:https://www.cnblogs.com/poppylibrary/p/12272616.html