¿Por qué syscall necesita cambiar al modo kernel?
-
03-07-2019 - |
Pregunta
Estoy estudiando la final de mi sistema operativo y me preguntaba si alguien podría decirme por qué el sistema operativo necesita cambiar al modo kernel para syscalls.
Solución
Un syscall se usa específicamente para ejecutar una operación en el modo kernel, ya que el código de usuario habitual no está permitido hacer esto por razones de seguridad.
Por ejemplo, si desea asignar memoria, el sistema operativo tiene el privilegio de hacerlo (ya que conoce las tablas de páginas y tiene permiso para acceder a la memoria de otros procesos), pero a usted como programa de usuario no se le debe permitir Echar un vistazo o arruinar la memoria de otros procesos. Es una forma de caja de arena para ti. Así que envías un syscall solicitando al sistema operativo que asigne memoria, y eso sucede en el nivel del kernel.
Editar: ahora veo que el artículo de Wikipedia es sorprendentemente útil en este
Otros consejos
Ya que está etiquetado como "tarea", no solo voy a dar la respuesta, sino que te daré una pista:
El kernel es responsable de acceder al hardware de la computadora y de garantizar que las aplicaciones no se pisen unas con otras. ¿Qué pasaría si cualquier aplicación pudiera acceder a un dispositivo de hardware (por ejemplo, el disco duro) sin la cooperación del núcleo?