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

相关推荐
Harm灬小海3 分钟前
【云计算学习之路】学习Centos7系统-Linux软件包管理
linux·运维·服务器·学习·云计算·yum·rpm
caicai_xiaobai6 分钟前
Ubuntu上Git安装步骤
linux·git·ubuntu
平行云16 分钟前
实时云渲染平台数据通道,支持3D应用文件上传下载分享无缝交互
linux·unity·云原生·ue5·gpu算力·实时云渲染·像素流送
谪星·阿凯29 分钟前
Linux提权全攻略博客
linux·运维·服务器·网络安全
风度前端30 分钟前
阿里云宝塔面板部署https证书
linux·后端·https
Yeats_Liao32 分钟前
物联网接入层技术剖析(二):epoll到底是怎么工作的
java·linux·网络·物联网·信息与通信
Donk_6740 分钟前
什么是虚拟化
linux·运维
Shadow(⊙o⊙)41 分钟前
Shell进程替换,自定义Shell解释器——字符串库函数灵活操作!
linux·运维·服务器·开发语言·c++·学习
funnycoffee12343 分钟前
华为S5736交换机3层ECMP负载方式
linux·服务器·数据库
叶半欲缺1 小时前
Linux初始化数据盘
java·linux·服务器