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()完成。

相关推荐
CQU_JIAKE6 小时前
4.17[Q]
java·linux·服务器
aq55356006 小时前
CentOS vs Debian:如何选择最适合的Linux发行版
linux·centos·debian
LXY_BUAA6 小时前
《ubuntu22.04》_新系统的配置_20260418
linux·运维·服务器
楼田莉子6 小时前
同步/异步日志系统:日志落地模块\日志器模块\异步日志模块
linux·服务器·c++·学习·设计模式
洛水水7 小时前
图解式讲解内存池:告别内存碎片与随机coredump
linux·内存池
小章UPUP8 小时前
2025-2026 新FFmpeg GUI工具推荐
linux
北山有鸟10 小时前
相机的水平消隐与垂直消隐
linux·驱动开发·相机
还不秃顶的计科生10 小时前
多模态模型下载
java·linux·前端
无忧.芙桃10 小时前
进程控制之进程等待
linux·运维·服务器
云栖梦泽10 小时前
Linux内核与驱动:13.从设备树到Platform平台总线
linux·运维·c++·嵌入式硬件