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

相关推荐
林开落L17 分钟前
库制作与原理(下)
linux·开发语言·centos·库制作与原理
wxy31929 分钟前
嵌入式LINUX——————TCP并发服务器
java·linux·网络
Castamere38 分钟前
配置 Linux 终端 (zsh)
linux
小韩博2 小时前
metasploit 框架安装更新遇到无法下载问题如何解决
linux·网络安全·公钥·下载失败
长臂人猿2 小时前
JVM常用工具:jstat、jmap、jstack
linux·运维·jvm
轻松Ai享生活3 小时前
揭秘 linux:一张图看懂系统配置的核心
linux
wdxylb3 小时前
云原生俱乐部-RH134知识点总结(2)
linux·云原生
_Chipen3 小时前
lazy_vim_cmake_clangd_从零到自动补全与语法检查
linux·编辑器·vim
椰子今天很可爱4 小时前
静态库和动态库
linux
檀越剑指大厂4 小时前
【Linux系列】如何在 Linux 服务器上快速获取公网
linux·服务器·php