《深入理解计算机系统》-第1章 计算机系统漫游
文章目录
序
最近重启了写博客,都说念念不忘必有回响。自从上一遍博客,到现在已经过去了快两年的时间。在这期间一直在想着什么时候写个博客呀,什么时候再摸着键盘一点点的码字啊,心里一直在想,直到现在,终于有了行动。
看着一个一个的字,随着键盘的敲击,一串串跃然于屏幕之上,心里有说不出来的平静与喜悦。平静的是,好像世间只有自己,任凭思想在激荡;喜悦的是,世间竟然有这么奇妙的东西,可以靠着几下简单的敲击,就能把脑中所想记录下来。
这篇博客主要是总结下,最近在看的《深入理解计算机系统》的第一章。
第一章的主要内容就像标题所说的那样,是计算机系统的漫游。漫游漫游,顾名思义,漫漫的游览。有慢之意,也有游之意。主要是带领大家慢慢的看看计算机是什么,都有什么,大概是怎么运行,熟悉一下这个奇妙的东西。
1. 信息就是位+上下文
首先我们来看一个象征了计算机生命起源的程序,hello.c
#include <stdio.h>
int main(){
printf("hello, world\n");
return 0;
}
这就是一个源程序,它其实是程序员写的一个文本,最终在计算机存储的都是一串串0和1的序列。
每种字符都有它的编码,比如‘a’对应的数字是97,转换成2进制就是01100001,计算机就是存储了这么多的0和1。
我们看到的这个int main实际就是计算机把好多的0和1,然释成我们可以理解的文字,显示在屏幕上的。
hello.c的表示方法说明了一个基本思想:系统中所有的信息——包括磁盘文件、内存中的程序、内存中存放的和用户数据以及网络上传送的数据,都是一串比特(0和1)表示的。区分不同数据对象的唯一方法是我们读取到这些数据对象的上下文。
比如一个同样的字节序列(一串比特)可能表示一个整数、浮点数、字符串或者机器指令。
总结起来就是,信息就是位+上下文
2. 程序的不同格式
对于刚才的hello.c计算机是不能直接执行的,到现在为止,计算机对这个文件的理解只是一个文本文件,就是用来给人读的。
我们要想这个文本文件执行,需要把它转换成另一种文件格式。
(ps:把程序员和人类分为两个范畴似乎有点不太友好哈)
在这个过程中,位(01串)发生了变化,上下文也发生了变化,信息也就不同了,这也印证了上文所说信息就是位+上线文
3. 处理器读并解释存储在内存中的指令
3.1 系统的硬件组成
刚才我们大致了看了下源文件是怎么储存,和如何由文本文件变成可执行文件的。
不过这些都有点虚,我们还想看看这些东西是如何落到实处的,也就是怎么和现实世界联系起来的。
也就是承载这些运算的载体——硬件,是怎么样的。