KPTI——可以缓解“熔断” (Meltdown) 漏洞的内核新特性

news/2024/10/7 16:20:58

Linux 内核修复办法:内核页表隔离KPTl(kernel page table isolation)

  • 每个进程一张页表变成两张:运行在内核态和运行在用户态时分别使用各自分离的页表

  • Kernel页表包含了进程用户空间地址的映射和Kernel使用的内存映射

  • 用户页表仅仅包含了用户空间的内存映射以及内核跳板的内存映射

  • 当进程运行在用户空间时,使用的是用户页表

  • 当发生中断或者是异常时,需要陷入到内核,进入内核空间后,有一小段内核跳板将页表切换到内核页表
    image

  • KPTI最早是运用在x86上

  • KPTI补丁已经合并到Linux 4.15-rc4上

x86上的KPTI补丁主要工作:

  1. 内核页表和用户态页表的分离和切换
  2. 进程切换的优化:
  • 因为内核态的页表包含了所有地址空间的页表,所以可以安全的访问到用户态页表
  • 进程中用户态到内核态之间的切换,需要切换CR3寄存器
  • 采用per-cpu的PCID来优化

ARM上的KPTI

  • ARM64 只有Cortex-A75中招Meltdown漏洞
    ARM64上早已经采用了双页表的设计,但是。
  • ARM64上KPTI 的优化:
    • A75上虽然有两个页表寄存器,但是TLB上依然没法做到完全隔离,用户进程在meltdown情况下依然有可能访问内核空间映射的TLB entry
    • -个给当进程跑在内核态的使用,另外一个给进程跑在用户态每个进程上的ASID设置两份时使用。这样原本内核空间属于global TLB,就变成Process-Specific类型的TLB。
  • ARM64上TLB示意图

image

ASID的简介

  • 进程切换需要flush TLB,导致性能下降
  • TLB优化:(ASID)Address Space ID
    • Gobal类型的TLB:内核空间是所有进程共享的空间,因此这部分空间的虚拟地址到物理地址的翻译是不会变化的,可以理解为Global的。
    • Process-specific类型的TLB:用户地址空间是每个进程独立的地址空间。prev进程切换到next进程时,TLB中缓存的prev进程的相关数据对于next进程是无用的,因此可以冲刷掉,这就是所谓的process-specific的TLB。

ASID 优化

image

KPTI之前:

image

KPTI之后:

image

image

image

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hjln.cn/news/42759.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

吴恩达机器学习第二课 Advanced Learning Algorithms

Advanced Learning Algorithms week1 1.1 神经元和大脑1.2 需求预测构建自己神经网络的时候:需要决定隐藏层的个数和每个隐藏层的神经元个数1.3 图像感知 像素的亮度值从0~255变化 人脸识别:训练一个神经网络,以一个特征向量作为输入,输出图片中人的身份2.1 神经网络中的网…

nanoDLA逻辑分析仪上手教程

逻辑分析仪分析自定义总线数据前言 最近调试NXP FRDM-MCXN947开发板,发现它的硬件i2c接口读取的传感器数据老是不对,排查了硬件电路也发现不了啥问题;于是乎想到用逻辑分析仪试一下,果然很快定位到问题所在;还是那句话,用对的工具做对的事情,别浪费时间!这篇文章主要关…

字符串处理,push pop路径,组合命令

字符串处理字符串截取、命令嵌套命令格式:%变量名:~ m,n%,其中,m表示开始位置(默认开头),n表示从m位置开始向后截取的字符个数(默认到结尾),若n为负数则表示向前截取个数,作用:将命令中的某段字符截取,通过call将字符做为命令执行。 @echo offset str1=aaa echo ok bbb…

V-STARS 摄影测量基础

本文翻译了 GSI 公司官方网站中所提供的“摄影测量基础”文章。V-STARS 摄影测量基础[!NOTE] 本文翻译自 Geodetic Systems Inc,原文链接:https://www.geodetic.com/basics-of-photogrammetry/ 。摄影测量 摄影测量基础知识 在描述V-STARS系统(Video-Simultaneous Triangula…

ARM64中的ASID地址空间标识符

1. 从ARM32到ARM64 从ARM32到ARM64不止将处理器从32位升级到了64位,还有许多性能的技术也得到了极大的提升,光是个头长了可不行啊!能耐也得跟着长啊!哈哈哈 1.1 ARM32的TLB机制如上图所示,上一讲我们讲了TLB的每一条表项都有一个bit用来表示自己是全局的(内核空间)还是本…

[linux]mark-tool

编写shell终端的目录收藏工具前言 在远程连接到linux进行操作时,经常要切换目录,有些目录切换频次较高,因此写了个shell工具,用于收藏目录、切换目录等。也不需要安装,直接添加脚本即可。配置 首先声明脚本是基于bash shell,zsh和fish未经测试。编辑文件~/.bash_custom_f…

大模型在传统行业应用再思考

前言 上周去杭州开人工智能研讨会之前,写了一篇文章《大模型是连接主义的胜利吗?》。这篇文章实验了大模型对复杂规则的推理能力,总结了两个观点:不能过于迷信大模型的能力,它并不是万能的。大模型基于相关性,不是因果性。它需要传统的机理模型、符号推理等弥补自身缺陷。…

2. Mybatis 入门程序

1. Mybatis 入门程序开发步骤 1.1 数据库表的创建准备数据库表:数据库:north_mybatis , 汽车表 t_car,字段包括:id:主键(自增)【bigint】 car_num:汽车编号【varchar】 brand:品牌【varchar】 guide_price:厂家指导价【decimal类型,专门为财务数据准备的类型】 prod…