Sistemas operativos
- Procesos
- Implantación de los
procesos - Comunicación entre
procesos - Instrucción
TSL - Planificación de
procesos - Colas
múltiples - Procesos
ligeros - Señales
El siguiente documento describe las
características que presentan los sistemas
operativos para la
administración de procesos en
los sistemas mono y
multiprocesadores. Se comienza con una introducción sobre la funcionalidad de un
proceso para
luego entrar en los detalles de implementación
típicos de los sistemas
operativos. Aún no termine la totalidad del documento
pero lo quiero publicar en Internet para obtener
feedback por parte de los lectores interesados en el
mismo.
Un proceso es un programa en
ejecución. Un proceso simple tiene un hilo de
ejecución, por el momento dejemos esta última
definición como un concepto, luego
se verá en más detalle el concepto de hilo. Una vez
definido que es un proceso nos podríamos preguntar
cuál es la diferencia entre un programa y un proceso, y
básicamente 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 interactúan
entre sí y pertenecen a una misma aplicación. En el
caso de procesos independientes en general se debe a que no
interactúan y un proceso no requiere información 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 ejecución y Bloqueado.
Los procesos en el estado
listo son los que pueden pasar a estado de
ejecución si el planificador los selecciona. Los procesos
en el estado ejecución son los que se están
ejecutando en el procesador en ese
momento dado. Los procesos que se encuentran en estado bloqueado
están esperando la respuesta de algún otro proceso
para poder
continuar con su ejecución. Por ejemplo operación
de E/S.
La implementación del modelo de
procesos se logra debido a que el sistema operativo
almacena en una tabla denominada tabla de control de
procesos información relativa a cada proceso que se esta
ejecutando en el procesador. Cada línea de esta tabla
representa a un proceso.
La información que se almacena es la
siguiente:
1) Identificación del proceso.
2) Identificación del proceso padre.
3) Información sobre el usuario y grupo.
4) Estado del procesador.
5) Información de control de proceso
5.1) Información del planificador.
5.2) Segmentos de memoria
asignados.
5.3) Recursos
asignados.
Las condiciones de competencia se
dan cuando dos o más procesos intentan acceder a un mismo
recurso.
Para solucionar las condiciones de competencia se
implementó un modelo para prohibir que dos procesos
accedan al mismo recurso. El modelo en cuestión se
denomina exclusión mutua.
Exclusión mutua con espera
ocupada
Las soluciones con
espera ocupada funcionan de la siguiente manera, cuando un
proceso intenta ingresar a su región crítica, verifica si esta permitida la
entrada. Si no, el proceso se queda esperando hasta obtener el
permiso.
Desactivación de
interrupciones
El método
más simple para evitar las condiciones de competencia es
hacer que cada proceso desactive todas sus interrupciones antes
de entrar a su sección crítica y las active una vez
que salio de la misma. Este modelo como se puede observar,
éste modelo tiene una gran problema y es que si se produce
una falla mientras que el proceso esta en la región
crítica no se puede salir de la misma y el sistema operativo
no recuperaría el control.
En éste caso se genera una variable la cual puede
tener dos valores o bien
0 (no hay ningún proceso en su sección
crítica) o bien 1 (indicando que la sección
crítica está ocupada) entonces cada proceso antes
de ingresar a la sección crítica 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 región
crítica.
El algoritmo de
alternancia estricta no bloquea el ingreso a la región
crítica cuando otro proceso se esta ejecutando. El
problema de ésta solución es que cuando un proceso
no esta en la sección crítica 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.
Esta solución requiere ayuda del hardware y es debido a que
en general las computadoras
diseñadas para tener más de un procesador tienen
una instrucción TEST AND SET
LOCK
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 echo de que cuando hay dos o más procesos
interactuando a través de un buffer común habiendo
procesos que ponen información 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 métodos de
comunicación/sincronización 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.
La planificación es el proceso por el cual el
sistema operativo selecciona que proceso ejecutar. La selección
del proceso se basa en alguno de los algoritmos de
planificación que se describen más
abajo.
Es la característica por el cual el sistema
operativo puede o no expulsar del estado de ejecución a un
proceso dado. En este sentido entonces tenemos la
planificación apropiativa en la cual el sistema operativo
puede cortar en cualquier momento la ejecución de un
proceso y la planificación no apropiativa en la cual una
vez que el proceso esta en ejecución el sistema operativo
no puede sacarlo de ese estado.
Los objetivos de
la planificación de proceso son:
- Equidad, todos los procesos deben poder
ejecutarse - Eficacia, mantener ocupada la CPU un 100%
del tiempo - Tiempo de respuesta, minimizar el tiempo de respuesta
al usuario - Tiempo de regreso, minimizar el tiempo que deben
esperar los usuarios por lotes para obtener sus
resultados - Rendimiento, maximizar el número de tareas
procesadas por hora.
Los algoritmos de planificación son los que
definen que política se va a
seguir para que un proceso pase al estado de
ejecución.
En este tipo de planificación cada proceso tiene
asignado un quantum de tiempo para ejecutarse y en el caso de que
no pueda terminar la ejecución en su quantum el proceso
pasa de nuevo a la cola de procesos para ser ejecutado por otro
quantum luego de recorrer la cola para asegurarse que todos los
procesos reciban ese quantum de procesamiento.
En la planificación round-robin todos los
procesos son tratados con la
misma prioridad. Para el caso de este tipo de
planificación a cada proceso se le asigna una prioridad y
los mismos son ejecutados
Las colas múltiples están basadas en una
pila que sirve como índice de una lista de procesos que se
tienen que ejecutar.
Primero el trabajo
más corto
Este tipo de algoritmo de planificación se usa
para trabajos en batch o de procesamiento or lotes en los cuales
se puede saber cual es el tiempo de duración de la
ejecución de cada proceso y entonces se puede seleccionar
primero el trabajo
más corto. El problema que se presenta con éste
algoritmo es que los grandes procesos podrían sufrir de
inanición dado que cualquier proceso pequeño se
"cuela" sobre uno de mayor tamaño y como resultado final
se podría dar el caso que el proceso grande nunca obtenga
procesamiento.
En este modelo de planificación se tiene en
cuenta la cantidad de usuarios en el sistema y se le asigna a
cada uno el tiempo de ejecución de 1/n (siendo n la
cantidad total de usuarios) de esa forma el planificador tiene
que llevar cuenta del tiempo de ejecución de los procesos
y balancear el tiempo que están utilizando el procesador
para cumplir con la ecuación previa.
Los procesos ligeros son programas en
ejecución son básicamente procesos pero a
diferencia de éstos últimos que solo tienen un hilo
de ejecución los primeros tienen el hilo principal
más hilos secundarios o hijos, en éste caso todos
los procesos hijos comparten la información del hilo
principal pero además puede cada hilo tener su
información privada.
Dentro de la información propia
tenemos:
- Contador de programa
- Pila
- Registros.
- Estado del proceso ligero.
- Dentro de la información compartida
tenemos: - Variables globales.
- Archivos abiertos
- Señales
- Semáforos.
- Contabilidad.
Las señales
son el mecanismo de comunicación que se establece entre
los procesos. Para comparar se puede decir que las señales
son a los procesos lo que las interrupciones son al procesador.
Cuando un proceso recibe una señal detiene su
ejecución, bifurca a la rutina del tratamiento de la
señal que esta en el mismo proceso y luego una vez
finalizado sigue la ejecución en el punto que había
bifurcado anteriormente.
Las señales se pueden originar en un proceso o
bien en el sistema operativo. Las señales se pueden enviar
entre procesos, solo los que tengan el mismo uid, o bien el
sistema operativo puede enviarle una señal a un proceso,
por ejemplo excepciones de ejecución.
Perses Crio
Licenciatura de sistemas