全知识整理目录
操作系统整理的目录,包括了整理的所有操作系统的知识。
目录
概述
什么是内存?
由于CPU与硬盘的速度极不匹配,所以设计了内存,即CPU拿数据,只能去内存中拿。
存储单元
什么是存储单元?为什么要有?
存储单元是内存上的一个个有编号的块,每个块当中就方有数据。
在多道批处理系统当中,并发执行的程序很多,那么怎么快速的找到各自需要的数据,就是根据存储单元的编号来找的。(从0开始,占1B)。
指令的执行过程
指令编译之后,就会根据操作指令(例如数据传输指令,加法指令),存取数据,进行操作。
然后代码翻译成CPU能够识别的指令,这些指令会告诉CPU,需要去哪里找数据。但是在实际的操作当中往往不知道指令的具体存放位置,所以一般指令使用的是相对地址(逻辑地址)。
相对地址(逻辑地址)绝对地址(物理地址)
相对地址就好比,一个班的班级号,而绝对地址就是每个人的学号。
例如班级号是211161(相对地址),而这个班级有30个人那么就是211161(1-30)(绝对地址)。
指令就是采用的相对地址的思想,因为在指令寻找数据的时候,首先关注的是寻找指令的相对地址,在相对地址当中再寻找绝对地址。
程序运行过程
编译:就是把高级语言翻译成,计算机能读懂的机器语言。
链接:将编译后形成的目标模块,和需要的函数库链接在一起,形成一个完整的装入模块。
装入:装入模块被装入程序装入模块中运行。
链接的三种方式
静态链接
在程序运行之前,就先将其所需要的函数库,与目标模块连接成一个完整的可执行文件(装入模块),之后也不会拆开。
装入时动态链接
将各个目标模块装入内存时,边装入边链接。
运行时动态链接
在需要该模块运行的时候,再进行链接,优点是便于更新和修改。
装入的三种方式
绝对装入
在编译的时候,如果程序知道具体放在那个位置(绝对地址),编译程序将会产生绝对地址代码,那么装入程序就会按照装入模块中的地址,将程序和数据装入内存。
可用看见绝对装入是需要绝对地址的,这在多道处理系统中常常是不能拿到的,所以绝对装入只适合于单批道处理系统。
静态重定位
又称可定位装入,编译装入后的模块地址都是从0开始的,就是相对于起始地址的逻辑地址。到装入的时候可用根据当前内存的使用情况,来一次性寻找到合适的位置,将逻辑地址变为物理地址。
特点:必须一次性分配装入所需要的全部内存,不够则不能装入。装入内存之后,也不能够随便的更改移动。
动态重定位
又称动态运行时装入,这种方式和静态重定位装入的区别就是,动态重定位装入,并不会在装入的时候就将逻辑地址转变为绝对地址,而是在程序真正运行的时候才会转化为绝对地址。
特点:由于是在运行是才转化为绝对地址,需要一个重定位寄存器来存储地址。