美文网首页
磁盘内存CPU

磁盘内存CPU

作者: 大胡子_biu | 来源:发表于2017-02-24 14:25 被阅读0次

    本文是看完《程序是如何跑起来的》相关章节后写的笔记,主要讲磁盘,内存,CPU和之间相互关系。

    1程序的执行过程

    程序执行的过程:程序员编写代码,代码编译成可执行的EXE文件,内存中生成EXE文件的副本,CPU对副本解释并执行。

    程序从磁盘进入到内存再进入到CPU中解释执行。

    也就是最终CPU解释并执行编译后的程序内容,CPU将程序内容分为两个部分对待,数据和指令。

    2 CPU

    2.1 CPU组成及组成部分简介

    CPU由四个部分构成,寄存器,控制器,运算器和时钟。

    寄存器用来暂存指令和数据。

    控制器负责将内存的中的指令和数据读入寄存器。

    运算器负责运算寄存器中的数据。

    时钟用来计时。

    2.2 CPU处理顺序

    根据时钟信号,控制器从内存中读取数据和指令,通过对指令的解释和执行,运算器对数据进行运算,控制器根据结果控制计算机,控制主要包括内存和磁盘的输入输出,键盘和鼠标的输入,显示器和打印机的输出等。

    四个部分中,对程序员来说最重要的是寄存器,因为寄存器在程序中以对象的形式存在。

    2.1.1寄存器

    寄存器大致分为八类:

    累加寄存器:存储执行运算的数据和运算后的数据。

    标志寄存器:存储运算处理后的CPU的状态。

    程序计数器:存储下一条指令所在的内存地址。

    基址寄存器:存储内存起始地址。

    变址寄存器:存储机制寄存器的相对地址。

    通用寄存器:存储任意数据。

    指令寄存器:存储指令,CPU内部使用,程序员无法通过程序对这个寄存器进行读写操作。

    栈寄存器:存储栈区域的起始地址。

    基址寄存器,变址寄存器和通用寄存器一般多个,其他一般只有一个。

    一般程序运行

    条件分支运行

    标志寄存器的作用:当比较a和b的大小时,用a-b,结果正负零存放到标志寄存器中。

    函数调用时会调用call指令,在执行0132对应的0260函数之前,会先将0154的地址存放到栈的主存内。函数执行完后调用return,return将存放到主存的地址放到程序计数器中,这样就继续执行下一条指令了。

    跳转实际就是将地址存放到程序计数器中。

    Call:存放下一条指令地址到栈的主存,将函数的入口地址存放到程序计数器。

    Return:读取存放的地址,继续执行原函数。

    2.3机器语言的指令的主要类型:

    数据转送指令:寄存器和内存,内存和内存,寄存器和外围设备的读写操作。

    运算指令:用累加寄存器执行算术运算,逻辑运算,比较运算和位移运算。

    跳转指令:实现条件分支,循环和强制跳转。

    Call/return指令:函数的调用/返回调用前的下一条指令。

    2内存

    2.1内存简介

    内存和磁盘都是计算机存储数据的部分。

    内存是电流驱动的,磁盘是磁效应驱动的,内存读取比磁盘稍快。

    内存在断电后数据不再存在,磁盘在断电后数据仍可以保存。

    2.2内存组成

    内存的功能主要由引脚实现,引脚分为电源,地址信号,数据信号,控制信号。

    下图是内存的示意图

    VCC和GND是电源信号正负极。RD和WR的read读取和write输入信号。A0-A9是Address地址信号。D0-D7是Data信号。

    由于信号只有0或1两种情况,通过排列组合,地址信号共可以表示1024个地址,数据信号则是8位数据,表示一次性可以读写8位数据(1字节)。

    地址是存放数据的地方,每次读写向一个地方读写一字节数据,所以至多内存中只能存放1024个地址*1字节=1024字节的数据。就是1KB。

    一个这么大的内存单位看做一个内存IC,实际应用中,一个内存IC存在的引脚要更多,一个512MB的内存需要数个内存IC。

    读取数据时,首先将RD信号设为1,然后设置A0-A9的数值为某值address,这样就会把内存中address地址下的数据读取到D0-D7中。

    输入数据时,首先将WR信号设为1,然后设置A0-A9的数值位某值address,这样就会定位到address,然后内存会将D0-D7的数据输入到指定地址中。

    输入输出都是相对于内存来说的,内存中存放的通常是变量等数据,那么外界就一般是硬盘文件等。

    由于每个地址中只能存放一个字节的数据,大多数数据类型的大小都是大于一字节的,因此通过设置数据类型,可以在指定的地址和长度下查询数据。

    3磁盘

    程序运行顺序是保存在磁盘中,内存从磁盘中读取,在CPU中解析执行。

    磁盘缓存:将数据从磁盘中读取到内存中,这样之后再读取只需要从内存中获取即可,加快了读取数据的速度。网络图片缓存到本地也和这个类似。

    磁盘划分空间通过扇区方式划分,将磁盘划分为一个一个同心圆的区域是磁道。把磁道按照固定大小(能存储的数据大小相同)划分开的部分就是扇区。

    假设操场是不是椭圆的。磁道就是操场的跑道,同心圆就是操场的划分的白线,每隔一百米画一块区域,这个区域就是扇区。

    扇区是对磁盘读写的最小单位,一般windows使用的一个扇区是512字节,但是windows使用时的单位是簇,簇是扇区的整数倍,一簇可以是一个扇区,也可以是多个扇区,磁盘容量越大,簇就越大。

    不同的文件不能存在同一个簇中。不然就会导致文件无法删除。不管多小的文件,都会至少占用一簇的空间,文件的占地大小一定是簇的整数倍。

    相关文章

      网友评论

          本文标题:磁盘内存CPU

          本文链接:https://www.haomeiwen.com/subject/zorwwttx.html