TLB的刷新方式--linux 2.4

TLB刷新的时机(i386)

struct tlb_state cpu_tlbstate[NR_CPUS] = {[0...NR_CPUS-1] = {&init_mm, 0}};

一般情况各个CPU的cpu_tblstate的state设置成TLBSTATE_OK,表示如果正在使用中的页面目录或页面表内容发生了变化就要刷新TLB的内容。

  • 与vmalloc有关
  • 与HIGHMEM映射有关
  • 与外设总线(例如PCI)有关的映射

TLBSTATE_OK 相对的是TLBSTATE_LAZY

在__exit_mm()和schedule()中会设置TLBSTATE_LAZY。

TLB刷新的方式(i386)

对TLB的刷新(其实是废弃当前TLB中的内容)可以是针对整个TLB的,也可以是针对一个具体页面相关的TLB的刷新。

  • 对于整个TLB的刷新,直接读出CR3控制器后再写回;
  • 对于一个具体页面相关的TLB的刷新,使用invlpg命令实现。

对整个TLB的冲刷由local_flush_tlb()进行;而废弃某个页面的相关的TLB,则由__flush_tlb_one()完成。

相关推荐
CYRUS_STUDIO15 小时前
用 Frida 控制 Android 线程:kill 命令、挂起与恢复全解析
android·linux·逆向
熊猫李16 小时前
rootfs-根文件系统详解
linux
dessler19 小时前
Hadoop HDFS-高可用集群部署
linux·运维·hdfs
泽泽爱旅行19 小时前
awk 语法解析-前端学习
linux·前端
轻松Ai享生活2 天前
5 节课深入学习Linux Cgroups
linux
christine-rr2 天前
linux常用命令(4)——压缩命令
linux·服务器·redis
三坛海会大神5552 天前
LVS与Keepalived详解(二)LVS负载均衡实现实操
linux·负载均衡·lvs
東雪蓮☆2 天前
深入理解 LVS-DR 模式与 Keepalived 高可用集群
linux·运维·服务器·lvs
乌萨奇也要立志学C++2 天前
【Linux】进程概念(二):进程查看与 fork 初探
linux·运维·服务器
獭.獭.2 天前
Linux -- 信号【上】
linux·运维·服务器