Tock 嵌入式操作系统与 Rust 编程基础
1. Dynamic Grants
通常认为驱动程序无法动态分配内存,但这种说法不完全正确。部分驱动程序确实需要在编译时无法预测的额外内存,Tock 为此提供了 DynamicGrant 结构。它的工作方式与常规授权类似,但允许驱动程序在进程的授权区域中请求额外空间。
在编写本文时,Tock 中的所有胶囊都未实际使用 DynamicGrant。当驱动程序需要额外内存时,需先进入其授权区域。一旦授权分配并可用,进程可向内核请求额外空间。内核会尝试在进程的授权区域内分配该额外空间,若成功,将向驱动程序返回一个 DynamicGrant,由驱动程序负责存储。
DynamicGrant 的访问方式与普通授权相同,内核会确保驱动程序无法访问已失效进程中分配的 DynamicGrant。通常,DynamicGrant 存储在普通授权内,因为它与进程紧密相关。
2. Tock 应用程序包
Tock 操作系统的一个关键区别在于能够将应用程序与内核分开构建和部署,这与 Linux 等操作系统分发应用程序的方式类似。在深入探讨之前,需明确两个术语:应用程序可执行文件和应用程序包。前者通常包含二进制可执行代码和一些初始数据,后者则包含可执行文件以及运行应用程序所需的其他文件,如图像、视频、声音等数据文件。
多数操作系统的可执行文件格式较为标准,如 Windows 的 PE、Linux 的 ELF 和 macOS 的 MachO,但包文件格式差异很大。Windows 主要使用 MSI 包,Linux 根据发行版不同使用 DEB、RPM、snap 等,macOS 使用 DMG 或 PKG 包,移
超级会员免费看
订阅专栏 解锁全文
53

被折叠的 条评论
为什么被折叠?



