EL CONCEPTO DE PROCESO Al discutir sobre distintos aspectos

Anuncio
EL CONCEPTO DE PROCESO
Al discutir sobre distintos aspectos de los sistemas operativos nos encontramos con un gran
escollo:
¿Cómo denominamos al conjunto de todas las actividades que efectúa la CPU?
Un sistema en lote (BATCH) ejecuta trabajos (JOBS) en tanto un sistema de tiempo compartido
(TIME SHARING) ejecuta programas de usuario o tareas (TASKS).


En el caso de sistemas mono-usuarios (MS_DOS – MACINTOSH OS) un solo usuario
puede estar corriendo varios programas simultáneamente (o concurrentemente).
En el caso en que el sistema operativo ejecute un solo programa a la vez, también
necesita brindar soporte a sus propias actividades. Por ejemplo el “SPOOLING”.
En muchos aspectos todas las actividades son similares, razón por la cual las denominaremos
“PROCESOS”.
PROCESOS
Informantemente un proceso es un programa en ejecución. La ejecución de un proceso debe
progresar en una forma secuencial en el sentido de que en cualquier instante se estará
ejecutando a lo sumo una instrucción para ese proceso. Un proceso es más que un código de
programa (llamada la sección de texto de proceso). El proceso incluye además la actividad
actual (representada por el contenido del PROGRAM COUNTER, PSW Y LOS REGISTROS DE
USO GENERAL), el stack del proceso (conteniendo los datos temporarios *)
un programa no es un proceso, es una entidad pasiva mientras que un proceso es una entidad
activa con un PROGRAM COUNTER especificando la próxima instrucción a ejecutar y su
conjunto de recursos asociados a dicha posible ejecución.
Aunque 2 procesos están asociados con el mismo programa, se los considera dos secuencias
de ejecución separadas. Por ejemplo: varios usuarios están usando de manera simultanea
copias del programa mail o el mismo usuario está invocando copias del editor de texto. Cada
una de estas actividades son un proceso separado, que si bien tienen secciones de textos
equivalentes, sus secciones de datos y de stack pueden diferir entre sí.
Contenido temporario: parámetros de subrutinas, direcciones de retorno, y variables temporarias. Una
sección de datos (contenido de variables globales de texto)
ESTADO DE UN PROCESO
Mientras que un proceso se ejecutan, cambian sus estados. El estado de un proceso está
parcialmente definido por la actividad actual de dicho proceso. Cada proceso puede estar en
cualquiera de los siguientes estados:





