CPU,内存,磁盘,指令以及它们之间的关系
一、Cpu:
cpu是central process unit的简称,是计算机的核心处理器。Cpu的作用是运行机器语言指令。高级语言和汇编语言程序被编译成cpu能理解的机器语言后,存入到内存中,cpu就会从内存中读取并执行这些指令序列,完成程序功能。
包括控制器、寄存器、运算器、时钟四个部分组成。
其中运算器是用来计算的,
寄存器是临时存放中间数据以及指令的,包括程序计数器、指令寄存器、数据寄存器、地址寄存器等。 寄存器是汇编语言所研究的对象,汇编语言通过对寄存器的控制(写入,读出,加),实现功能。eg:
第一句——对象:eax寄存器;动作:mov;目的地:内存(dword);具体地址:ebp寄存器中存储的地址。
第二句——对象eax寄存器;动作:add;参数:内存中的数;具体地址:ebp寄存器中存储的地址。
第三句——对象:eax寄存器;动作:mov;目的地:内存(dword);具体地址:ebp寄存器中存储的地址。
程序计数器的作用是指定当前执行指令的地址。通过改变程序计数器,可以实现程序的逻辑控制。但是,虽然通过改变程序计数器的值可以实现程序跳转,但是单纯通过改变程序计数器的值却无法实现函数调用。因为跳转不需要回来,而函数调用结束之后还要回到原指令的下一条指令。为了实现函数调用,需要将程序计数器与call/return指令结合使用。也就是说,在函数调用时,在改变程序计数器值的同时,还要调用call指令,将返回位置写入栈内存中还需要在被调用函数的末尾添加return指令,这样在被调用函数执行结束后会继续执行return指令,return指令会将程序计数器的值设置为栈的最上边的值,也就是函数调用的返回地址。
程序计数器和内存的关系:程序计数器记录了当前执行的指令在内存中年存储的位置。
控制器是用来控制何时将内存的数据及指令读入寄存器,何时将寄存器中的值输出到内存。
时钟是同步各个部件之间的步调。
二、内存:
内存又叫主存,与cpu的寄存器链接,用于将数据以及指令输入到寄存器中;同时也可以接受寄存器的输出。本质是作为磁盘与寄存器的中间件,起到缓冲作用。断电后会丢失所有数据。
内存和磁盘的关系:由于磁盘的读写速度与cpu相差太大,如果cpu直接从磁盘中读取数据,会造成cpu计算能力极大的浪费。为了解决这个问题,在磁盘与cpu之间加一个内存,将磁盘存储的程序以及数据线读入内存中,cpu直接与内存打交道。此外,由于内存的空间比磁盘小很多,会出现内存不够用的情况,此时,会将一部分磁盘当做内存来使用,也就是虚拟内存。
三、磁盘:
存放数据的,容量比内存大,速度慢。
断电不会丢失数据。
四、指令:
指令是控制cpu按照一定功能运算的机器码。每一种cpu有自己的一套指令集。高级语言编写的程序最终也要编译成可以让cpu理解的一条条机器指令,才能被cpu执行。Cpu除了可以计算数据以外,还可以控制硬件,方法是通过cpu寄存器与I/O端口进行数据交换。计算机中主机与外围硬件的链接方式是通过I/O端口进行的(端口是用于主机寄存器与外围设备交换数据时临时存储数据的寄存器)。所以,指令通过控制cpu的输出和输入位置,可以让cpu寄存器向I/O端口寄存器发送数据,外围设备通过与I/O寄存器交换数据,从而达到控制外围设备的效果。而操作系统的作用是封装一套指令序列,cpu通过执行这套指令序列,可以让硬件完成一系列动作。而应用程序如果需要对硬件进行操作,只需要将操作系统的这套指令序列复制到自己的程序中即可。复制这套指令的方式就是API。从这个角度来看,操作系统就是封装了控制硬件完成一系列动作的指令序列的集合,这套集合提供给应用程序以及计算机的使用者。从而达到了将人、应用程序与硬件隔离的效果。
五、它们之间的关系
可执行程序(也就是机器码序列)首先从磁盘中被读入到内存中,然后内存中的程序会被一条一条的读到指令寄存器中被执行。