2

通常无 MMU 的系统也没有 MPU(内存保护单元),用户模式和内核模式之间也没有区别。在这种情况下,假设我们有一个没有 MMU 的系统,它的某些硬件映射在 CPU 地址空间中,如果可以从用户空间访问所有硬件资源,那么在内核中拥有设备驱动程序真的有意义吗? ?

内核代码是否对内存有更多的控制权,然后是用户代码?

4

1 回答 1

3

是的,在没有托管 ucLinux 的 MMU 的平台上,做所有事情就像你有一个普通的嵌入式 Linux 环境一样是有意义的。让用户应用程序和服务通过它们的正常接口(系统调用等)并让操作系统将这些内核请求路由到设备驱动程序、文件系统、网络堆栈等是一种更简洁的设计。

尽管在这些情况下内核对硬件没有更多的控制权,但实际的硬件应该只能由运行在内核中的系统软件来接触。不限制对硬件的访问将使调试系统重置和内存损坏等事情几乎不可能。这种做法也使您的设计更便携。

例外情况可能是仅在内部用于平台启动和诊断的用户模式调试二进制文件。

于 2016-01-27T20:32:39.057 回答