NUEVO: cuando al proceso se lo está creando
CORRIENDO: cuando se está ejecutando alguna instrucción del mismo
ESPERANDO: cuando el proceso está esperando la ocurrencia de algún evento (recibir
una señal, completar una operación de E/S, etc).
LISTO: el proceso está esperando que se le asigne algún procesador.
TERMINADO: cuando el proceso ha finalizado su ejecución.
Estas definiciones son arbitrarias, es decir, pueden variar de SO en SO.
En algunos sistemas operativos se distinguen mucho mas estados que estos 5 estados básicos.
Es de destacar que en cualquier instante solo un proceso puede estar corriendo (RUNNING) en
cualquier procesador.
En el SO para cada proceso se representa por medio de un bloque de control de procesos
(PCB). Los contenidos de la PCB son los siguientes:
1. Estado del proceso
2. Contenido del PROGRAM COUNTER
3. Registros del procesador (CPU REGISTERS): acumuladores, index registers, stack
pointers y registros de uso general. Estos dependen de la arquitectura del
computador.
4. Registros de códigos de condición (PROGRAM STATUS WORD). Los elementos 2 a 4
deben preservarse cada vez que ocurre una instrucción.
5. Información para la planificación en el uso de la CPU: prioridad del proceso, punteros a
las colas de planificación y cualquier otro parámetro de planificación
6. Información para la administración de la memoria necesaria para ejecutar el proceso:
contenidos del registro base y del registro limite, las tablas de páginas, las tablas de
segmentos, etc.
7. Información contable: uso dela CPU, tiempo real usado, limites de tiempo, numero de
JOB, de proceso y contables
8. Información de estado de las E/S: lista de los dispositivos de E/S asignados al proceso,
de los archivos abiertos por proceso, etc.
El PCB es el repositorio de cualquier información que pueda variar de proceso a proceso.
PLANIFICACION DE PROCESOS
El objetivo de la multiprogramación es tener siempre (en la medida de lo posible) un proceso
en ejecución (RUNNING) a los efectos de maximizar el uso de la CPU. En tanto el objetivo del
TIME SHARING es intercambiar (SWITCH) tan frecuentemente el uso de la CPU entre los
procesos. En un sistema monoprocesador nunca vamos a tener más de un proceso en estado
RUNNING con lo que el resto de los procesos que quieran hacer uso de la CPU van a tener que
quedar a la espera hasta que el proceso en ejecución la libere. Estos van a esperar en una cola
de procesos LISTOS.
COLAS DE PLANIFICACION
A medida que un proceso entra al sistema, se lo coloca en una cola de trabajo (JOB QUEUE).
Los procesos residentes en memoria que están esperando su ejecución por tener listos todos
sus recursos asociados, se colocan en la cola de listos (READY QUEUE). Una cabecera de cola
(READY QUEUE HEADER) contendrá los punteros de comienzo y fin de esta lista encadenada
que es la cola de listos. O sea los punteros del primer y del último PCB de la cola. Cada PCB
contiene un puntero al próximo PCB de la cola de listos.
En el sistema hay además de estas colas otras más. Cuando a un proceso se le asigna CPU este
permanece cierto tiempo en uso de la CU hasta que eventualmente finaliza, es interrumpido o
se coloca a la espera de la ocurrencia de algún evento (ejemplo, la finalización de un pedido
E/S). Los pedidos de E/S podrá ser sobre un dispositivo dedicado (un cinta) o sobre un
dispositivo compartido (unidad de disco). En este último caso, como hay muchos procesos en
el sistema intentando acceder al mismo dispositivo compartido, existe una cola de pedidos a
satisfacer por parte del dispositivo. La lista de procesos que están aguardando por un
dispositivo de E/S en particular se llama una cola de dispositivos (DEVICE QUEUE). Cada
dispositivo provee su propia cola.
Un diagrama de colas es la representación mas usada cuando se trata de hablar sobre la
planificación de procesos. En este diagrama cada rectángulo representa una cola, los círculos
los recursos servidos a través de cada cola y las flechas indican al recorrido de los procesos en
el sistema. Hay 2 tipos de cola de listos y un conjunto de colas de dispositivos.
Cola de listos
CPU
E/S
Cola de E/S
Pedido de
E/S
Expiración del
TIME SLICE
Ejecución del hilo
Ocurre la interrupción
FORK un hijo
Espera por una
interrupción
Un proceso inicialmente es colocado en la cola de listos, espera en la cola de listos hasta que
se asigna uso de CPU (es despachado a la CPU) mietras está ejecutando (RUNNING) sobre la
CPU pueden ocurrir algunas de estas alternativas:
1. El proceso emite una solicitud de E/S. entonces se lo coloca en la cola de E/S
2. Expira el tiempo asignado al uso de la CPU (TIME SHARING) con la cual es devuelto a la
cola de listos
3. El proceso crea un nuevo subproceso, y queda a la espera de su finalización
4. Al ocurrir una interrupción se fuerza al proceso abandonar el uso de la CPU
colacondola nuevamente en la cola de listos.
En los casos 1 y 3 el proceso cambia al estado ESPERANDO (o bloqueado). Pasa a la cola de
procesos que están a la espera de la ocurrencia de su suceso para poder continuar su
ejecución. Y ante la ocurrencia de dicho suceso el proceso cambia al estado listo y por lo tanto
debe ser colocado nuevamente en la cola de procesos listos.
Un proceso continua este ciclo hasta que termina (EXIT THE SYSTEM). En ese momento se saca
el PCB de todas las colas, se desasigna todos los recursos allí asignados (en el PCB) y finalmente
se desasigna el PCB en sí (se libera memoria que ocupaba).
PLANIFICADORES
Durante su ciclo de vida un proceso va migrando entre todas estas colas de planificación. El SO
es el encargado de seleccionar procesos de entre todas esas colas, según algún criterio.
El proceso de selección lo efectúa mediante el uso de planificador apropiado.
En un sistema BATCH siempre hay mas procesos ingresados que lo que se puedan ejecutar
(admitidos en el sistema). Los procesos ingresados son “SPOOLEADOS” a un dispositivo de
almacenamiento masivo (generalmente un disco) donde se los almacena hasta su posterior
ejecución. El JOB SVHEDULER (planificador a largo plazo) es el encargado de seleccionar
procesos de este POOL y de cargarlos en memoria para su ejecución (cambio de estado NEW
 READY) luego de lo cual los ingresa en la cola de listos.
