请求分页思想介绍及缺页率测试.doc
文本预览下载声明
请求分页思想介绍及缺页率测试
基础知识
1.1 请求分页存储管理的基本方法
(1)逻辑空间分页将一个进程的逻辑地址空间划分成若干个大小相等的部分,每一部分称作页面或页。每页都有一个编号,叫做页号,页号从0开始依次编排,如0、1、2...
(2)内存空间分页把内存也划分成与页面相同大小的若干个存储块,称作内存块或内存页面。同样,它们也进行编号,内存块号从0开始依次顺序排列:0#块、1#块、2#块页面和内存块的大小是由硬件确定的,它一般选择为2的若干次幂。不同机器中页面大小是有区别的。在x86平台上的Linux系统的页面大小为4KB。
(3)逻辑地址表示地址由两个部分组成,前一部分表示该地址所在页面的页号p;后一部分表示页内位移d,即页内地址。两部分构成的地址长度为32位,其中0~11为页内位移,即每页的大小为4KB;12~31位为页号,表示地址空间中最多可容纳1M个页面。
(4)内存分配原则在分页情况下,系统以内存块为单位把内存分给作业或进程,并且一个进程的若干页可分别装入物理上不相邻的内存块中。
(5)页表在分页系统中允许将作业或进程的各页面离散地装入内存的任何空闲块中,这样一来就出现作业的页号连续、而块号不连续的情况。怎样找到每个页面在内存中对应的物理块呢?为此,系统又为每个进程设立一张页面映像表,简称页表。
请求分页思想
在简单分页系统中,要求运行的进程必须全部装入内存。请求分页存储管理技术与简单分页技术的根本区别在于:请求分页提供虚拟存储器。它的基本思想是:当要执行一个程序时才把它换入内存。但并不把全部程序都换入内存,而是用到哪一页时才换入它。这样就减少了对换时间和所需内存数量,允许增加程序的道数。
当一个程序要使用的页面不在内存时,地址映像机构便产生一个缺页中断。操作系统必须处理这个中断,它装入所要求的页面并相应调整页表的记录(每一个页表项中增加一个状态位表示该页对应的内存块是否可以访问)。由于这个页面是根据请求而被装入的,所以这种存储管理方法叫做请求分页存储管理。通常在进程最初投入运行时,仅把它的前几页装入内存,其他各页是按照请求顺序动态装入的,这保证用不到的页面不会被装入。
虚拟存储器(Virtual Memory):在具有层次结构存储器的计算机系统中,自动实现部分装入和部分替换功能,能从逻辑上为用户提供一个比物理贮存容量大得多,可寻址的“主存储器”。虚拟存储区的容量与物理主存大小无关,而受限于计算机的地址结构和可用磁盘容量。
硬件支持及缺页处理为了实现请求分页,系统必须提供一定的硬件支持:除了需要一定容量的内存和外存,以及支持分页机制外,还需要有页表机制、缺页中断机构以及地址转换机构。
页表机制
分页系统中地址映射是通过页表实现的。在请求分页系统中,页表项不仅要包含该页在内存的基址,还要含有:(1)页表的每一项增加一个状态位,用来指示该页面是否在内存中。(2)页表项中还要记载该页面在外存的地址(又称文件地址),以便在发生缺页情况下,操作系统能很快地在外存上找到该页面,换入内存。(3)在页表中还要增加一些位,用于记录该页的使用情况(如最近被引用过没有,该页的内容在内存中修改过没有等),帮助操作系统做出页面替换的决定。
因此,页表的一个表项在逻辑上可包含以下数据项:????? 页号 | 内存块号 | 改变位 | 状态位 | 引用位 | 外存地址其中,改变位=1,表示该页已被修改过;引用位用来指示最近对该页访问过没有。
缺页中断机构
在硬件方面,还要增加对缺页中断进行响应的机构。一旦发现所访问的页面不在内存,能立即产生中断信号,随后转入缺页中断处理程序进行相应处理。缺页中断的处理过程是由硬件和软件共同实现的。
/studyarea/item/2eddfb78cfe09b3e7144231e
/lby978232/article/details/8743072
/view/51844.htm )
实验过程
2.1 使用FIFO页面调度算法
2.1.1 代码
/************************fifo.c****************************/
#includestdio.h
#includestdlib.h
#include time.h
#define pagenum 4
//判断是否在页面中
int getit(int page[],int k)
{
int i,tem;
tem=k/10;
for(i=0;ipagenum;i++)
{
if(page[i]==tem)
return 1;
}
return 0;
}
int main()
{
int i,a[320],count=0;
//页面标志
int point=0;
显示全部