RTOS中是否存在用户空间/内核空间?

时间:2016-01-19 23:13:21

标签: kernel real-time rtos kernel-mode usermode

我从各种内核开发人员那里听说大多数RTOS  用户空间和内核空间之间没有任何分离,因此不需要任何上下文切换。

这是真的吗?

与此同时,我从其他人那里听说并非如此,而VxWorks或Integrity等RTOS已将用户模式内核模式分离。

首先,哪些假设是正确的?

其次,如果两个假设都是正确的,那么它会引发一个问题,即当RTOS供应商使用内核空间和用户空间之间的分离时,以及何时不这样做?

您能说出一些没有用户模式/内核模式分离的知名RTOS吗?

最后,作为一个侧面问题,他们如何控制I / O操作并避免竞争条件?

4 个答案:

答案 0 :(得分:3)

像FreeRTOS和衍生品这样的东西在没有MMU的硬件上运行愉快。

如果没有MMU,内核和用户模式之间的任何分离都会有点虚幻(你可以简单地覆盖内核内存),但仍有区别:

通常,RTOS将配置有许多任务,每个任务都有自己的堆栈。这意味着上下文切换仍然是等式的一部分,因为每当内核想要切换任务时,它必须首先保存传出任务的堆栈,然后在切换到传入任务之前交换传入任务的堆栈。

作为第三方开发人员(ISV),您可以编写代码以在任务上下文中运行,这样您就可以利用任务机制使其行为类似于轻量级线程。

但是,如果没有MMU,在这个方案中不会有任何“真正的”保护措施不小心搞乱内核。例如,在没有MMU的情况下崩溃RTOS的最简单方法是错误配置堆栈大小,然后最终得到堆栈溢出,意外擦除内核数据/其他任务/覆盖实际程序指令......

...现在使用MMU,内核可以设置页表映射,以便它可以拦截页面故障,并在检测到错误的内存访问(违反预配置的内存边界)时使用它来实现段错误机制。通过在芯片中添加额外的安全功能,内核还可以限制允许执行哪种指令任务,并与MMU结合使用,实现内核与用户模式/空间之间的正确分离。

答案 1 :(得分:1)

上下文切换与用户/内核空间没有直接关系。上下文切换涉及线程/进程/中断上下文之间的切换;无论用户/内核空间或MMU保护的任何概念如何,都会在任何RTOS中发生。

内核/用户空间概念指的是权限级别,在内核空间中,您可以执行操作或访问用户空间不可用的内存或I / O.在嵌入式系统中,概念可能没有多大意义,因为许多线程需要直接I / O访问以确保内核驱动程序交换机可能无法提供的实时行为。许多RTOS不是完整的操作系统,只有内核提供调度,IPC,同步,资源锁定和定时器服务;他们通常不定义驱动程序模型或提供任何I / O,网络或文件系统服务,因此内核空间概念几乎没有什么优点。

而不是内核/用户空间概念,在具有MMU的目标上运行的一些RTOS确实使用内存保护方案来为特定线程/进程(和内核)分配内存和内存映射I / O,这样一个线程就不能不能破坏另一个或内核。另一方面,许多RTOS在没有MMU的目标上运行,因此无法提供这种安全性和稳健性。

在RT中,RTOS仅指提供确定性行为的调度方法;没有一种设计,在方法和能力方面都有显着差异。请参阅特定RTOS的文档。

答案 2 :(得分:1)

首先,RTOS可以支持用户&内核分离。有些人将此称为受保护的构建支持,其中用户/应用程序无法直接访问任何内核资源。

在没有MMU支持的RTOS中,用户&通过仅通过系统调用限制用户访问来保证内核分离。

如果您不了解系统调用,可以谷歌搜索。这是一种用户通过软件中断服务程序访问任何内核的机制。

关于上下文切换,上下文切换和上下文切换之间没有相关性。用户/内核分离。

当供应商支持用户&核分离? 大多数情况下,它就像一个构建时间功能。由于这会增加执行时间的开销,这取决于他们的RTOS背后的供应商理念。

答案 3 :(得分:0)

根据VxWorks架构(一种RTOS),很明显,它没有两个地址空间(用户和内核)。通过为每个任务分配自己的内存空间,用户服务和内核服务都将在单个地址空间中处理。此内存空间需要虚拟到物理的内存映射,该映射仅在可选组件VxVMI(VxWorks虚拟内存接口)中可用。

添加的信息:我们使用具有单个地址空间的RTOS,以提供未解释的服务和更快的OS执行。 VxWorks体系结构参考链接:
https://www.google.com/url?sa=t&source=web&rct=j&url=http://www.ing.iac.es/~docs/external/vxworks.old/Programmers-Guide-5.4.pdf&ved=2ahUKEwjm3rmag5XpAhVEXn0KHSGPDYwQFjAAegQIBBAB&usg=AOvVaw0E9VEDjpd5XIvaaoDxGcCD