页式存储管理和段式存储管理(学习笔记)

页式管理

从页式管理开始,到之后的段式管理,都与之前的分区管理不同,最大的区别就在于一个是分区管理是连续存储,二这两种方式可以非连续。

实现原理

首先是必要概念:

物理块:将物理存储空间划分为大小相等的若干存储块,每块大小为2的整数次幂,总大小在4KB-1GB之间。

页面:将进程的逻辑地址空间划分成的与物理块大小相同的若干片。

页表:存放于主存中,记录进程的逻辑页与主存中的物理块的对应关系,实现从页号到物理块号的地址映射,每一页对应一个表目,页表的长度和页表的主存起始地址存放于PCB中。

在进程分配内存时,以块为单位,将进程的多个页分别装入可以不连续的块中,逻辑地址空间占用m位,每一页大小为2的n次方个地址单元,所以页内位移号占用n个单位,剩下m-n个位表示页号。用页号去页表中寻找对应的项,由此找到物理块号,再加上本身带的页内偏移量,就可以得到物理地址。

动态地址变换

页式存储管理和段式存储管理(学习笔记)上图为基础地址变换的图示,首先强调的是页式存储管理的逻辑地址是一维的,和段式存储管理的二维不一样,尽管有页号与页内地址两个量,但是这个分离是由硬件做的,一开始是在一起的,而段式存储管理中,地址分离是我们来做的。

因为分离是由硬件做好的,所以比较只用进行第一次,块的大小都是相同的,硬件分离好滞后不用担心页内地址越界,这个过程*要访问两次主存,一次查表,一次找块,虽然看起来只有两次,但是这种查找行为在系统中多不胜数,所以我们要想办法优化。只是最后一次的找块是不可能取消的,所以我们只能从前一次的查表出发,这就是快表的引入。

快表

为了提高存储速度,在地址变换机构中设置的具有并行查找能力的专用高速缓冲寄存器组(32~1024个寄存器),用来存放页表的一部分,也就是页表的子集。
页式存储管理和段式存储管理(学习笔记)上图是快表的结构,前两项与页表一致,访问位表示最近此项是否被访问,是就置1,状态位表示寄存器是否被占用,是就置1。
页式存储管理和段式存储管理(学习笔记)这是加入了快表的变换过程,可以看到,在查表的过程中添加了一个快表的查找部分,要知道的是,快表的查找是并行的,当查快表成功时,就仅仅只用访问一次主存,不用再查页表,而失败时,就继续查找快表,再到主存中,成功找到物理块后,要向快表中写入新项,因为快表是有限的,如果已经占满,就找到状态为为0的写入,如果没有,就找到访问位为0的写入,写入后将后两项置1。

多级页表

当页表过大时,由于页表是连续存储,就会导致页表也需要一个连续的较大物理地址空间存储页表。
而解决方法就是将页表再分页。
页式存储管理和段式存储管理(学习笔记)页式存储管理和段式存储管理(学习笔记)
如上图为一种示例,就是将整个页表分开,再用页去存储,可以理解为,外页表是子页表的索引。

还可以用哈希表来解决这个问题,以逻辑页号作为哈希值,在此不做赘述。

页式管理的主存分配

存储分块表
页式存储管理和段式存储管理(学习笔记)第一项记录空闲块总数,第二项是指向第一个空闲块的指针。

分配过程:首先检查是否能满足要求,如果不能,则等待,如果可以满足,第一项减去本次分配块数,第二项找到所需块,并建立页表,修改第二项指针。

回收过程:将占用的主存归还系统,并修改存储分配表中有关各项。

位示图
使用一个位向量磁盘中的每个块占用其中一位,0代表空闲块,1为占用快。
页式存储管理和段式存储管理(学习笔记)过程与第一种方式类似,不做赘述。

页式管理的保护

越界保护
页号与页表长度进行比较。
访问保护
在页表中为每个物理块设置保护位,表示有效或无效。

页式管理的共享

页式存储管理和段式存储管理(学习笔记)如图,对于一些可重代码段,并不需要多次申请物理块,而是可以重复使用,图中ed 1、2、3都是刚好占满了三个页,也就是三个物理块,所以可以重用,此时三个程序一共用了7个物理块,但是如果未占满物理块,例如ed3和data的一部分在一个块内,那么这部分不能被重用,所以就变成了2*3+2=8个物理块。

段式管理

实现原理

满足用户(程序员)在编程和使用上的要求,逻辑地址由段名和段内偏移决定,程序和数据的共享以信息的逻辑单位为基础。
按照程序自身的逻辑关系将地址空间划分为若*分,每个段都有自己的名字,每个段都占用从0开始的连续空间。
段表
记录进程分段与物理空间的对应关系,实现地址映射;每个分段一个表目,指出在主存中的起始地址和段长;段表的主存起始地址和段表长度也存在PCB中。

地址变换

页式存储管理和段式存储管理(学习笔记)如上图,第一步与页式管理类似,也是先对比段号和段表长度的关系,如果段号大于等于段表长度,产生段号越界;之后的步骤也差不多,不同的地方在于,段式管理要检查地址越界问题,在页式管理中,因为地址的分离由硬件实现,所以不存在地址越界问题,但是段式管理需要。

存储保护

第一级和第二级保护已经在地址变换中写出来了,也就是段号越界保护和段内地址越界保护;第三级保护则是对段设置操作权限所进行保护。

段式管理的共享

页式存储管理和段式存储管理(学习笔记)段式管理的共享也比页式管理好了一些,因为是按逻辑关系分配的长度,并不是等长,所以同样的可重用逻辑段可以共享,也就是重复利用,方式与页类似。

段式管理的主存分配

与可变式分区类似,区别在于可变式分区管理分配单位为进程,而段式管理的分配单位为段。

段式管理与页式管理的比较

段是信息的逻辑单位,根据用户的需求划分;页是信息的物理单位,它为了方便管理而划分。
段式管理为二维地址空间;页式管理为一维地址空间。
页的大小固定不变;段的大小可变。
页式管理存在内部碎片,消除了外部碎片;段式管理存在外部碎片,消除了内部碎片。
段式管理和页式管理都需要在作业运行前将信息全部装入主存。

引申——段页式管理简单介绍

结合分段管理和分页管理,将程序先分成若干个段,再分成若干个页,段内地址有三部分,段号、页号、页内位移。