禹晓博+ 原创作品转载请注明出处 + 欢迎加入《Linux内核分析》MOOC网易云课堂学习
一、计算机是如何工作的
首先我们要明确一个概念,就是计算机本身并不知道自己要做什么,这些要做的事情需要我们去告知计算机,这就是程序代码。早期的时候计算机每次只能做一件事情,他需要知道的是干什么,怎么干。这就是程序代码要体现的,程序的基础目的在于有一个输入(数据)然后经过处理(怎么干)得到我们想要的输出。从计算机的逻辑层面来说就是处理器需要有输入然后经过里面的一些运算器件得到输出。
现代计算机大都采用了一种叫做冯诺依曼的结构,叫什么不重要,这种结构的意思就是我们现在所说的程序和数据都储存在一起。所以计算机在运行的时候需要从中将数据取出,然后用程序进行处理,最后得到输出。所以给计算机编写程序代码的时候也是要关心一下三件事:
1.程序要处理的输入数据;2.程序如何处理数据;3.程序处理后的输出;
所以在编写程序时候需要做的就是告诉计算机需要处理哪些事情和如何处理以及要怎样输出结果。我们用以下面的代码作为例子:
int g(int x){
return x + 8;
}
int f(int x){
return g(x);
}
int main(void){
return f(8) + 8;
}
我们看到,上述程序需要处理的数据是一些整数,处理的过程是调用f() 和g()连个函数进行运算,其中f(x)=g(x);g(x)=x+8;处理的结果就是返回f(8)+8这个值。
但是高级语言是计算机不能直接看懂的,计算机智能看懂0101的机器语言,所以上述C语言代码必须经过一个叫
编译器
的东西翻译成一种可以和0101机器语言直接映射的语言——