首页 > 代码库 > 【图解】cpu,内存,硬盘,指令的关系

【图解】cpu,内存,硬盘,指令的关系

  • 1 程序员用高级语言编写程序。
  • 2 经过编译 链接等形成机器语言的EXE文件。
  • 3 EXE文件保持在磁盘的某个或多个扇区内
  • 4 程序运行是在内存中生成EXE的副本
  • 5 将指令读入cpu的寄存器
  • 6 由cpu中的控制器,运算器,和时钟配合解析运行

1 程序员用高级语言编写程序。

程序员并不直接和内存和cpu打交道,程序员只是负责编写代码,现在程序猿更是使用高级语言来编写代码,如C,C++,Java等。
技术分享?

2 经过编译 链接等形成机器语言的EXE文件。

由于CPU内存读不懂高级语言的代码,那个是给程序员看的,所以需要进行翻译,翻译成它们这些机器明白的机器语言,就是100101001010这些机器码了。不过这样一来看不懂的就是我们了。哈哈。
技术分享?

3 EXE文件保持在磁盘的某个或多个扇区内

程序编写之后,会以文件的形式存在在硬盘中,虽然cpu的寄存器,内存RAM等也可以存数据,而且寄存器的速度快过内存,内存又快过硬盘。但是寄存器的内存有限,仅够支持指令段。而内存又是断电不保存数据的。所以程序还是应该存在硬盘妥当一些。
技术分享?

4 程序运行是在内存中生成EXE的副本

但是运行程序的时候还是需要将硬盘中的数据和指令加载到运行内存才能运行。由于磁盘和内存的速度不匹配的问题,有时会为了减少磁盘寻址的时间,人们设计出了相应的数据结构来作为索引,如B树,B+树等,可以减少磁盘访问次数来提示性能。总之,磁盘是要比内存慢几个级别的。用户发出启动程序的指示 后,Windows 等操作系统 会把硬盘中保存的程序复制到内存中。
技术分享?

5 将指令读入cpu的寄存器

首先寄存器是CPU里的,当然是最快的。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。其主要用途:

  • 1.可将寄存器内的数据执行算术及逻辑运算
  • 2.存于寄存器内的地址可用来指向内存的某个位置,即寻址
  • 3.可以用来读写数据到电脑的周边设备。

技术分享?

6 由cpu中的控制器,运算器,和时钟配合解析运行

计算机每执行一条指令都可分为三个阶段进行。即取指令—–分析指令—–执行指令
  
- 取指令的任务是:根据程序计数器PC中的值从程序存储器读出现行指令,送到指令寄存器。
- 分析指令阶段的任务是:将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。如指令要求操作数,则寻找操作数地址。
  计算机执行程序的过程实际上就是逐条指令地重复上述操作过程,直至遇到停机指令可循环等待指令。
技术分享?

【图解】cpu,内存,硬盘,指令的关系