2012-04-09 99 views

回答

6

如果你想了解这个东西,最好的方法之一是通过代码遵循Linux启动过程Kernel Boot Process。例如,假设您将Linux运行在x86架构上。启动时会发生什么情况是BIOS将控制权交给引导加载程序。引导加载程序可以控制内核。

然后内核通过一个进程启动。最初的大部分内容是用汇编语言编写的 - 请参阅/arch/x86/boot/header.S

然后进入/arch/x86/boot/main.c。就在主函数结束时,您会看到调用go_to_protected_mode()

你可以看到,功能/arch/x86/boot/pm.c

所以,一旦你引导到内核,它成为CPU的网关,并且您的代码在内核提供的虚拟机中运行。用户程序不能在其他模式下运行,因为它们必须通过此虚拟机执行所有操作。

1

用户模式只能通过生成某种中断来改变它的权限模式。看起来中断的目的是改变程序的特权模式。一旦产生任何正常的中断,特权模式被提升,并且一些内核代码开始运行.....结论:通过自行中断,用户模式程序不能提升权限并继续运行自己的代码....这就是如此巨大的安全性机制运作。

Billmic