SSOO Flashcards
(8 cards)
Modos. Objetivo.
Hay instrucciones privilegiadas que manejan recursos de I/O o son instrucciones críticas. Y las
instrucciones no privilegiadas. Como se debe proteger al SO de las injerencias de programas de
usuario, se definen dos modos de ejecución
Modo usuario
Utilizado por los programas.
- El usuario no puede ejecutar instrucciones privilegiadas ni acceder a ciertas áreas de
memoria.
- Las instrucciones de programas se ejecutan en modo usuario.
Modo kernel
El usuario puede ejecutar todas las instrucciones y acceder a áreas protegidas de la
memoria.
- Las instrucciones del SO son en modo Kernel.
- El SO siempre empieza ejecutando en modo Kernel.
Cuando hay un cambio de modo? Quien lo indica?
El PSW indica el modo de ejecución en el que estamos.
- De user a kernel: Interrupción o Syscall
- Kernel a user: Interrupción privilegiada (la que permite volver a user) y Restaurando contexto
Syscall
Son el mecanismo seguro y controlado con el que permite a un programa en user mode solicite servicios de kernel mode (modo de instrucciones privilegiadas) temporalmente para efectuarse.
Son invocadas por programas en modo usuario para pedir servicios al kernel.
- Son instrucciones atómicas.
- Son solicitudes sincrónicas (las hace un programa deliberadamente).
- Hay 2 tipos de syscalls: bloqueante y no bloqueante.
Syscalls y cambio de estado/modo
Todas las syscalls implican cambios de modo (2: user → kernel → user).
No todas las syscalls causan un cambio de contexto (solo las que llevan al scheduler a cambiar de proceso).
Las interrupciones y syscalls siempre se atienden en modo kernel, pero el cambio de contexto depende de la política del scheduler.
¿Cuándo hay cambio de contexto en una syscall?
→ Cuando el kernel decide desalojar el proceso actual (por bloqueo, prioridad, tiempo de CPU agotado, etc.).
Que es un wrapper?
Son contenedores de syscalls, empaquetadas.
(+) portabilidad y seguridad
(-) eficiencia y flexibilidad.
Que produce una syscall?
- Cambio a Modo Kernel Ejecución del manejador.
- El kernel identifica a la syscall y ejecuta su código interno.
- Acceso a HW, si es necesario (leer disco, escribir en pantalla) -Puede haber una interrupción
- Retorno a user mode.