Sistemas Operativos - Silberschatz Galvin
Sistemas Operativos - Silberschatz Galvin
Sistemas Operativos - Silberschatz Galvin
Capitulo 4 Procesos
cabecera de cola cola de procesos listos
-1
95
MONTEVU)b:O
I7T?TTf;IIAY
cola de p llstos
flnal solicttud de US
final
i
unidad de cinta rnagnetica 1
PCB,
unidad de dlsco 0
El proceso podria emitir una solicitud de E/S, y entonces colocarse en una cola de E/S. El proceso podria crear un nuevo subproceso y esperar a que termine. El proceso podria ser desalojado por la fuerza de la CPU, como resultado de una interruption, y ser colocado otra vez en la cola de procesos listos. En 10s dos primeros casos, el proceso tarde o temprano pasara del estado de espera a1 estado listo, y se le colocara de nuevo en la cola de procesos listos. Cada proceso continua este ciclo hasta terminar, y entonces se le elimina de todas las colas; su PCB y todos sus recursos se liberan.
4.2.2 Planificadores
Un proceso migra de una cola de planificacidn a otra durante toda su existencia. Para fines de planificacion, el sistema operativo debe seleccionar procesos de estas colas de alguna manera. El planificador apropiado se encarga de este proceso de seleccidn.
En un sistema por lotes, es comun que haya mas procesos presentados de 10s que se pueden ejecutar inmediatamente. Estos procesos se colocan en spool en un dispositivo de almacenamiento masivo (por lo regular un disco), y ahi esperan hasta que pueden ejecutarse. El planificador a largo plazo (o planificador de trabajos) escoge procesos de esta reserva y 10s carga en la memoria para que se ejecuten. El planificador a corto plazo (o planificador de CPU) escoge entre 10s procesos que estan listos para ejecutarse, y asigna la CPU a uno de ellos. La distincion primaria entre estos dos planificadores es la frecuencia con que se ejecutan. El planificador a corto plazo debe seleccionar un proceso nuevo para la CPU de forma relativamente frecuente. Un proceso podria ejecutarse durante unos cuantos milisegundos antes de esperar una solicitud de E/S. En muchos casos, el planificador a corto plazo se ejecuta por lo menos una vez cada 100 milisegundos. Dada la brevedad del lapso entre ejecuciones, el planificador a corto plazo debe ser muy rapido. Si se requieren 10 milisegundos para tomar la decision de ejecutar un proceso durante 100 milisegundos, se estara gastando (desperdiciando) el 10/(100 + 10) = 9% del tiempo de CPU simplemente para planificar el trabajo. El planificador a largo plazo, en cambio, se ejecuta con una frecuencia mucho menor. Podrian pasar minutos entre la creacidn de procesos nuevos en el sistema. El planificador a largo plazo controla el gmdo de multiprogramacid~z (el numero de procesos que estan en la memoria). Si el grado de multipr~gramacion es estable, la frecuencia promedio de creacidn de procesos debe ser iga&.i la frecuencia promedio de salida de procesos del sistema. Asi, podria ser que s61GSea necesario invocar el planificador a largo plazo cuando un proceso sale del sistema. Como el interval0 entre ejecuciones es mas largo, el planificador a largo plazo puede darse el lujo de tardar mds en decidir cual proceso escogerh para ejecutarlo.
96
Capitulo 4 Procesos
97
Es importante que el planificador a largo plazo haga una selecci6n cuidadosa. En general, 10s procesos pueden describirse como limitados por E/S o limitados por CPU. Un proceso limitado por EIS es uno que dedica la mayor parte de su tiempo a operaciones de E/S, y menos a realizar c~lculos. Un proceso limitado por CPU, en cambio, genera solicitudes de E/S con poca frecuencia, y dedica mas de su tiempo a realizar calculos que un proceso limitado por E/S. Es importante que el planificador a largo plazo escoja una buena mezcla de procesos limitados por E / S y limitados por CPU. Si todos 10s procesos estdn limitados por E/S, la cola de procesos listos casi siempre estard vacia, y el planificador a corto plazo casi no tendra qu6 hacer. Si todos 10s procesos estan limitados por CPU, la cola de espera de E/S casi siempre estara vacia, 10s dispositivos estaran ociosos, y una vez mas el sistema estara desbalanceado. El sistema con el mejor rendimiento tiene una combinaci6n de procesos limitados por E/S y limitados por CPU. En algunos sistemas, el planificador a largo plazo podria estar ausente o ser minimo. Por ejemplo, es comun que 10s sistemas de tiempo compartido no tengan planificador a largo plazo y se limiten a colocar todos 10s procesos nuevos en la memoria para el planificador a corto plazo. La estabilidad de estos sistemas depende de una limitaci6n fisica (corno el nfimero de terminales disponibles) o bien de la naturaleza autoajustable de 10s usuarios humanos. Si el desempefio baja a niveles inaceptables, algunos usuarios simplemente se daran por vencidos y haran alguna otra cosa. Algunos sistemas operativos, como 10s de tiempo compartido, godrian introducir un nivel adicional, intermedio, de planificaci6n. Este planificador a mediano plazo se muestra en forma de diagrama en la figura 4.6. La idea clave en que se basan 10s planificadores a mediano plazo es que a veces puede ser provechoso sacar procesos de la memoria (y de la contenci6n activa por la CPU) a fin de reducir el grado de multiprogramacion. En algun momento posterior, el proceso se reintroducira en la memoria y podrd continuar su ejecuci6n donde se qued6. Este esquema se denomina intercambio (swapping). El planificador a mediano plazo intercambia el proceso a disco y luego lo intercambia a la memoria. Esto puede ser necesario para mejorar la mezcla de procesos o cuando un cambio en las necesidades de memoria ha distribuido la memoria disponible entre demasiados procesos, y es preciso liberar algo de memoria. El intercambio se estudiard con mas detalle en el capitulo 8.
sale por ~ntercsmb~o
4.3
Los procesos del sistema se pueden ejecutar de forma concurrente, y se deben crear y eliminar dindmicamente. Por ello, el sistema operativo debe contar con un mecanismo para crear y terminar procesos.
4.3
99
98
Capitulo 4 Procesos
El proceso hijo es un duplicado del proceso padre. Se carga un programa en el proceso hijo.
I
pagedaemon
~ n ~ t
padre. El padre quiza tenga que dividir sus recursos entre sus hijos, o tal vez varios de sus hijos puedan compartir algunos recursos (como memoria o archivos). La restricci6n de un proceso hijo a un subconjunto de 10s recursos del padre impide que cualquier proceso sobrecargue el sistema creando demasiados subprocesos. Ademas de 10s diversos recursos fisicos y logicos que un proceso obtiene cuando se crea, el proceso padre podria pasar a su hijo datos de iniciaci6n (entradas). Por ejemplo, consideremos un proceso cuya funci6n es exhibir la situacidn de un archivo, digamos Al, en la pantalla de una terminal. En el momento de crearse recibir$ como entradas de su proceso padre, el nombre del archivo Al, y se ejecutard utilizando ese dato para obtener la informaci6n deseada. El proceso tambien podria recibir el nombre del dispositivo de salida. Algunos sistemas operativos pasan recursos a 10s procesos hijos. En un sistema semejante, el proceso nuevo podria obtener dos archivos abiertos, A1 y el dispositivo de terminal, y tal vez s610 tendria que transferir el dato entre 10s dos. Cuando un proceso crea un proceso nuevo, hay dos posibilidades en tQminos de ejecuci6n: El padre sigue ejecutiindose de forma concurrente con sus hijos. El padre espera hasta que algunos de sus hijos, o todos, han terminado. Tambien hay dos posibilidades en terminos del espacio de direcciones del nuevo proceso:
Para ilustrar estas diferentes implementaciones, consideremos el sistema operativo UNIX. En UNIX, cada proceso se identifica con su identificador de proceso, que es un entero unico. Se crea un proceso nuevo con la llamada a1 sistema fork (bifurcar). El nuevo proceso consiste en una copia del espacio de direcciones del proceso original. Este mecanismo permite a1 proceso padre comunicarse fdcilmente con su proceso hijo. Ambos procesos (el padre y el hijo) continuan su ejecuci6n con la instrucci6n que sigue a1 fork con una diferencia: el c6digo de retorno que el proceso nuevo (hijo) recibe del fork es cero, per0 a1 padre se devuelve el identificador de proceso (distinto de cero) del hijo. Por lo regular, uno de 10s dos procesos utiliza la llamada a1 sistema execve despues del fork para reemplazar su espacio de memoria con un programa nuevo. La llamada execve carga un archivo binario en la memoria (destruyendo la imagen de memoria del programa que contenia la llamada execve) e inicia su ejecuci6n. De esta forma, 10s dos procesos pueden comunicarse, y luego cada uno sigue su propio camino. El padre puede crear mAs hijos o, si no tiene nada mds que hacer mientras el hijo se ejecuta, puede emitir una llamada a1 sistema wait (esperar) para sacarse a si mismo de la cola de procesos listos hasta que el hijo termine. El sistema operativo DEC VMS, en contraste, crea un proceso nuevo, carga un programa especificado en ese proceso, e inicia su ejecuci6n. El sistema operativo Microsoft Windows NT maneja ambos modelos: el espacio de direcciones del padre podria duplicarse, o el padre podria especificar el nombre de un programa que el sistema operativo cargard en el espacio de direcciones del nuevo proceso.