• invlpg 指令简单介绍


    invlpg 指令简单介绍


                      

    void
    tlb_invalidate(pde_t *pgdir, void *va)
    {
    	// Flush the entry only if we're modifying the current address space.
    	// For now, there is only one address space, so always invalidate.
    	invlpg(va);
    }
    
    遇到这样一段code...然后invlpg是个什么东东

    这是个C的嵌入汇编



    内嵌汇编语法例如以下:

    __asm__(
    汇编语句模板:
    输出部分:
    输入部分:
    破坏描写叙述部分);
    即格式为 asm ( "statements" : output_regs : input_regs : clobbered_regs);


    共四个部分:汇编语句模板,输出部分,输入部分,破坏描写叙述部分,各部分使用“:”格开,汇编语句模板不可缺少,其它三部分可选,假设使用了后面的部分,而前面部分为空,
    也须要用“:”格开,对应部分内容为空。



    这段嵌入式汇编是没有输出的.把addr读入到寄存器中去(这里r指定随意经常使用寄存器),%0则指向addr所在的寄存器



    处理器使用TLBTranslation Lookaside Buffer)来缓存线性地址到物理地址的映射关系。

    实际的地址转换过程中,处理器首先依据线性地址查找TLB,假设未发现该线性地址到物理地址的映射关系(TLB miss)。将依据页表中的映射关系填充TLBTLB fill),然后再进行地址转换。




    tlb_invalidate(pde_t *pgdir, void *va)
    这里函数的目的就是取消va相应物理页之间的关联。相当于刷新TLB。每次我们调整虚拟页和物理页之间的映射关系的时候,我们都要刷新TLB。调用这个函数或invlpg汇编指令

    程序的凝视也讲了

    // Flush the entry only if we're modifying the current address space.
    // For now, there is only one address space, so always invalidate.








  • 相关阅读:
    实现LNMP
    iptabes的用法
    实现LAMP
    实现https
    硬盘信息和磁盘分区管理
    awk
    【BZOJ 2288】 2288: 【POJ Challenge】生日礼物 (贪心+优先队列+双向链表)
    【BZOJ 1150】 1150: [CTSC2007]数据备份Backup (贪心+优先队列+双向链表)
    【BZOJ 1216】 1216: [HNOI2003]操作系统 (模拟+优先队列)
    【BZOJ 1528】 1528: [POI2005]sam-Toy Cars (贪心+堆)
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/6815829.html
Copyright © 2020-2023  润新知