逻辑地址和绝对地址

绝地地址:主存储器以字节为编址单位,容量为n的主存储器中,每个单元有唯一的编号,从0到n-1这个唯一的编号就是主存储器的物理地址。
逻辑地址:在多道程序设计地址中,操作系统为了方便用户,就允许每个用户都认为自己的作业程序和数据都是存放在地址是0开始的连续地址空间中。这样用户程序中使用的地址就是逻辑地址。

重定位(地址转换)

为了保证作业的连续执行,必须根据分配给作业的主存空间对作业中的指令和数据的存放地址进行转换,这种把相对地址转化成绝对地址的工作成为重定位或者是地址转换。重定位的方式有静态重定位和动态重定位方式。

①静态重定位:在装入一个作业时,将一个作业中的指令地址和数据地址全部转换成绝对地址,这种转换工作是在作业开始前集中完成的。在作业执行过程中无需执行地址转换
②动态重定位:在装入一个作业时,不进行地址转换,而是把作业装到分配的主区域中。在作业的执行过程中,每当执行一条指令时都由硬件的地址转化机构转换成绝对地址,这种方式的地址转换工作是在作业执行时动态完成的。动态重定向由操作系统和硬件的地址转化机相互配合来实现。动态重定向的系统支持程序浮动,而静态重定向不能。

固定分区存储管理的原理

固定分区的意思是指主存空间划分成若干连续区后,这些分区的大小和个数固定不变。固定分区管理利用一张“主存分配表” 来说明各分区的情况。装入和结束作业均通过这个分区表来记录分区的使用变化。

存储保护的目的,如何实现存储保护

为了实现存储保护,处理器设置了一对寄存器,即”下限寄存器“和”上限寄存器“,当一个已经装入主存储器的作业得到处理器运行时,进程调度应记录当前运行作业所在的分区号,且把该分区的下限地址和上线地址分别送入下限寄存器和上线寄存器,处理器执行作业时,对每条指令中的地址都要核对,满足下限地址≤绝对地址≤上限地址,如果不成立,则为了防止破坏其他分区的信息,硬件产生地址越界中断事件,停止该指令,达到存储保护的目的。

提高主存空间的利用率的方法

①分区按照大小顺序排列,这样能使作业总是先满足要求最小分区。
②按照经常出现的作业大小和频率划分分区
③按照作业对主存空间的需求量排成多个队列,规定队列与分区的对应关系。也就是多大的作业只能放在多大的分区里面,就算有更大的分区空着,也不许进入。

主存的分配与回收

在系统初始化时,主存除了操作系统所占部分外,整个用户区是一个大的空闲区,可以按照作业需要的空间大小顺序分配空闲空间直到不够为止。当作业结束时,它所占用的分区被回收。这个空闲区又可以根据新作业的大小重新由于分配,所以主存中已占分区和空闲区的数目的大小是在 变化的。可以在两张已分配表和空闲区表来记录和管理。

常用的分配算法

最先适配分配算法:简单的说,就是在分区表中顺序查找,找到够大的空闲区分配,但是这样的分配算可能形成许多不连续的空闲区,造成许多碎片,使空间使用率降低。
最优适应分配算法:这种算法总是挑选一个能满足作业要求的最小空闲区,但是这种算法肯能形成一些极小的空闲区,以致装入大作业时无法使用,会影响主存的使用率。
最坏适应分配算法:这种算法和上面的算法刚好相反,它总是挑一个最大的空闲区分给作业使用,使剩下的空间不至于太小。

地址转换和存储保护

采用可变分区管理时,一般采用动态重定位方式装入作业,也就是每读一条指令,都要变化一次地址,变换要靠硬件支持,主要是两个寄存器:基址寄存器和限长寄存器,限长寄存器存放作业所占分区的长度,基址寄存器则存放作业所占分区的起始位置,这两个值确定了一个分区的位置和大小。转换时根据逻辑地址与限长地址比较,如果没有超过,这个值,表示访问地址合法,再加上基址寄存器中的值,就得到了绝对地址,否则形成”地址越界“的中断,达到存储保护的目的。对于共享程序,则硬件提供两组限长寄存器和基址寄存器,访问时对访问共享区和作业的地址分别进行转换。

作业的移动

移动技术要”移动”的是主存空间中的作业,把某个作业移动到另一处的主存空间去(磁盘处理中应用的也是类似的移动技术),这样最大的好处就是合并一些空闲区。但是移动会增加系统的开销,所以尽量少移动,如果作业正在执行的过程中,正等待外围设备传输信息,就不能移动。

虚拟存储器

虚拟存储器为了扩大主存容量而采取的一种设计手段,它利用作业在只装入部分信息时可以执行的特点,和程序执行中表现出来的的局部特性,借助于大容量的辅助存储器实现小主存空间容纳大逻辑地址空间的作业。

虚拟存储器的实现原理

首先把作业信息保留在磁盘上,当作业请求装入时,只将其中一部分装入主存,作业执行中,若要访问信息不再主存中,则再设法将这些信息装入主存。

分页式虚拟存储器的实现

页式虚拟存储管理器是在页式存储管理的基础上实现的,首先把作业信息作为副本存放到磁盘上,作业执行时,将作业的部分信息装入主存储器,作业执行时,若所访问的页面已经在主存中,则进行地址转换,得到绝对地址,否则产生“缺页中断”,由操作系统将所缺的页面加载到主存。

常见的页面调度算法

当主页中无空闲块时,为了装入一个页面,就必须按照某种算法将主存中的某个页面调出,调入所需装入的页面,这就是页面调度,常用的算法有:先进先出算法(FIFO),最近最久未使用算法(LRU),和最近最不常用的调度算法(LFU)。