Zephyr内核——用户模式——MPU支持的用户空间

Zephyr内核通过MPU支持用户空间,创建辅助堆栈与线程堆栈一一对应。构建过程会扫描ELF文件生成特权堆栈和查找表。线程降级到用户模式时,填充特权堆栈信息,MPU区域配置用于保护。系统调用期间,验证权限并切换到特权模式调用内核API,完成后返回用户模式。
摘要由CSDN通过智能技术生成

MPU支持的用户空间

MPU支持的用户空间实现需要创建一组辅助堆栈。这些堆栈与系统中定义的每个线程堆栈以1:1的关系存在。特权堆栈是作为构建过程的一部分来创建的。

构建后的脚本scripts/gen_kobject_list.py会扫描生成的ELF文件,并找到所有的线程堆栈对象。将创建一组特权堆栈、一个查找表和一组辅助函数,并将其添加到图像中。

在将线程降为用户模式的过程中,特权堆栈信息被填充,然后被交换和系统调用基础设施使用,为线程堆栈和保护(如果适用)的MPU正确配置MPU区域。

在系统调用期间,用户模式线程对系统调用的访问和传递的参数都被验证。然后将用户模式线程提升到特权模式,堆栈被切换为使用特权堆栈,并对指定的内核API进行调用。当从内核API返回时,线程被设置回用户模式,堆栈被恢复到用户堆栈。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值