scheduling Flashcards
(128 cards)
¿Qué constituye el contexto de un proceso en ejecución en xv6?
El espacio de direcciones de memoria, los registros del procesador y las estructuras del Kernel.
¿Qué sucede cuando el sistema operativo interrumpe un proceso en xv6?
Se produce un cambio de contexto, interrumpiendo momentáneamente un proceso y restaurando otro suspendido.
¿Qué es el trampoline en xv6?
Es un código assembler para transicionar de modo usuario a modo kernel, ubicado en una única página cargada tanto en el espacio de usuario como en el de kernel.
¿Qué diferencia al manejo de memoria en xv6 respecto a Linux anterior a la versión 4.15?
En xv6 el kernel no está completo en el address space del proceso, a diferencia de Linux viejo; Linux moderno usa KPTI, una técnica similar a xv6.
¿Qué es el trapframe en xv6?
Es un espacio donde el kernel guarda una copia del estado de todos los registros del procesador antes de cambiar a modo kernel.
¿Para qué sirve el trapframe?
Para guardar los registros antes de pasar a kernel mode y restaurarlos al volver a user mode.
¿Cuándo inicia un cambio de contexto en xv6?
Cuando se produce una transición a Kernel-Space, por interrupciones, excepciones o system calls.
¿Puede un proceso en user-space cambiar directamente de proceso en xv6?
No, el cambio de contexto solo ocurre en kernel-space.
¿Qué sucede si se decide realizar un cambio de contexto en xv6?
Se invoca al scheduler, que elige el próximo proceso a ejecutar y llama a switch().
¿Qué hace la función switch() en xv6?
Guarda el estado actual (foto de kernel-space y user-space) y restaura el estado del proceso candidato.
¿Qué pasa después de ejecutar switch()?
Se regresa al User-Space del nuevo proceso elegido.
¿Cómo se genera la transición de User a Kernel en xv6?
Se genera una interrupción por software mediante ecall, provocando que el procesador salte al trampoline y cambie a Kernel Mode.
¿Cuál es el primer paso que realiza el código del trampoline en xv6?
Guardar todos los registros del procesador en el trapframe.
¿Qué hace el trampoline luego de guardar los registros?
Cambia el registro satp, modificando la tabla de páginas y cambiando efectivamente el address space.
¿Qué registro se actualiza para apuntar al kstack del proceso actual?
El registro sp (stack pointer).
¿Qué función llama el trampoline luego de configurar sp y satp?
Llama a usertrap().
¿Qué función se invoca para retornar de kernel a user en xv6?
Se invoca userret() en el trampoline.
¿Qué hace userret()?
Cambia nuevamente satp, restaura todos los registros guardados en el trapframe, y usa sret para volver al punto original en user-space.
¿Qué instrucción se ejecuta para retornar al modo usuario?
Se ejecuta la instrucción sret.
¿Cuál es la diferencia entre la transición de User a Kernel y el cambio de contexto en xv6?
La transición de User a Kernel es cuando un proceso pasa de ejecutarse en modo usuario a modo kernel, sin cambiar de proceso. El cambio de contexto implica suspender un proceso y restaurar otro, cambiando todo el contexto del procesador.
¿Puede haber una transición de User a Kernel sin que haya un cambio de contexto?
Sí, puede haber una transición de User a Kernel sin que haya un cambio de contexto, por ejemplo, cuando el kernel atiende una system call y luego el mismo proceso continúa ejecutándose.
¿Puede haber un cambio de contexto sin transición de User a Kernel?
No, porque el cambio de contexto siempre lo orquesta el Kernel. Primero hay una transición de User a Kernel (por interrupción, excepción o system call) y luego, si es necesario, se hace el cambio de contexto.
¿Qué es la multiprogramación?
Es la capacidad de ejecutar más de un proceso a la vez intercalando su ejecución para mejorar el uso de la CPU.
¿Qué beneficios trajo la multiprogramación?
Mejoró la eficiencia del uso de la CPU, especialmente cuando las computadoras eran muy costosas.