Intel MPK介绍

Intel MPK (Memory Protection Keys)

MPK是一种用户空间基于页的内存权限管理机制。

标记

将页表条目中预留的4个位用于"protection key",最多可以提供16个key来标记内存页 (0000~1111)。
在这里插入图片描述

权限控制

PKRU (protection key rights for user pages) 是一个32位的寄存器,用于存储每个key的访问权限。每个key具有两个对应的位(访问禁止写禁止)。这些权限仅在数据访问时强制执行,而对指令提取无效。

在这里插入图片描述
指令RDPKRUWRPKRU分别用于读和写PKRU,这两条指令都不是特权指令,在用户空间运行,不需要上下文切换,开销小(20cycles左右)。

硬件支持情况

在这里插入图片描述

与系统调用mprotect区别:

  1. 更新PKRU不需要系统调用,比mprotect快很多(MPK在标记页的时候需要进行系统调用)。
  2. MPK的保护时线程本地的,不同线程的访问权限可能不一致,与对应的PKRU有关,而mprotect会影响整个进程。

https://community.intel.com/legacyfs/online/drupal_files/managed/a4/60/325384-sdm-vol-3abcd.pdf
https://www.kernel.org/doc/html/latest/core-api/protection-keys.html
https://charlycst.github.io/posts/mpk/
https://mstmoonshine.github.io/p/intra-unikernel-mpk/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值