计算机系统学习1:CPU,内存,硬盘及指令之间的关系

计算机系统是由硬件和系统软件组成的,它们共同工作来运行应用程序。一个典型系统的硬件组成如下图所示:


图1 一个典型系统的硬件组成

  1. 内存
    内存是一个临时存储设备,在处理器执行程序时,用来存放程序和程序处理的数据。从物理上说,内存是由一组动态随机存取存储器(DRAM)芯片组成的。从逻辑上说,存储器是一个线性的字节数组,每个字节都有其唯一的地址(即数组索引),这些地址都是从零开始存放的。

  2. 硬盘
    硬盘是一个长期存储设备,从都具有存储程序命令和数据这点来看,内存和硬盘的功能是相同的,但是,利用电流来实现存储的内存和硬盘是有差异的。内存是高速低价的,而硬盘则是低速廉价的,同时当计算机断电的时候,内存中的数据将被擦除,而硬盘则不会。

  3. CPU
    中央处理单元(CPU),简称处理器,是解释(或执行)存储在内存中指令的引擎。处理器的核心是一个资产的存储设备(或寄存器),称为程序计数器(PC)。在任何时刻,PC都指向主存中的某条机器语言指令(即含有该条指令的地址)。

    从系统通电开始,直到系统断电,CPU都在不断执行PC指向的指令,再更新PC,使其指向下一条指令,然后CPU继续执行PC中的指令。

    计算机主要的存储部件是内存和硬盘,程序保存在这些存储设备中。硬盘中存储的程序,必须要加载到内存中才能运行,而在硬盘中则无法直接运行。CPU在执行程序的时候,首先要从硬盘中将程序或者指令读入内存中,然后CPU从PC指向的内存处读取指令,执行该指令指示的操作,然后更新PC,使其指向下一条命令。

示例:程序是如何按照流程来运行的。
如图2是程序启动时内存内容的模型。用户发出启动程序的指示后,操作系统会把硬盘中保存的程序复制到内存中。示例的程序实现的是将123和456两个数值相加,并将结果显示到显示器上。存储指令和数据的内存,是通过地址来划分的。实际上,一个命令和数据通常被存储在多个地址上,但是为了便于说明,图2将指令和数据分配到了一个地址中。
地址0100是程序运行的开始位置。操作系统把程序从硬盘复制到内存后,会将PC设定为0100,然后程序开始执行。CPU每次执行一个命令,则PC的值加1。例如,CPU执行地址0100的指令后,程序计数器的值就变为0101(若执行的指令占据多个内存地址时,则增加与指令长度相应的数值)。然后,CPU继续根据PC的值读取内存中的指令并且执行。


图2 内存中配置的程序示例

参考文献

  1. Randal E.Bryant, David R. O’Hallaron,深入理解计算机系统(第2版),北京:机械工业出版社,2010.11
  2. 矢泽久雄,程序是怎样跑起来的,北京:人民邮电出版社,2015.4
全部评论

相关推荐

10-28 14:42
门头沟学院 Java
watermelon1124:因为嵌入式炸了
点赞 评论 收藏
分享
offer多多的六边形战士很无语:看了你的博客,感觉挺不错的,可以把你的访问量和粉丝数在简历里提一下,闪光点(仅个人意见)
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务