2012-04-09 5 views

Respuesta

6

Si quiere entender esto, una de las mejores maneras de abordarlo es seguir el proceso de arranque de Linux Kernel Boot Process a través del código. Por ejemplo, supongamos que llevas Linux ejecutándose en una arquitectura x86. Lo que sucede en el arranque es que el BIOS le da el control a un cargador de arranque. El gestor de arranque en finn da control al kernel.

El kernel pasa por un proceso para iniciarse. Inicialmente, la mayoría de las cosas están escritas en lenguaje ensamblador: consulte /arch/x86/boot/header.S

Luego, vaya a /arch/x86/boot/main.c. Justo al final de la función principal verá la llamada a go_to_protected_mode()

Se puede ver que en función de /arch/x86/boot/pm.c

Así, una vez que arranque en el núcleo, se se convierte en la puerta de enlace de la CPU, y su código se ejecuta en la máquina virtual proporcionada por el kernel. Los programas de usuario no pueden ejecutarse en otros modos por el hecho de que tienen que hacer todo a través de esta máquina virtual.

1

El modo de usuario puede cambiar su modo de privilegio solo mediante la generación de algún tipo de interrupción. Parece que el propósito de la interrupción es cambiar el modo de privilegio del programa. Tras la generación de cualquier interrupción normal, el modo de privilegio se eleva y parte del código kernel comienza a ejecutarse ... Conclusión: Al interrumpirse a sí mismo, el programa de modo de usuario no puede elevar el privilegio y seguir ejecutando código propio ... Así es como esta gran seguridad mecanismo opera.

Billmic