用户模式
概述
线程模型
用户模式线程被认为是Zephyr不可信任的,因此与其他用户模式线程和内核隔离。有缺陷或恶意的用户模式线程不能泄露或修改另一个线程或内核的私有数据/资源,也不能干扰或控制另一个用户模式线程或内核。
Zephyr的用户模式特性的示例用例:
内核可以防止许多无意的编程错误,否则这些错误可能会悄无声息地或壮观地破坏系统。
内核可以沙箱装复杂的数据解析器,如解释器、网络协议和文件系统,这样恶意的第三方代码或数据就不会危及内核或其他线程。
内核可以支持多个逻辑“应用程序”的概念,每个应用程序都有自己的线程组和私有数据结构,如果一个崩溃或受到损害,它们就会相互隔离。
设计目标
对于以非特权CPU状态(以下简称“用户模式”)运行的线程,我们的目标是防止以下情况:
- 我们防止对未特别授予的内存的访问,或对具有不兼容策略的内存的不正确访问,例如尝试写入只读区域。
- 对线程堆栈缓冲区的访问将由一个策略来控制,该策略部分依赖于底层的内存保护硬件。
- 默认情况下,用户线程将对其自己的堆栈缓冲区具有读/写访问权限。
- 默认情况下,用户线程永远无法访问非同一内存