强烈建议在创建64位内核(对于x86_64平台)时,指示编译器不要使用用户空间ABI所执行的128字节红区.(对于GCC,编译器标志是-mno-red-zone).
如果启用了内核,则内核不会是中断安全的.
但那是为什么呢?
在x86中,您可以使用TSS在正在运行的进程之间切换任务,但是,建议仅使用一个TSS(如您所愿)并执行软件任务切换,尤其是当您要将内核移植到其他硬件时没有TSS.
在x86-64(64位)中,没有TSS(例如它在x86中没有做任何事情),所以,如果没有它,有人会怎么做任务切换(以前,你会使用至少一个)?
单片内核的驱动程序可以在环0,1或2中(微内核它们将在环3中 - 用户环).
将驱动程序代码放入内核0或"略少"特权环1和2中是否有任何优点/缺点?
环1和环2仍然可以访问超级用户页面,但是他们无法运行一些特殊的特权指令(如果有的话,它们会引发一般保护错误 - 就像环3一样)