Beruflich Dokumente
Kultur Dokumente
Introduccin
El siguiente documento describe las caractersticas que presentan los sistemas operativos
para la administracin de procesos en los sistemas mono y multiprocesadores. Se comienza
con una introduccin sobre la funcionalidad de un proceso para luego entrar en los detalles
de implementacin tpicos de los sistemas operativos.
Procesos
Qu es un proceso?
Un proceso es un programa en ejecucin. Un proceso simple tiene un hilo de ejecucin, por
el momento dejemos esta ltima definicin como un concepto, luego se ver en ms detalle
el concepto de hilo. Una vez definido que es un proceso nos podramos preguntar cul es la
diferencia entre un programa y un proceso, y bsicamente la diferencia es que un proceso es
una actividad de cierto tipo que contiene un programa, entradas salidas y estados.
Los procesos pueden ser cooperantes o independientes, en el primer caso se entiende que
los procesos interactan entre s y pertenecen a una misma aplicacin. En el caso de
procesos independientes en general se debe a que no interactan y un proceso no requiere
informacin de otros o bien porque son procesos que pertenecen a distintos usuarios.
Un proceso puede estar en cualquiera de los siguientes tres estados: Listo, En ejecucin y
Bloqueado.
Los procesos en el estado listo son los que pueden pasar a estado de ejecucin si el
planificador los selecciona. Los procesos en el estado ejecucin son los que se estn
ejecutando en el procesador en ese momento dado. Los procesos que se encuentran en
estado bloqueado estn esperando la respuesta de algn otro proceso para poder continuar
con su ejecucin. Por ejemplo operacin de E/S.
Secciones crticas
Para solucionar las condiciones de competencia se implement un modelo para prohibir que
dos procesos accedan al mismo recurso. El modelo en cuestin se denomina exclusin
mutua.
Variables cerradura
En ste caso se genera una variable la cual puede tener dos valores o bien 0 (no hay ningn
proceso en su seccin crtica) o bien 1 (indicando que la seccin crtica est ocupada)
entonces cada proceso antes de ingresar a la seccin crtica verifica el estado de la variable
de cerradura y en caso de que la misma este en 0, le cambia el valor e ingresa a la misma y
en caso de que la misma sea 1 el proceso se queda verificando el estado de la misma hasta
que el mismo sea 0.
El problema aqu se presenta si dos procesos verifican al mismo tiempo que la variable
cerradura esta en 0 e ingresan a la regin crtica.
Alternancia estricta
El algoritmo de alternancia estricta no bloquea el ingreso a la regin crtica cuando otro
proceso se esta ejecutando. El problema de sta solucin es que cuando un proceso no esta
en la seccin crtica igualmente tiene bloqueado el acceso a la misma y por lo tanto no
permite que otro proceso que requiera ingresar a la misma logre hacerlo.
Instruccin TSL
Esta solucin requiere ayuda del hardware y es debido a que en general las computadoras
diseadas para tener ms de un procesador tienen una instruccin TEST AND SET LOCK
Dormir y despertar
El modelo de espera acotada tienen el inconveniente que se desperdicia tiempo de
procesador.
El problema del productor y el consumidor
El problema del productor y el consumidor describe el hecho de que cuando hay dos o ms
procesos interactuando a travs de un buffer comn habiendo procesos que ponen
informacin o datos y otros que los sacan se pueden llegar a dar condiciones en las cuales
los procesos que ingresan los datos no puedan hacerlo debido a que el buffer ya se
encuentra lleno y para el caso de los que sacan los datos del buffer intenten sacar datos
cuando ya no hay nada que sacar. Para evitar estas condiciones se desarrollaron mtodos de
comunicacin/sincronizacin entre procesos en los cuales se impide que esto suceda
haciendo que el proceso productor "duerma" si el buffer est lleno y una vez que exista
espacio el proceso "consumidor" despierte al productor para que siga generando o
viceversa.
Niveles de Planificacin
La planificacin de la CPU, en el sentido de conmutarla entre los distintos procesos, es una
de las funciones del sistema operativo. Este despacho es llevado a cabo por un pequeo
programa llamado planificador a corto plazo o dispatcher (despachador). La misin del
dispatcher consiste en asignar la CPU a uno de los procesos ejecutables del sistema, para
ello sigue un determinado algoritmo. En secciones posteriores estudiaremos algunos
algoritmos posibles. Para que el dispatcher conmute el procesador entre dos procesos es
necesario realizar un cambio de proceso.
Los acontecimientos que pueden provocar la llamada al dispatcher dependen del sistema
(son un subconjunto de las interrupciones), pero son alguno de estos:
Hay que destacar el hecho de que cuanto menos se llame al dispatcher menos tiempo ocupa
la CPU un programa del sistema operativo, y, por tanto, se dedica ms tiempo a los
procesos del usuario (un cambio de proceso lleva bastante tiempo).
Este planificador est presente en algunos sistemas que admiten adems de procesos
interactivos trabajos por lotes. Usualmente, se les asigna una prioridad baja a los trabajos
por lotes, utilizndose estos para mantener ocupados a los recursos del sistema durante
perodos de baja actividad de los procesos interactivos. Normalmente, los trabajos por lotes
realizan tareas rutinarias como el clculo de nminas; en este tipo de tareas el programador
puede estimar su gasto en recursos, indicndoselo al sistema. Esto facilita el
funcionamiento del planificador a largo plazo.
Una disciplina de planificacin es no apropiativa si una vez que la CPU ha sido asignada al
proceso, ya no se le puede arrebatar. Y por el contrario, es apropiativa, si se le puede quitar
la CPU.
La planificacin apropiativa es til en los sistemas en los cuales los procesos de alta
prioridad requieren una atencin rpida. En los de tiempo real, por ejemplo, las
consecuencias de perder una interrupcin pueden ser desastrosas. En los sistemas de tiempo
compartido, la planificacin apropiativa es importante para garantizar tiempos de respuesta
aceptables.
La apropiacin tiene un precio. El cambio de proceso implica gasto extra. Para que la
tcnica de apropiacin sea efectiva deben mantenerse muchos procesos en memoria
principal de manera que el siguiente proceso se encuentre listo cuando quede disponible la
CPU. Conservar en memoria principal procesos que no estn en ejecucin implica gasto
extra.
En los sistema no apropiativos, los trabajos largos retrasan a los cortos, pero el tratamiento
para todos los procesos es ms justo. Los tiempos de respuesta son ms predecibles porque
los trabajos nuevos de alta prioridad no pueden desplazar a los trabajos en espera.
Algoritmos de planificacin
En los siguientes subapartados vamos a estudiar ciertos algoritmos utilizados para
planificar la CPU, la eleccin de uno (o de una mezcla de varios) depende de decisiones de
diseo. Antes de exponer los algoritmos vamos a explicar ciertas medidas que se utilizan
para evaluarlos.
En general, hay que maximizar los dos primeros parmetros y minimizar los tres ltimos.
Sin embargo, estos objetivos son contradictorios, el dedicar ms tiempo de CPU a los
usuarios se hace a costa de llamar menos al algoritmo de planificacin (menos cambios de
proceso), y de simplificarlo. Esto provoca que la CPU se reparta menos equitativamente
entre los procesos, en detrimento de los ltimos tres parmetros.
As pues, dependiendo de los objetivos se elegir cierto algoritmo. En los sistemas por lotes
suele primar el rendimiento del sistema, mientras que en los sistemas interactivos es
preferible minimizar, por ejemplo, el tiempo de espera.
El usuario debe informar por adelantado de las necesidades precisas de recursos del
proceso. Semejante informacin rara vez est disponible.
El sistema debe ejecutar el proceso en un plazo fijo sin degradar demasiado el servicio a
los otros usuarios y debe planificar cuidadosamente sus necesidades de recursos dentro del
plazo. Esto puede ser difcil por la llegada de nuevos procesos que impongan demandas
imprevistas al sistema.
Si hay muchas tareas a plazo fijo activas al mismo tiempo, la planificacin puede ser tan
compleja que se necesiten mtodos de optimizacin avanzados para cumplir los plazos.
Si el cuanto de tiempo es muy grande, cada proceso tendr el tiempo necesario para
terminar, de manera que el esquema de planificacin por turno rotatorio degenera en uno de
primero-en-entrar-primero-en-salir. Si el cuanto es muy pequeo, el gasto extra por cambio
de proceso se convierte en el factor dominante y el rendimiento del sistema se degradar
hasta el punto en que la mayor parte del tiempo se invierte en la conmutacin del
procesador, con muy poco o ningn tiempo para ejecutar los programas de los usuarios.
Exactamente dnde, entre cero e infinito, debe fijarse el tamao del cuanto? La respuesta
es, lo bastante grande como para que la mayora de las peticiones interactivas requieran
menos tiempo que la duracin del cuanto.
Al igual que en el algoritmo FIFO las rfagas se ejecutan sin interrupcin, por tanto, slo
es til para entornos batch. Su caracterstica es que cuando se activa el planificador, ste
elige la rfaga de menor duracin. Es decir, introduce una nocin de prioridad entre
rfagas. Hay que recordar que en los entornos batch se pueden hacer estimaciones del
tiempo de ejecucin de los procesos.
La ventaja que presenta este algoritmo sobre el algoritmo FIFO es que minimiza el tiempo
de finalizacin promedio, como puede verse en el siguiente ejemplo:
Ej: Supongamos que en un momento dado existen tres rfagas listos R1, R2 y R3, sus
tiempos de ejecucin respectivos son 24, 3 y 3 ms. El proceso al que pertenece la rfaga R1
es la que lleva ms tiempo ejecutable, seguido del proceso al que pertenece R2 y del de R3.
Veamos el tiempo medio de finalizacin (F) de las rfagas aplicando FIFO y SJF:
FIFO F = (24 + 27 + 30) / 3 = 27 ms.
SJF F = (3 + 6 + 30) / 3 = 13 ms.
Se puede demostrar que este algoritmo es el ptimo. Para ello, consideremos el caso de
cuatro rfagas, con tiempos de ejecucin de a, b, c y d. La primera rfaga termina en el
tiempo a, la segunda termina en el tiempo a+b, etc. El tiempo promedio de finalizacin es
(4a+3b+2c+d)/4. Es evidente que a contribuye ms al promedio que los dems tiempos, por
lo que debe ser la rfaga ms corta, b la siguiente, y as sucesivamente. El mismo
razonamiento se aplica a un nmero arbitrario de rfagas.
No obstante, este algoritmo slo es ptimo cuando se tienen simultneamente todas las
rfagas. Como contraejemplo, considrense cinco rfagas desde A hasta E, con tiempo se
ejecucin de 2, 4, 1, 1 y 1 respectivamente. Sus tiempos de llegada son 0, 0, 3, 3 y 3.
Primero se dispone de A y B, puesto que las dems rfagas no han llegado an. Con el
algoritmo SJF las ejecutaramos en orden A, B, C, D, y E con un tiempo de finalizacin
promedio de 4.6. Sin embargo, al ejecutarlas en orden B, C, D, E y A se tiene un promedio
de finalizacin de 4.4.
Es similar al anterior, con la diferencia de que si un nuevo proceso pasa a listo se activa el
dispatcher para ver si es ms corto que lo que queda por ejecutar del proceso en ejecucin.
Si es as el proceso en ejecucin pasa a listo y su tiempo de estimacin se decrementa con
el tiempo que ha estado ejecutndose.
Con este tipo de planificacin se pretende garantizar al usuario cierta prestacin del sistema
y tratar de cumplirla. Si en un sistema tenemos 'n' usuarios lo normal ser garantizar a cada
uno de ellos al menos 1/n de la potencia del procesador. Para ello necesitamos del tiempo
consumido por el procesador y el tiempo que lleva el proceso en el sistema. La cantidad de
procesador que tiene derecho a consumir el proceso ser el cociente entre el tiempo que
lleva en el sistema entre el nmero de procesos que hay en el sistema. A esa cantidad se le
puede asociar una prioridad que vendr dada como el cociente entre tiempo de procesador
que ha consumido y el tiempo que se le prometi (el tiempo que tiene derecho a consumir).
De tal modo que si esa proporcin es de 0'5 significa que tan slo ha consumido la mitad
del tiempo prometido pero si es de 2 quiere decir que ha consumido ms de lo debido,
justamente el doble.
En sistemas de tiempo real se puede adoptar una variante de este algoritmo en el que se
otorgue mayor prioridad al proceso cuyo riesgo de no cumplir el plazo sea mayor.