Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Interrupciones y traps:
Las interrupciones son señales que el hardware envía a través del sistema para
alertar al CPU de eventos que requieren atención y permitiéndole responder a
eventos asíncronos. Cuando el CPU es interrumpido, este deja de hacer lo que
estaba haciendo y le transfiere el control a la rutina del controlador de interrupciones
correspondiente.
Los traps son interrupciones generadas por software y pueden ser causadas por un
error (por ejemplo, división por cero) o un requerimiento de un programa de usuario
a través de una llamada al sistema.
Deadlocks
Consiste de un conjunto de vértices para los procesos {P0, P1, …, Pn} y un conjunto
de vértices para los recursos {R0, R1, …, Rn}. Y las aristas Pi → Ri (aristas de
solicitud) si Pi requiere una instancia de Ri y Ri → Pi (aristas de asignación) si el
recurso Ri fue asignado al proceso Pi.
Si el grafo no contiene ciclos, entonces no hay deadlock.
Si el grafo contiene un ciclo, entonces puede existir deadlock, según la cantidad de
recursos que hayan en los conjuntos Ri implicados en el ciclo.
Prevención de deadlocks
Se asegura que al menos una de las 4 condiciones necesarias para un deadlock no
se cumplan. Se hace mediante un ordenamiento de los recursos, asociándole a
cada recurso Ri un valor entero tal que Ri < Ri+1, al momento de pedir bloqueos
solo se puede hacer de manera ascendente y si se requiere cierto recurso se deben
liberar todos los recursos de orden mayor.
Esto puede generar baja utilización de dispositivos y throughput del sistema.
Evitación de deadlocks
El SO necesita conocer qué recursos va a requerir cada proceso, en qué orden y
cuándo los va a liberar, así al momento de cada requerimiento, el SO puede decidir
si el mismo puede ser satisfecho o no.
Estado seguro
Un estado de alocación de recursos se define por la cantidad de recursos libres,
alocados y la necesidad máxima de cada proceso sobre cada recurso.
Un estado se dice seguro si el sistema puede alocar recursos en algún orden para
evitar un posible deadlock (si existe una secuencia segura, es decir una secuencia
<P1, P2, Pn> tal que las necesidades de cada Pi pueden ser satisfechas por los
recursos libres actuales más los liberados por todo Pj tal que j<i).
Si un estado es seguro, entonces no hay deadlocks. Sin embargo, en un estado
inseguro puede haber o no. Baja utilización de recursos.
Detección de deadlocks
Grafo wait-for.
Planificación de CPU
Turnaround time (tiempo de retorno): el tiempo que pasa desde que un proceso
llega al sistema hasta que es completado. Es la suma del tiempo que el proceso
pasa esperando en la cola de listos, haciendo E/S y ejecutando.
Tiempo de respuesta: es el tiempo que pasa desde que el proceso llega al sistema
hasta que comienza a ejecutar.
FCFS: es el más simple. Se implementa con una cola de listos FIFO, en la cual el
primer proceso que llega es el primero al que se le concede el CPU, no hay
apropiación así que cada proceso ejecuta hasta terminar o hasta ser bloqueado por
algún evento. Alto tiempo de espera promedio, efecto convoy y baja utilización de
CPU y dispositivos.
RR: se define un time quantum y la cola de listos se toma como una cola circular. El
CPU toma el primer proceso de la cola y pasado el time quantum, cambia al próximo
proceso en la cola. Es apropiativo. Alto tiempo de espera promedio.
Colas multinivel: se tienen colas de listos distintas para cada prioridad y se toman
procesos de la cola con mayor prioridad que tenga algún proceso. Además, cada
cola puede planificarse de una forma distinta, por ejemplo RR o FCSF, dependiendo
de si se las separa por tipo de proceso.
Planificación de hilos
En muchos a muchos o muchos a uno, los hilos a nivel de usuario son manejados
por una librería de hilos y el kernel no sabe de su existencia, mientras que los hilos
a nivel de kernel son manejados directamente por el SO. Los hilos de kernel son
más costosos de mantener ya que deben estar asociados a una estructura de datos
del kernel.
Planificación de multiprocesadores
Una de las complicaciones del multiprocesamiento asimétrico con colas únicas por
cada procesador es balancear la carga, esto se puede hacer mediante
● Push migration: periódicamente se evalúan las cargas de los procesadores y
cuando se encuentra un desequilibrio, se envían procesos desde el
procesador más cargado al menos cargado.
● Pull migration: un procesador desocupado toma procesos de otro más
cargado.
Tiempo real blando: asegura que las tareas críticas tendrán prioridad sobre las no
críticas, pero no garantiza nada sobre cuándo se ejecutará.
Tiempo real duro: requiere que las tareas críticas se completen sí o sí antes de su
deadline.
Sincronización
Condición de carrera: cuando dos o más procesos están leyendo y/o escribiendo un
dato compartido y el resultado depende del orden en que se ejecutaron los
procesos.
Sección crítica: es la parte del programa en la cual el proceso accede al dato o los
datos compartidos