METERSPOPE(开源任天堂交换机内核)现在可以启动大多数商业游戏

2020-08-07 03:46:55

使用微内核的好处是安全性--它的代码足够少,您可以确信它是完全安全的。

缺点是,因为在其他设计下原本驻留在内核中的东西现在都在用户区域,所以它们必须执行IPC来通信--而IPC有一些开销。

IPC是微内核中最热的热路径,相应地,任天堂将IPC中涉及的每个函数都标记为__ATTRIBUTE__((ALYSY_INLINE)),这对逆向工程来说是一种巨大的痛苦。

此外,任天堂将SvcReplyAndReceive实现为允许微服务服务器进程在一次调用中回复和接收新消息的单个系统调用。

这就是说,实际上管理费用比你想象的要少。FUSE之所以比用于FS的内核驱动程序慢,过去是因为FUSE必须与内核对话才能执行文件系统操作,所以当您读取文件时,您的进程-&>FUSE-&>内核-&>硬件。相比之下,在Horizon上,内核完全不参与文件系统管理(它甚至没有映射sdmmc硬件)。因此,进程将执行进程->;FS系统模块进程->;硬件。

在Horizon中,所有东西显然都不是文件。没有Unix/Linux有特殊的/dev/东西那样的全局文件系统路径。

Horizon中不存在管道--所有IPC都是通过Horizon IPC(HIPC)协议完成的。

UNIX/POSIX有fork()和子进程之类的东西……但是在基于功能的操作系统中,创建进程是一项令人难以置信的特权操作。Fork()不可能在Horizon中实现,所有线程都是通过SvcCreateThread()创建的。子进程并不存在。