PTE和Windows缺页异常

Posted bcbobo21cn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PTE和Windows缺页异常相关的知识,希望对你有一定的参考价值。

页错误定义


    当cpu执行进程的某个页面时,发现他要访问的页(虚拟地址的页)没有在物理内存中,而导致的中断(页错误)。
    (一个可执行文件可能很大,放在磁盘上,由局部性原理一次只将其中一部分读进内存)
    百度定义:指的是当软件试图访问已映射在虚拟地址空间中,但是目前并未被加载在物理内存中的一个分页时,由中央处理器的内存管理单元所发出的中断。
    这个页错误定义应该就是缺页异常;

当CPU访问一个地址,其PTE的P位(页面有效位)为0,此时会产生缺页异常;
在windows中,缺页异常是时刻在发生的;

什么是PTE


    PTE:二级页表中的表项,记录着每个虚拟页面的映射情况以及其他信息,又叫“映射描述符”;
    页目录又叫一级页表、总页表,一个PDE数组,这个数组的大小刚好占据一个页面;
    二级页表:一个PTE数组,这个数组的大小也刚好占据一个页面(进程有一个总页表+1024个二级页表);

    PTE结构如下,一共有32位;
        0: P位;
        1:R/W位;
        2:U/S位;
        3:PWT位;
        4:PCD位;
        5:A位;
        6:D位;
        7:PAT位;
        8:G位;
        9到11:有效位;
        12到31:页表基址;

以上是关于PTE和Windows缺页异常的主要内容,如果未能解决你的问题,请参考以下文章

linux源码解析09–缺页异常之文件映射

14.PTD与的基址

虚拟内存(Virtual Memory)

缺页中断和缺页异常

linux源码解析11–缺页异常之swap缺页异常

缺页异常详解