页式存储管理(重点)
基本思路:把物理内存划分为许多固定大小的内存块,称为物理页面;把逻辑地址空间也划分为大小相同的块,称为逻辑页面。当一个用户程序被装入内存时,不是以整个程序为单位,把它存放在一整块连续的区域,而是以页面为单位来进行分配的。对于一个大小为N 的页面程序,需要有N 个空闲的物理页面来把它装载。这些物理页面不一定是要连续的。
在页式存储管理中需要解决三个问题:数据结构、内存分配与回收、地址映射。
数据结构有两个:页表和物理页面表。
A. 页表:给出了任务逻辑页面号和内存中物理页面号之间的对应关系。
B. 物理页面表:描述内存空间中,各个物理页面的使用情况。
具体的例子请参考《教程》317页(博客中画不了图,有兴趣自己看)。
内存的分配过程:
A. 对于一个新来的任务,计算它所需要的页面数N,然后查看位示图,看是否还有N 个空闲的物理页面。
B. 如果有足够的空闲物理页面,就去申请一个页表,其长度为N,并把页表的起始地址填入到该任务的控制块中。
C. 分配N 个空闲的物理页面,把他们的变换填到页表中,建立逻辑页面与物理页面直接的对应关系。
D. 修改位示图,对刚刚被占用的那些物理页面进行标记。
地址映射的基本思路:
A. 逻辑地址分析:对逻辑地址,找到它所在的逻辑页面,以及它在页面内的偏移地址。
B. 页表查找:根据逻辑页面号,从页表中找出它对应的物理页面号。
C. 物理地址合成:根据物理页面号和页内偏移地址,最终确定物理地址。
逻辑地址分析:
页面的大小都是2的整数次幂。对于给定的一个逻辑地址,可以直接把它的高位部分作为逻辑页面号,把它的低位部分作为页内偏移地址。例如,假设页面的大小是4KB,即2的12次幂,逻辑地址为32为,那么在一个逻辑地址当中,最低12位为页内偏移地址,而剩下的20位就是逻辑页面号。
计算方法:
逻辑页面号=逻辑地址/页面大小
页内偏移量=逻辑地址%页面大小
页表查找:
页表作为操作系统的一个数据结构,通常保存在内核的地址空间中。
页表基地址寄存器用来指向页表的起始地址;页表长度寄存器用来指示页表的大小,即对于当前任务,它总共包含有多少个页面。
物理地址合成:
假设物理页面号为f,页内偏移地址为offset,每个页面大小为2n,那么相应的物理地址为:f×2n+offset。
2017年下半年辽宁计算机软件水平考试报名入口
[考试动态]2017年8月9日辽宁考区2017年下半年全国计算机软件水平考试考试简章
[考试动态]2017年8月9日计算机软考网络管理员考试题及答案汇总(21套)
[网络管理员]2017年2月8日计算机软件水平考试网络工程师试卷及答案汇总(17套)
[网络工程师]2017年1月31日2016年下半年软件水平考试成绩查询入口已开通
[考试动态]2017年1月3日