3.2 分页存储管理机制(由固定分区存储演化而来)
- 逻辑页面和物理页框
- 分页存储的管理表格
- 分页存储的地址转换 (*)
- 相联存储于快表技术
- 物理页框的分配流程
一、逻辑页面和物理页框
(1)逻辑页面:
逻辑页面是指进程的逻辑地址空间按照固定的大小分的若干页面;
不足一页的补齐为一页,依序从$0$、 $1$、.... 编号;
例如:
假设一个逻辑页面是$4kb$,某一进程大小是$15kb$;
则该进程会被分为$4kb、4kb、4kb、3kb$(四个页面,最后一个页面不够$4kb$,可以通过补0的方式填充为$4kb$)
一个进程可能被切分成若干个逻辑页面,这就需要对逻辑地址空间编址;
假设系统用$32$个$bit$来表示逻辑地址,对这些$bit$位划分,第12 ~ 31位$bit$来表示页号,第0 ~ 11位$bit$来表示页内地址(正好$4kb$);
例如:
第三页的第三个地址就可以表示为:
$0000 0000 0000 0000 0011 0000 0000 0011$
($0000 0000 0000 0000 0011$为页号,$0000 0000 0011$为页内地址)
(2)物理页框
同样,我们要对内存空间进行划分,内存空间被划分为大小相等的若干存储区,每个存储区被称为页框,从0开始编号;
同样的,我们也要对物理页框进行编址;
我们也可用高位$bit$来表示页框号,低位$bit$来表示页内地址;
页框和逻辑页面的大小是对应的,一个页框可以正好装下一个逻辑页面,一个逻辑页面可以正好放进页框中;
二、分页存储的管理表格
分页存储需要用到多个管理表格;
(1)页表
每一个进程都需要一张页表,如图:
该进程需要$7$个逻辑地址空间,编号为$0 ~ 6$;
这七个逻辑页面在内存中存放的时候,可以不连续存放;(原本连续的进程,在内存中离散的存放,但在一个页面内还是连续的)
由于是离散的存储,如何找到逻辑页面就是关键,主要依赖页表来查找;
页表建立了逻辑页面和物理页框之间的对应关系;
页表就像一个指针一样会指向内存中的一个页框;
通过查找页表就可以知道哪个逻辑页面在哪个页框之中;
在系统中,每一个进程都有一张页表,每一张页表都给出了进程的逻辑页面号和页框的对应关系;
页表本身放在内存,属于进程的现场信息(要放在$PCB$中);
页表在进程装入内存时,根据内存分配情况建立的;
(2)请求表
请求表管理每个进程的页表的起始地址和长度;
请求表整个系统只有一张;(请求表用来管理所有页表)
页表始址是页表在内存中的位置;
(3)存储页面表
整个系统也只有一张,用于指出内存中各页框是否已经被分配出去以及空闲页面的总数;(管理页框的表格)
存储页面表的构成方式: 位示图和空闲页面链表;
位示图:(很像是邻接矩阵)
在内存中划分一块固定存储区域,每个比特代表一个页框。
如果已被分配,则对应比特位置$1$,否则置$0$。
(空闲页面链表不做介绍)
三、分页存储的地址转换 (逻辑地址转换为物理地址)
图示说明:
当一个进程被调度执行的时候,系统首先会根据请求表求得该进程页表在内存中的位置。
找到位置之后,将页表地址和页表长度放入页表控制寄存器中,然后系统会将进程的逻辑地址和页表控制寄存器中的值进行比对。
如果比对出错,系统返回地址越界错误;
(例如:设该进程有$7$个逻辑页面,则其页号范围是0 ~ 6,若比对得逻辑地址的页号大于$6$,则系统报错退出)
如果不对结果不出错,则根据页表寄存器中的值找到目标页表,再根据页表中的值寻找对应页框,最后将页框号和页内地址相互拼接,得到物理地址;
(之所以能够拼接,是因为虽然页框之间可以是不连续的,但是页面内部是连续存放于页框之中的,所以页内地址是不变的)
四、相联存储与快表技术
(1)相联存储和快表:
出现原因:主要是因为相对CPU来说,对内存的访问速度太慢了;
因此需要在$CPU$和内存之间设置一个高速缓冲存储器,CPU对高速缓冲存储器的访问速度比对内存访问快,根据程序的局部性原理,可以实现CPU对内存和高速缓冲存储器的联合使用。
相联存储就是在$MMU$中设置的专用的高速缓冲存储器,在这个高速缓冲存储器中存放了一个叫快表的表格。
快表是相联存储器中存放的最近访问的部分页表,这样$CPU$要找相应内容时,可以先在高速缓冲存储器中寻找,而不是先去内存中寻找;
(程序局部性原理,最近访问的部分内容将来再次被访问的概率很高)
这样减少了$CPU$和内存的交互次数,转变为和高速缓冲存储器交互,从而提高$CPU$访问速度;
(2)地址转换
有了快表之后,地址转换就变为了如下流程:(不需要对内存操作了)
-
地址变换机构自动将页号与快表中的页号比较;
-
快表存在所要访问的页表项,直接读出对应的页框号;
-
快表中未找到对应的页表项,则访问内存中的页表;
-
同时将此页表项存入快表中,修改快表;
-
若快表已满,则系统需换出某些页表项;
五、物理页框的分配流程
流程如图示:
-
计算所需要的页框数$n$
-
查位示图,是否有$n$个空闲页框
-
如果有足够的空闲页框,则页表长度设为$n$,填入$PCB$中
-
申请页表区,把页表始址填入请求表
-
分配$n$个空闲页框,将页框号和页号填入页表
-
修改位示图
操作系统学习笔记好像没目录哇
确实,OS的目录之前没来得及写,最近一定找时间弄出来
五秒前
哈哈好快^_^
下周学完数据结构就开计组,紧跟大佬步伐
加油加油