Con el fin de lograr estos objetivos el SO cuenta, como uno de sus

Anuncio
Con el propósito de planificar el uso de la CPU, el módulo de planificación del
procesador define dos funciones estrechamente relacionadas conocidas como:

planificador, tiene la tarea de seleccionar (entre los procesos listos) el
próximo proceso al que se le asignará la CPU,

despachador, es el responsable de cargar, los registros de la CPU con
los valores contenidos en el PCB del
proceso escogido por el
planificador.
Para lograr sus propósitos el SO debe mantener una o varias colas de
planificación. Cuando los procesos entran al sistema se ponen en una cola de
trabajos que contiene todos los procesos del sistema, los procesos que ya
tienen todo lo necesario para ejecutar se ponen en la cola de listos (ready
queue). En general existen diversas colas dentro del sistema, por ejemplo una
por cada equipo de entrada salida.
Observe la figura 1, en las colas se
encuentran los PCB que son los representantes de los procesos que esperan
por los servicios del módulo correspondiente.
1
Encabezado
Cola de
listo
PCB7
PCB2
cabeza
cola
registros
registros
Unidad 0
de cinta
magnética
cabeza
•
•
•
•
•
•
Unidad 1
de cinta
magnética
cabeza
Unidad 0
de disco
Terminal 0
cola
cola
PCB3
PCB14
cabeza
cola
cabeza
PCB5
cola
•
•
Figura 1. Cola• de listo y otras colas asociadas a distintos equipos
Planificadores
Dependiendo del SO, pueden existir varios planificadores, en general se
distinguen tres: de periodo corto, de periodo medio y de periodo largo (vea los
nodos correspondientes).
Objetivos de la planificación de la CPU
La planificación de la CPU es la tarea primordial en los sistemas
multiprogramados, los planificadores se encargan de realizarla de manera que el
procesador se comparta entre los distintos procesos e hilos que se ejecutan en
el sistema.
Una vez que el planificador de periodo corto selecciona el próximo proceso a
ejecutar, el despachador se encarga de cambiar de contexto (cambiar para el
2
PCB6
nuevo proceso), cambiar el procesador a modo usuario e ir a la instrucción
adecuada para comenzar la ejecución del nuevo proceso.
Existen diversos criterios que deben tomarse en cuenta para comparar los
algoritmos de planificación de la CPU, entre otros se pueden citar:
1. La utilización de la CPU. Se desea tenerla lo más ocupada posible.
2. La cantidad de trabajos que terminan en la unidad de tiempo.
3. El tiempo que toma un trabajo en particular para ejecutarse.
4. El tiempo de espera que pasa el proceso en la cola de listo.
5. El tiempo que tarda en dar la primera respuesta.
Operaciones sobre procesos

Creación de proceso. Un proceso, denominado padre, puede crear varios
procesos hijos, los cuales a su vez pueden tener otros hijos formando un
árbol de procesos. La figura 2 presenta un árbol de procesos creado en el
SO Solaris, obsérvese los pid de cada proceso. Se puede obtener la lista
de procesos en un sistema Unix usando el comando ps.
Cuando un proceso crea un hijo, existen dos posibilidades en relación a la
ejecución:
o El padre continúa ejecutando concurrentemente con el hijo.
o El padre espera a que el hijo termine.
También existen dos posibilidades con relación a la memoria:
o El proceso hijo es un duplicado del padre porque tiene el mismo
programa y datos que el padre. Es lo que ocurre con la llamada al
sistema fork típica de los sistemas Unix.
o El proceso hijo carga un nuevo programa. . Es lo que ocurre con la
llamada al sistema fork y una posterior llamada exec (en Unix)
3
Figura 2. Árbol de procesos creados en un sistema Solaris

Terminación de procesos. Un proceso termina cuando ejecuta su última
sentencia y le pide al SO que lo borre para lo cual usa la llamada al
sistema exit. El SO le retira todos los recursos asignados. Un proceso
también puede terminar la ejecución de otro (si es que se le permite).
Comunicación entre procesos
Los procesos que ejecutan en un SO pueden ser independientes o pueden
comunicarse entre sí con el propósito de realizar tareas cooperadas. Los
procesos que cooperan entre sí necesitan alguna forma de comunicarse.
Existen, básicamente, dos formas de cooperación.

Pasando mensajes. Útil para intercambiar pequeños volúmenes de
información y fácil de implementar.

Compartiendo una memoria común. Más rápido.
4
La figura 3 presenta ambos modelos.
Proceso A
Proceso A
M
Proceso B
Memoria compartida
M
Proceso B
2
1
1
M
Núcleo
Núcleo
(a)
(b)
Figura 3. Comunicación entre procesos, a) paso de mensajes, b) memoria
compartida.
Sistemas de memoria compartida
Estos sistemas necesitan la comunicación entre procesos para establecer, de
forma precisa, la memoria común a compartir (normalmente el SO no permite
que un proceso acceda a la memoria de otro), una vez establecido el acuerdo
entre los procesos, el SO no tiene participación del problema.
Considérese
el
problema
clásico
productor-consumidor.
Un
proceso,
denominado productor, produce información que es consumida por otro proceso,
que se llama consumidor. Una solución a ese problema es usar un espacio de
memoria común en donde el productor pone la información para que el
consumidor la extraiga. El productor puede estar produciendo mientras el
consumidor consume con el único cuidado de no estar usando exactamente las
mismas direcciones de la memoria compartida, la cual se puede ver como un
buffer con diferentes ítems.
5
Existen dos posibilidades con relación al buffer:

Que sea no acotado (prácticamente sin limitación de espacio), en ese
caso el productor nunca tendrá que esperar (siempre hay donde poner lo
que se produce).

Que sea acotado. En este caso, si todos los buffer están llenos, el
productor tendrá que esperar.
En cualquiera de los dos casos el consumidor tendrá que esperar cuando el
buffer esté vacío.
De todo lo anterior queda claro que debe haber una sincronización entre
ambos procesos.
6
Descargar