深入理解计算机系统(1.1)---计算机概述

发布时间:2013-09-20 18:04:00作者:左潇龙阅读(1855 )评论(16)

               本来LZ是打算好好研究一下JVM源码的,不过想来想去,LZ觉得应该先了解计算机系统的原理,再去研究JVM源码的精妙。因此LZ决定潜下心来好好研究下计算机系统原理,这是一个漫长的过程,因为《深入理解计算机系统》这本书很厚,而且这种书一般看起来速度不会太快。因此LZ打算做好每一个阶段的记录,有兴趣的猿友可以跟着LZ一起看下,了解计算机系统的运行原理其实是很有必要的。

     

    计算机的组成

     

              计算机是由硬件和软件组成的,这两个部分共同协作完成程序的运行。这两部分如何协作完成程序的运行,是本系列的重点。

     

    信息的表示

     

              信息的表示说到底就是位加上下文。举个小例子,比如11011101这一串二进制,在表示整数的时候它表示221,但是如果放在JAVA的class文件当中,它可能代表一个JVM的指令。

     

    程序的编译

     

              对于一个简单的C语言程序来说,一般要经过预处理器、编译器、汇编器和链接器的处理,才能被翻译成一段可执行的二进制文件。

              比如对于一个简单的C语言程序,如下。

    #include <stdio.h>
    
    int main()
    {
         printf("hello,world");    
    }

              我们保存在hello.c当中,那么它的翻译过程如下。

    程序的运行

     

              程序的运行由解释器负责,它将逐个解释最终生成的二进制文件并执行。

     

    计算机的硬件组成

     

              首先,我们来看下计算机中硬件的大致分布,如下图。

               其中有几个非常重要的部分,一一看下都是什么作用。

               总线贯穿整个系统的是一组电子管道(其实就是传输数据的线路),也就是总线。总线传送的是字,字的大小与系统相关,比如在32位操作系统当中,一个字是4个字节。

               I/O设备I/O设备是系统与外部联系的通道。I/O设备(键盘、鼠标、显示器等)由控制器(USB控制器)或者适配器(图形适配器,也就是显卡)与I/O总线相连,两者的区别在于一个是主板上的芯片组,一个是主板插槽上的卡。

               主存它是计算机中的一个临时存储设备,在处理器执行程序的时候,主存就是临时存放数据的地方。物理上来说,它是由动态随即存取存储器芯片组成,逻辑上来说,它是一组连续的字节数组,每一个字节都有唯一的地址。

               处理器全称中央处理单元,是解释存储在主存中指令的引擎。处理器的核心是一个程序计数器,它在整个计算机运行的期间都会指向一个主存中的一个内存地址,而地址当中则是一个计算机指令。处理器所做的,就是不停的执行程序计数器所指向的每一条指令。处理器所做的操作是围绕主存、寄存器文件以及算术/逻辑单元进行的,这里面处理器做的最多的动作就是加载(从主存将数据复制到寄存器)、存储(从寄存器将数据复制到主存)、操作(将两个寄存器的内容复制到算术/逻辑单元进行操作,结果会再次复制到寄存器)以及跳转(改变程序计数器当中的内容)。

               处理器当中提到的是指令集结构,不过实际当中指令集的实现是非常复杂的,这么做的目的是为了加速CPU的运算速度。我们可以这样去区分指令集机构以及微体系结构,指令集结构是指令集的抽象描述,而微体系结构则是这个抽象描述的某一个具体实现,类似于JAVA虚拟机与JAVA虚拟机实现的关系。

     

    本章小结

     

               计算机是由软件与硬件组成的,而硬件又包括了总线、I/O设备、主存以及处理器,其中信息是由位以及上下文表示的,而信息则是从I/O设备以位的形式通过总线进入主存,然后由处理器从主存将信息取出处理。

               一个程序的执行,是经历了预处理器、编译器、汇编器以及链接器的处理之后,才最终成为可执行的文件。当程序成为可执行文件时就已经保存在了磁盘上,具体的执行过程在下一章再总结。

     


    版权声明:本文版权归作者(左潇龙)所有,欢迎转载。但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

    10
    精彩
    0
    感动
    0
    搞笑
    0
    开心
    0
    愤怒
    0
    无聊
    0
    灌水
    0
    惊讶
#1楼     时间:2013-09-20 08:57:00      来源:codezyc
谢谢楼主的分享,希望楼主能继续这个系列。
#2楼     时间:2013-09-20 10:20:00      来源:Samaritans
长姿势了。
#3楼     时间:2013-09-20 10:26:00      来源:luofsx
#4楼     时间:2013-09-20 10:58:00      来源:zgyangchong
我也在看这个,你看的电子版这么清晰,是全的吗??
#5楼     时间:2013-09-20 13:58:00      来源:左潇龙
@ zgyangchong
施主误会了,贫僧看的是实体书,非电子版。
#6楼     时间:2013-09-20 14:07:00      来源:左潇龙
@ luofsx
@色拉油
@codezyc
贫僧多谢三位的支持了。
#7楼     时间:2013-09-20 14:45:00      来源:左潇龙
@ zgyangchong
@luofsx
@色拉油
@codezyc
贫僧刚才新建了一个交流群,群号是300638185,目的主要是为了计算机系统原理这本书的心得交流,四位有兴趣的话可以进来看看,目前是空群。
#8楼     时间:2013-09-20 23:28:00      来源:关心
楼主是否创建一个有关java虚拟机交流学习的群
#9楼     时间:2013-09-21 00:22:00      来源:左潇龙
@ _叶枫
如果施主有关于java虚拟机方面的东西想交流,也可以暂且进入贫僧的计算机系统原理这个群进行交流,等到人数多了,贫僧会考虑再建其它的群。
再次感谢施主的提议。
#10楼     时间:2013-09-22 14:19:00      来源:wdwwtzy
是《深入理解计算机系统》的读书笔记?
#11楼     时间:2013-09-22 15:21:00      来源:左潇龙
@ wdwwtzy
嗯,基本上是,只不过和书的原文有一些区别,比如有的觉得太简单不必要重复介绍的贫僧就给删掉了,或者比较难的贫僧就会多说点,或者加入一些小例子等等。
#12楼     时间:2013-09-22 16:24:00      来源:wdwwtzy
@ 左潇龙
呵呵,那很太支持lz了,希望可以写完,我都没看完,看到后面看不进去了
#13楼     时间:2013-09-27 14:19:00      来源:fanstars
收藏咯~
#14楼     时间:2013-10-12 09:38:00      来源:月下*独
顶楼主,自己也想学,但是看到一本本书就不知道从哪入手。楼主辛苦!
#15楼     时间:2013-11-16 12:43:00      来源:wzx_xle
话说一开始被书名字糊到了,还以为是讲计算机硬件底层的书呢!听君一席话,解我十年惑啊!我和楼主的想法还真像啊,我也是最近准备学习jvm的,后来发现真是力不从心啊,还真是要从底层重新学起,发现楼主这篇博客,有点相见很晚的感觉,与楼主共勉!
#16楼     时间:2013-12-07 10:26:00      来源:Aidou_dream
小僧这厢有礼了
发表评论

站内搜索

最新评论