1° Parcial 1C2023 - TM - Resolución Sistemas Operativos Utn
1° Parcial 1C2023 - TM - Resolución Sistemas Operativos Utn
1° Parcial 1C2023 - TM - Resolución Sistemas Operativos Utn
Aclaración: La mayoría de las preguntas o ejercicios no tienen una única solución. Por lo
tanto, si una solución particular no es similar a la expuesta aquí, no significa necesariamente
que la misma sea incorrecta. Ante cualquier duda, consultar con el/la docente del curso.
Teoría
1. Se realiza un cambio de contexto y un cambio de modo (usuario => kernel), esto implica
guardarse el contexto de ejecución (registros, PC, PSW, etc) del proceso en ejecución
en la pila del sistema y cargar el nuevo contexto de ejecución de la rutina del SO que
corresponda a esa syscall. Si llega una interrupción durante la ejecución de esta rutina,
el procedimiento es similar, se debe cambiar el contexto pero en este caso no de modo
ya que la CPU ya estaría ejecutando en modo kernel.
2.
a) Falso, el cambio de proceso lo realiza el SO y por lo tanto se requiere estar en
modo kernel. El cambio entre ULTs se realiza en modo usuario siempre que
estemos hablando de hilos pares (pertenecientes al mismo KLT/Proceso) ya que
sería realizado por su biblioteca de hilos.
b) Verdadero, utilizar KLTs en sistemas multiprocesador permite que los mismos se
ejecuten en paralelo ya que el SO puede planificarlos en las distintas CPU.
4. Condición de carrera es una situación bajo la cual dos o más procesos/hilos comparten
recursos y el estado final de los mismos luego de ejecutar no siempre es determinístico
al depender de la velocidad relativa de ejecución de cada proceso/hilo y varios otros
factores. Un ejemplo es el de varios hilos modificando una variable global de la forma
CONTADOR++. Es difícil de detectar porque algunas veces podría arrojar resultados
coherentes dependiendo de la ejecución, por lo tanto no sería tan evidente el error.
5. Comparacion:
Ocurrencia Overhead Flexibilidad
2.
Cliente (N instancias) Reservas (2 instancias) Devoluciones (2 instancias)
3. .
VT = [2, 2, 2, 2]
Asignaciones: Peticiones actuales:
R1 R2 R3 R4 R1 R2 R3 R4
P1 1 1 P1 1 1
P2 1 1 P2 1 1
P3 1 1 P3 1 1
P4 1 P4 1
P5 1 P5 1 1
a) VD= [0, 0, 0, 0]
Existe deadlock y todos los procesos están involucrados.
c) VT = [2, 2, 3, 3]:
Disponibles = [0, 0, 1, 1] -> podríamos asignar a P3
Si P3 libera = [0, 1, 1, 2] -> podríamos asignar a P2
Si P2 libera = [1, 1, 2, 2] -> podríamos asignar a cualquier otro y no habría deadlock