El planificador de corto plazo (o planificador de CPU) selecciona un proceso de entre todos los
que está en la cola de listos y se asigna CPU. La primera distribución entre estos 2
planificadores es la “frecuencia con que se ejecutan”. El planificador de corto plazo se requiere
muy frecuentemente, pues se encarga de seleccionar un proceso para que ejecute sobre la
CPU. Un proceso genralmente ejecuta instrucciones durante unos pocos milisegundos
(agregado posible, concepto a tener en cuanta para las estadísticas del procesador en el TP).
Antes de colocarse en espera por algúna operación de E/S solicitada por el mismo.
A menudo el planificador de corto plazo ejecuta al menos cada 100 milisegundos. Debido al
corto periodo entre ejecuciones el planificador de corto plazo debe ser muy rápido. Si el
decidir que proceso asignar a la CPU le llevara 10 milisegundos, entonces estaría usando
10/(100+10) = 9% del tiempo de la CPU para planificar el trabajo de la CPU.
Se desperdicia el 9% del tiempo de la CPU ( y por lo tanto disminuyendo su capacidad de
procesamiento en ese 9%) en su planificador de uso. Por lo tanto el planificador de largo plazo
ejecuta con mucho menos frecuencia en el sistema. Este planificador regula el nivel de
multiprogramación (cantidad de procesos en memoria). Si el nivel de multiprogramación es
estable entonces el tiempo promedio de creación de procesos deberá ser igual al tiempo
procedió de salida de procesos del sistema. En este caso este planificador solo se va a invocar
cada vez que un proceso ( de usuario) abandone el sistema. Debido al largo intervalo de
tiempo entre sucesivas ejecuciones el planificador de largo plazo se puede dar el lujo de
insumir más tiempo en cada una de sus decisiones acerca de qué proceso admitir en el
sistema. Es muy importante para todo el sistema que el planificador de largo plazo haga una
selección acertada. Como en general los procesos se pueden clasificar en acotados por E/S (I/O
BOUNDED) o acotados por uso del procesador (CPU BOUNDED) es muy importante que este
planificador mantenga activa una buena mezcla de estos 2 tipos de procesos. El sistema con
mejor desempeño es aquel que posee una mejor mezcla entre estos 2 tipos de procesos.
Un proceso acotado por E/S es aquel que pasa la mejor parte de su ejecución realizando
operaciones de E/S en lugar de computacionales (CPU). Un proceso acotado por CPU pasa la
mayor parte de su tiempo efectuando cálculos y muy rara vez solicita una operación de E/S.
En algunos sistemas el planificador de largo plazo esta ausente o tiene una influencia minima.
Por ejemplo, los sistemas de tiempo compartido no tienen planificador de largo plazo pues lo
que este hace sencillamente es colocar cada proceso nuevo en memoria para que lo
administre el planificador de corto plazo. La estabilidad de estos sistemas mas dependerá de:
1. Las limitaciones físicas, tales como el numero de terminales disponibles
2. La naturaleza de auto-ajuste en el comportamiento de los seres humanos. Si un
usuario estima que es esos momentos el tiempo de respuesta del sistema esmuy lento
entonces puede tomar la determinación de abandonar la terminal (saliendo del
sistema) para realizar tareas propias que no requieran el uso del computador y volver
a la terminal luego de una largo lapso prolongado (a la espera que el sistema esté
menos congestionado)
Algunos sistemas de tiempo compartido emplean otro nivel de planificación (un nivel
intermedio entre los 2 planificadores mencionados anteriormente): el planificador de
mediano plazo.
La idea que subyace detrás de este planificador es la siguiente: a veces puede resultar
ventajoso quitar procesos de memoria disminuyendo el grado de multiprogramación en el
sistema. Transcurrido un tiempo se reintroduce este proceso a memoria y se continúa con su
ejecución tal como si nada hubiera ocurrido. Este esquema se denomina swapping.
El planificador de mediano plazo es el encargado de efectuar el SWAPP OUT de un proceso en
memoria (generalmente a disco) y también el encargado de hacer SWAPP IN (desde el disco) a
memoria nuevamente. La operación de SWAPPING puede ser necesaria:
1. Para incrementar la mezcla de procesos BOUNDED
2. Porque un cambio en los requerimientos de memoria la ha sobresaturado en su uso,
convirtiendo este recurso en el cuello de botella de todo el sistema, siendo necesario
liberar memoria para que todo vuelva a funcionar con normalidad.
CONTEXT (OR PROCESS) SWITCH
Cambiar (SWITCH) el uso de la CPU a otro proceso requiere salvar el estado del proceso viejo y
cargar el estado salvado del nuevo proceso. Esta tarea se conoce como CONTEXT SWITCH.
El tiempo que insume un cambio de contexto es sobrecarga pura, pues durante todo el lapso
que demora este cambio de contexto la CPU no realiza ningún trabajo productivo.
La velocidad del cambio de contexto depende de varios factores que varían de maquina en
maquina:
1. Velocidad de la memoria
2. Cantidad de registros a ser salvados
3. La existencia de instrucciones especiales (que permitan salvar y restaurar todos los
registros involucrados)
Un CONTEXT SWITCH puede varias entre 1 y 1000 microsegundos. El tiempo que demore
CONTEXT SWITCH va a depender mucho del soporte HARWARE. También dependerá de la
complejidad del SO empleado. Cuanto mas complejo el SO mas lento el cambio de contexto.
Cuanto mas flexible sea el uso de la memoria mas datos van a tener que ser manejados en
cada cambio de contexto (pues los espacios de direcciones de cada proceso involucrado
deberán esatar protegidos adecuadamente) haciendo a su vez mas lento cada CONTEXT
SWITCH. Como se preserva el ADRESS SPACE de cada proceso dependerá del método de
administración de memoria empleado por SO.
El CONTEXT SWITCH se ha convertido en un cuello de botella en el rendimiento del equipo,
hasta tal punto que para evitarlo se debieron crear nuevas estructuras los hilos (THREADS)
Descargar