Chinaunix首页 | 论坛 | 博客
  • 博客访问: 533144
  • 博文数量: 114
  • 博客积分: 5010
  • 博客等级: 大校
  • 技术积分: 1840
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-05 21:57
文章分类

全部博文(114)

文章存档

2010年(17)

2009年(26)

2008年(71)

我的朋友

分类:

2008-09-17 22:03:43

信念,指导我们前进的信念是什么?

    计算机没有了软件就是一堆废器件或废铁,就像爱情没有了甜言蜜语,没有一点生机。

    计算机系统由硬件和软件组成,软件由二进制位信息组成,这些位信息就像是人体内的
神经元,控制和打通计算机系统各硬件间的协同工作和沟通。
    软件是从最原始的代码经由编译器转换成计算机硬件能够理解的位信息,按照人类为其
编制的逻辑或说上下文进行组织而成的。对于这些位信息的理解完全由人类来定义,你可以
认为某8个串在一起的位信息为一个字节,或将一个32位的信息认为是一个整数,当然也可
以将其认为是一个浮点数,或者认为它就是一条指令,这条指令可以是控制火箭的点火指令
。它们就像是一种艺术作品,你想如何理解它就可以是什么意思。当然,这个世界在无序中
存在着有序,所以在计算机世界里我们一般将4,8,16,32,64个位串放在一起,把它们分
别看待成一个原始对象。而计算机的大脑(CPU)就是这样去理解和处理这些信息的。
    在代码转换成计算机能够理解的二进制位信息串的过程中,代码又被转换成多种中间代
码,最终被一个叫连接器的程序将其连接成一个可以在计算机上执行的程序。这个过程相对
复杂,不过,用任何编程语言所写作成的代码都将被翻译成计算机能理解的位信息之后才能
被正确地执行,包括人们所熟悉的解释型编程语言,只不过编译的过程分散在每一个执行的
过程中。
    C语言是目前系统软件中使用得最多的编程语言之一,GNU的C编译器GCC是Linux下使用
的最多的编译器,它把一个代码源程序经由预编译,编译,汇编,最后连接成一个在Linux
下可执行的程序。而这个过程中的每一个中间过程都有自己的中间产物,也就是源代码在编
译过程中所展现的不同格式。
    
    计算机系统是由不同的模块组合而成的,不同的模块之间都将由CPU来进行控制,而所
有的控制指令确是人类提前制定的。所以我们也可以理解为计算机其实就是人的傀儡。在
各个模块之间都存在一个缓冲区,比如,我们用于存放数据的硬盘与内存之间有一个缓冲
地带,也就是硬盘寄存器。我们的程序在执行之前需系统把它们加载到内存中,这是冯诺
依曼体系结构的基本原理,当计算机系统发出指令要把将要执行的程序加载到内存时,系
统是从硬盘的寄存器里,以一定的频率读取数据,说白了就是把硬盘与外界交互的接口处
的电位状态转移到内存中去,表现到内存中去,实质上也就是电位信息的移动。当我们加
载到内存的程序是一个向屏幕上显示"Hello World!"的程序时,还需要将"Hello World!"
在内存中的表示移动到显示区的缓冲区,从而在屏幕上显示出来。
    我们可以把上面描述的缓冲结构进行扩展,随着制造业的不断发展,CPU的处理速度
呈指数级的提高,这少不了CPU内部的一级,二级缓存的功劳,而一级缓存的数据是从二
级缓存里移动或说复制过来的,而二级缓存的数据是从内存中移动和复制过来的,而内存
中的数据是从闪存或硬盘上复制过来的,硬盘上的数据可能是从远程的网络上的数据……
    这就是计算机系统的层次结构,本质就是电位信息的移动。

阅读(1111) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~