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

相关推荐
kymjs张涛4 小时前
OpenClaw 学习小组:初识
android·linux·人工智能
程序设计实验室7 小时前
经历分享,发现挖矿木马后,服务器快速备份与重装(腾讯云平台)
linux
Miku168 小时前
OpenClaw-Linux+飞书官方Plugin安装指南
linux·人工智能·agent
Miku168 小时前
OpenClaw 接入 QQ Bot 完整实践指南
linux·人工智能·agent
Yogurt_cry13 小时前
[树莓派4B] 闲置近10年的爱普生 L310 打印机爆改无线打印机
linux·物联网·树莓派
Johny_Zhao1 天前
OpenClaw中级到高级教程
linux·人工智能·信息安全·kubernetes·云计算·yum源·系统运维·openclaw
Sheffield2 天前
Docker的跨主机服务与其对应的优缺点
linux·网络协议·docker
Sheffield3 天前
Alpine是什么,为什么是Docker首选?
linux·docker·容器
Johny_Zhao3 天前
centos7安装部署openclaw
linux·人工智能·信息安全·云计算·yum源·系统运维·openclaw