You are on page 1of 25

Unidad IV

ADMINISTRACIN DE PROCESOS
Y
DE MEMORIA
4.1. INTRODUCCIN A LOS PROCESOS

Todas las computadoras modernas hacen varias cosas al mismo tiempo. A la vez que
ejecuta un programa del usuario, una computadora puede leer de un disco e imprimir en
una terminal o impresora. En un sistema de multiprogramacin, la CPU tambin alterna
de programa en programa, ejecutando cada uno de ellos por decenas o cientos de
milisegundos. Aunque, en sentido estricto, la CPU ejecuta en cierto instante un solo
programa, durante un segundo puede trabajar con varios de ellos, lo que da una apariencia
de paralelismo. A veces, las personas hablan de pseudoparalelismo para indicar este
rpido intercambio de los programas en la CPU, para distinguirlo del paralelismo real del
hardware, donde se hacen clculos en la CPU a la vez que operan uno o ms dispositivos
de entrada/salida. Es difcil mantener un registro de las distintas actividades paralelas.
Por lo tanto, los diseadores del sistema operativo han desarrollado con el tiempo un
modelo que facilita el uso del paralelismo.

4.2. CONCEPTO DE PROCESO

Tambin llamadas tareas y es una instancia de un programa en ejecucin, unidad ms


pequea de trabajo individualmente panificable por un sistema operativo. Es una divisin
implcita de tareas definidas por el sistema, tambin se dice que pueden estar definidas
por el programador, es decir pueden ser tecleadas mediante cdigo por el usuario es decir
mandar a leer de una unidad de disco, imprimir en una terminal o impresora. El trmino
"PROCESO", fue utilizado por primera vez por los diseadores del sistema Multics1 en
los aos 60s. Desde entonces, el trmino proceso, utilizado a veces como sinnimo de
tarea, ha tenido muchas definiciones.

A continuacin se presentan algunas:

Un programa en ejecucin.
Una actividad asncrona.
El "espritu animado" de un procedimiento.
El "centro de control" de un procedimiento en ejecucin
Lo que se manifiesta por la existencia de un "bloque de control del proceso" en el
sistema operativo.
La entidad a la que se asignan los procesadores.
La unidad "despachable"

Aunque se han dado muchas otras definiciones, no hay una definicin universalmente
aceptada, pero el concepto de "Programa en ejecucin" parece ser el que se utiliza con
ms frecuencia. Un programa es una entidad inanimada; slo cuando un procesador le
"infunde vida" se convierte en la entidad "activa" que se denomina proceso.

Los procesos son divididos por el sistema y la divisin aparece en sistemas de


multiprogramacin como por ejemplo un sistema de tiempo compartido donde cada
programa se lo trata como independiente. [25]

Un proceso pasa por una serie de datos discretos. Se dice que un proceso se est
ejecutando (estado de ejecucin), si tiene asignada la UCP2. Se dice que un proceso est
listo (estado listo) si pudiera utilizar una UCP en caso de haber una disponible. Un
proceso est bloqueado (estado bloqueado) si est esperando que suceda algn evento
antes de poder seguir la ejecucin.

1 (Multiplexed Information and Computing Service) fue uno de los primeros sistemas operativos de tiempo compartido
y tuvo una gran influencia en el desarrollo de los posteriores sistemas operativos.
2 Unidad central de procesamiento, donde se ejecutan las instrucciones de programas y se controla el funcionamiento

de los distintos componentes de una computadora.


4.3. CARACTERSTICAS

Las caractersticas principales de los procesos son:

Una caracterstica fundamental de los procesos concurrentes es la competencia


que se establece entre ellos cuando han de compartir recursos.
Cooperacin, cuando dos o ms procesos se estn llevando a cabo de manera que
uno depende del otro es necesario que exista una cooperacin entre ambos.
Se pueden formar familias de procesos segn sean o no interdependientes.
Una operacin que sufren los procesos usualmente es el cambio de contexto, que
consiste en retirar el control de la CPU del proceso actual, y asignarla a otro
proceso.
Los sistemas operativos deben proporcionar alguna forma de crear y destruir los
procesos. Cada proceso tiene un padre y cero o ms hijos. As, existe una jerarqua
de procesos que se puede representar en forma de rbol. [26]

4.4. CARACTERSTICAS ESPECIALES DE UN PROCESO

El S.O. crea procesadores virtuales. Cada uno de ellos es una copia idntica del
procesador fsico y ejecuta un programa sobre cada uno.

Un Proceso es una secuencia dinmica de instrucciones mientras que un programa


es una secuencia esttica de instrucciones.
Un proceso tiene asociado un programa que ejecuta

4.5. COMPOSICIN Y ESTRUCTURA

El sistema operativo mantiene una tabla de procesos, dentro de la que se almacena un


bloque de control de proceso (BCP) por cada proceso. Por razones de eficiencia, la
tabla de procesos se construye normalmente como una estructura esttica que tiene
un determinado nmero de BCP, todos ellos del mismo tamao.

El BCP contiene la informacin bsica del proceso:


Informacin de identificacin: Esta informacin identifica al usuario y al
proceso. Como ejemplo, se incluyen los siguientes datos:
- Identificador del proceso: Es un nmero i entre 0-N (no se admiten
n negativo). Se le denomina PID 3y es el mismo durante toda la vida
del proceso.
- Identificador del proceso padre en caso de existir relaciones padre-hijo
como es el caso de UNIX4.
- Informacin sobre el usuario (identificador del usuario, identificador
del grupo).
Estado del procesador: Contiene los valores iniciales del estado del
procesador o su valor en el instante en que fue interrumpido el proceso.
Informacin de control del proceso: En esta seccin se incluye diversa
informacin que permite gestionar el proceso. Destacaremos los siguientes
datos:
- Informacin de planificacin y estado.
- Estado del proceso.
- Evento por el que espera el proceso cuando est bloqueado.
- Prioridad del proceso.
- Informacin de planificacin.
- Descripcin de los segmentos de memoria asignados al proceso.
- Recursos asignados.
- Archivos abiertos (tablas de descriptores o manejadores de archivo).
- Puertos de comunicacin asignados.
Punteros: Para estructurar los procesos en colas o anillos: Por ejemplo, los
procesos que estn en estado de listo pueden estar organizados en una cola,
de forma que se facilite la labor del planificador.

3 Mecanismo de control por realimentacin ampliamente usado en sistemas de control industrial. Este calcula la
desviacin o error entre un valor medido y un valor deseado. El algoritmo del control PID consiste de tres parmetros
distintos: el proporcional, el integral, y el derivativo.
4 (registrado oficialmente como UNIX) es un sistema operativo portable, multitarea y multiusuario; desarrollado, en

principio, en 1969, por un grupo de empleados de los laboratorios Bell de AT&T, entre los que figuran Dennis Ritchie,
Ken Thompson y Douglas McIlroy.
Comunicacin entre procesos: El BCP puede contener espacio para
almacenar las seales y para algn mensaje enviado al proceso.

4.6. EL BLOQUE DE CONTROL DE PROCESOS (PCB)

Un proceso se representa desde el punto de vista del sistema operativo, por un conjunto
de datos donde se incluyen el estado en cada momento, recursos utilizados, registros,
etc., denominado Bloque de Control de Procesos (PCB).

Es una estructura asociada a cada proceso en la cual se almacena informacin referente


a dicho proceso. Cuando un proceso es creado, junto a l ha de crearse un bloque de
control de proceso (BCP) asignado al mismo.

Los objetivos del bloque de control de procesos son los siguientes:

Localizacin de la informacin sobre el proceso por parte del sistema


operativo.
Mantener registrados los datos del proceso en caso de tener que suspender
temporalmente su ejecucin o reanudarla.

La informacin contenida en el bloque de control es la siguiente:

Estado del proceso: Informacin relativa al contenido del controlador del


programa (Program Counter, PC), estado de procesador en cuanto a
prioridad del proceso, modo de ejecucin, etc., y por ltimo el estado de
los registros internos de la computadora.
Estadsticas de tiempo y ocupacin de recursos para la gestin de la
planificacin del procesador.
Ocupacin de memoria interna y externa para el intercambio (swapping).
Recursos en uso (normalmente unidades de entrada/salida).
Archivos en uso.
Privilegios.
Estas informaciones se encuentran en memoria principal en disco y se accede a ellas
en los momentos en que se hace necesaria su actualizacin o consulta. Los datos
relativos al estado del proceso siempre se encuentran en memoria principal.

El cambio de contexto se producir en caso de ejecucin de una instruccin


privilegiada, una llamada al sistema operativo o una interrupcin, es decir, siempre
que se requiera la atencin de algn servicio del sistema operativo.

4.7. MODELO DE PROCESOS

Todo el software ejecutable de la computadora, se organiza en varios procesos


secuenciales. Un proceso es tan solo un programa en ejecucin, lo que incluye los
valores activos del contador, registros y variables del programa. Cada proceso tiene
su CPU virtual, la realidad es que la verdadera CPU alterna entre los procesos, es
mucho ms fcil pensar en un conjunto de procesos en ejecucin paralela, que pensar
que llevar un registro de la forma en que alterna la CPU de programa en programa,
esta alternativa se llama multiprogramacin.

En UNIX, los procesos se crean mediante la llamada al sistema FORK5, el cual crea
una copia idntica del proceso que hace la llamada. Despus de la llamada FORK, el
padre sigue su ejecucin, en paralelo con el hijo. El padre puede dar lugar entonces a
ms hijos, de forma que en cualquier momento podran estar varis hijos en ejecucin.
Los hijos tambin pueden ejecutar FORK, por lo que es posible obtener un rbol de
procesos, de profundidad arbitraria.

5Esta es una llamada a sistema para el control de procesos que al ser invocada genera un proceso hijo, como una copia
del proceso en donde fue invocada la llamada, este hijo es casi exactamente igual a su padre (lo nico que los diferencia
es su pid), retorna el pid del hijo al padre, al hijo le retorna en la copia de la llamada fork() el valor cero sin generar
otra copia y ejecuta el proceso hijo desde este punto del cdigo, es decir, lo que hay tras la invocacin fork() no se
ejecuta.
4.8. CLASIFICACIN DE LOS PROCESOS

Los procesos que implementa un sistema operativo se clasifican segn el grado en


que comparten la memoria.

Procesos Pesados (proceso Unix): Los procesos no comparten ninguna


porcin de la memoria. Cada proceso se ejecuta en su propio procesador
virtual con CPU y memoria. Todos los procesos s comparten el mismo
espacio de almacenamiento permanente (el disco).
Procesos Livianos o threads: Los threads comparten toda la memoria y el
espacio de almacenamiento permanente.

El primer tipo de procesos se dice pesado porque el costo de implementacin en


tiempo de CPU y memoria es mucho ms elevado que el de los procesos livianos.
Adems la implementacin de procesos pesados requiere de una MMU o Unidad de
Manejo de la
Memoria. Esta componente de hardware del procesador se encarga de la traduccin
de direcciones virtuales a reales. La implementacin en software de esta traduccin
sera demasiado costosa en tiempo de CPU, puesto que para garantizar una
verdadera proteccin habra que recurrir a un intrprete del lenguaje de mquina

Unix estndar slo ofrece procesos pesados, pero como veremos existen extensiones
que implementan procesos livianos para Unix. Un ejemplo de sistema de procesos
livianos es el que implementaba el sistema operativo de los computadores
Commodore Amiga, que no tena la MMU necesaria para implementar procesos
pesados.

La ventaja de los procesos pesados es que garantizan proteccin. Si un proceso falla,


los dems procesos continan sin problemas. En cambio s un thread falla, esto causa
la falla de todos los dems threads que comparten el mismo procesador.

4.9. REPRESENTACIN DE LOS PROCESOS


Mquina Virtual: En la ejecucin de cada proceso quedan cableados en forma virtual
todos los recursos necesarios para su ejecucin. El S.O. controla la correspondencia
dinmica de los Recursos de la Mquina Virtual y los fsicos del sistema.

Como se observa en la figura siguiente el Sistema Operativo, a travs del Kernel, crea
esa mquina virtual que permite la ejecucin de los procesos sobre un procesador
(Hardware cableado para cada instruccin del programa en ejecucin) haciendo una
abstraccin de la complejidad del procesamiento.

Figura. 4.01. MQUINA VIRTUAL

Dado que la cantidad de objetos que puede usar un proceso para su ejecucin son
variables (espacio de nombres del proceso) y la cantidad de objetos del procesador son
fijos (espacio de nombres del procesador) es necesario homogenizar el espacio de
nombres que se carga sobre el procesador (imagen del proceso). Si el espacio de
nombres del proceso es ms grande se requiere hacer referencia mediante un registro
interno del procesador como puntero ndice a la direccin del Stack donde estn los
objetos del PCB an no cargados sobre el procesador. Sin embargo, si el espacio de
nombres del proceso es ms pequeo o igual al del procesador no es necesario este
puntero.

Un proceso lo podemos ver como la composicin de tres componentes fundamentales


cuya implementacin seria la siguiente:
Un programa ejecutable
Los datos asociados necesarios para el programa: variables, espacio de trabajo,
buffers, rea de datos, etc..
Contexto de ejecucin del programa: incluye los contenidos de varios registros
del procesador (Program Counter, registros de datos, etc.), la prioridad del
proceso y si est esperando la terminacin de un suceso particular de E/S.
(PCB)

El Kernel tiene una lista de procesos activos cargados en el rea de Memoria reservado
para el S.O. El procesador ejecuta a travs del Program Counter (PC) los distintos
objetos involucrado en las instrucciones.

Los dems registros del procesador sirven para controlar los distintos recursos que
tiene asignado el proceso.

Por ejemplo base y lmite de memoria donde est cargado el programa o los datos, etc.

4.10. ESTADOS DE LOS PROCESOS.

Los bloques de control de los procesos se almacenan en colas, cada una de las
cuales representa un estado particular de los procesos, existiendo en cada bloque,
entre otras informaciones. Los estados de los procesos son internos del sistema
operativo y transparente al usuario.

Los estados de los procesos se pueden dividir en dos tipos: activos e inactivos.

1. Estados activos: Son aquellos que compiten con el procesador o estn en


condiciones de hacerlo. Se dividen en:
Ejecucin: Estado en el que se encuentra un proceso cuando tiene el
control del procesador. En un sistema monoprocesador este estado slo lo
puede tener un proceso.
Preparado: Aquellos procesos que estn dispuestos para ser ejecutados,
pero no estn en ejecucin por alguna causa (Interrupcin, haber entrado
en cola estando otro proceso en ejecucin, etc.).
Bloqueado: Son los procesos que no pueden ejecutarse de momento por
necesitar algn recurso no disponible (generalmente recursos de
entrada/salida).
2. Estados inactivos: Son aquellos que no pueden competir por el procesador, pero
que pueden volver a hacerlo por medio de ciertas operaciones. En estos estados se
mantiene el bloque de control de proceso aparcado hasta que vuelva a ser activado.
Se trata de procesos que no han terminado su trabajo que lo han impedido y que
pueden volver a activarse desde el punto en que se quedaron sin que tengan que
volver a ejecutarse desde el principio.

Son de dos tipos:

Suspendido bloqueado: Es el proceso que fue suspendido en espera de un


evento, sin que hayan desaparecido las causas de su bloqueo.
Suspendido programado: Es el proceso que han sido suspendido, pero no
tiene causa para estar bloqueado.

4.11. TRANSICIONES DE ESTADO


Todo proceso a lo largo de su existencia puede cambiar de estado varias veces.
Cada uno de estos cambios se denomina transaccin de estado. Estas
transacciones son las siguientes:
1. Comienzo de la ejecucin. Todo proceso comienza al ser dada la orden de
ejecucin del programa insertndose en la cola de preparados. El encolamiento
depender de la poltica de gestin de dicha cola.
2. Paso de estado de ejecucin. Cuando el procesador se encuentra inactivo y en la
cola de preparados exista algn proceso en espera de ser ejecutado, se pondr en
ejecucin el primero de ellos.
3. Paso a estado bloqueado. Un proceso que se encuentre en ejecucin y que
solicite una operacin a un dispositivo externo, teniendo que esperar a que dicha
operacin finalice, ser pasado de estado de ejecucin a estado bloqueado
insertndose su PCB en la cola correspondientes de bloqueado. A partir de este
momento el procesador pone en ejecucin el siguiente proceso, que ser el
primero de la cola de preparados.
4. Paso a estado preparado. Este paso puede ser producido por alguna de las
siguientes causas.

Orden de ejecucin de un programa, con la cual, ya se ha mencionado, el


proceso pasa a la cola de preparados.
Si un proceso est en estado bloqueado por causa de una operacin de
entrada/salida y est finaliza, pasar de la cola de bloqueados a la de
preparados.
Si un proceso est en ejecucin y aparece una interrupcin que fuerza al
sistema operativo a ejecutar otro proceso, el primero pasar al estado de
preparado y su PCB a la cola de preparados.
Activacin. Un proceso suspendido previamente sin estar bloqueado
pasar al estado preparado al ser activado nuevamente.

5. Paso a estado suspendido bloqueado. Si un proceso est bloqueado y el sistema


operativo recibe la orden de suspenderlo, su PCB entrar en la cola de procesos
suspendidos bloqueados.

6. Paso a estado suspendido preparado. Este paso se puede producir bajo tres
circunstancias:
Suspensin de un proceso preparado pasando ste de la cola de procesos
preparados a la de suspendidos preparados
Suspensin de un proceso en ejecucin, con lo cual el proceso pasa a la
cola de suspendidos preparados.
Desbloqueo de un proceso suspendido bloqueado por desaparecer la causa
que impeda el ser activado de nuevo.
4.12. OPERACIONES SOBRE PROCESOS
Los S.O. con multitarea permiten numerosas operaciones dedicadas a la gestin de
procesos. Los sistemas operativos actuales poseen una serie de funciones cuyo
objetivo es el de la manipulacin de los procesos. Las operaciones que se pueden hacer
sobre un proceso son las siguientes:

Creacin de procesos; crear (id_proceso, atributos): El S.O. primero


comprobar que no existen errores en la llamada. A continuacin se crea el
proceso, se pasan los atributos como parmetros, se reserva memoria para el
proceso (tanto para el BCP como para el cdigo y los datos) y se aade a la
cola de preparado.
La creacin de un proceso puede ser de dos tipos:
- Jerrquica: En ella, cada proceso que se crea es hijo del proceso
creador y hereda el entorno de ejecucin de su padre. El primer proceso
que ejecuta un usuario ser hijo del intrprete de comandos con el que
interacta.
- No jerrquica: Cada proceso creado por otro proceso se ejecuta
independientemente de su creador con un entorno diferente. Es un tipo
de creacin que no suele darse en los sistemas operativos actuales.
Eliminacin de procesos; eliminar (id_proceso): Para eliminar un proceso
es necesario que este sea hijo del proceso eliminador, ya que de no ser as
podra volverse inconsistente el sistema. Una vez realizada la llamada, el S.O.
verifica que no existen errores para a continuacin liberar los recursos
retenidos por el proceso. Finalmente se destruye el BCP.
Suspender un proceso: Es un proceso de alta prioridad que paraliza un
proceso que puede ser reanudado posteriormente. Suele utilizarse en ocasiones
de mal funcionamiento o sobrecarga del sistema.
Reanudar un proceso: Trata de activar un proceso que ha sido previamente
suspendido.
Cambiar la prioridad de un proceso.
Temporizar la ejecucin de un proceso: Hace que un determinado proceso
se ejecute cada cierto tiempo (segundos, minutos, horas...) por etapas de una
sola vez, pero transcurrido un periodo de tiempo fijo.

Despertar un proceso: Es una forma de desbloquear un proceso que habr


sido bloqueado previamente por temporizacin o cualquier otra causa. El
mecanismo para despertar procesos se activa en cada ciclo de reloj,
recorrindose la cola de procesos retardados para activarlos o disminuir en una
unidad el nmero de pulsos de espera. Devuelve un cdigo de error si el PID
que se pasa no existe.
Obtencin de informacin; inf_proc (id_proceso,est_BCP): Devolver una
copia del BCP del proceso requerido. El S.O. debe comprobar que no existen
errores en los parmetros.
Modificacin de la informacin de un proceso; mod _inf (id_proceso,
est_BCP): El proceso modificador debe enviar como parmetros el PID del
proceso que modifica y un nuevo BCP que sustituya al actual. El S.O.
comprobar los posibles errores producidos.
Retardar un proceso; retardar (tiempo): El proceso que realiza esta llamada
se autodetiene durante el tiempo indicado y pierde el control de la CPU durante
ese tiempo. Los ciclos de reloj de espera se anotan en el BCP (utilizados
posteriormente en la planificacin de procesos). Finalmente, cuando el tiempo
transcurre, el ncleo del S.O. introduce al proceso en la cola de procesos
preparados para intentar ejecutarlo inmediatamente.
TABLA. 4.01. RAZONES PARA LA TERMINACIN DE UN PROCESO
Terminacin El proceso ejecuta una llamada a un servicio del SO que indica que ha
normal terminado de ejecutar.

Tiempo lmite El proceso ha ejecutado por ms tiempo lmite total especificado. Hay varias
excedido posibilidades para la clase de tiempo que se mide. Entre stas se incluyen el
tiempo total transcurrido ("tiempo de reloj"), el tiempo que ha estado ejecutado
y, en el caso de un proceso interactivo, el tiempo transcurrido desde que el
usuario realiz su ltima entrada de datos.

No hay memoria El proceso necesita ms memoria de la que el sistema le puede proporcionar.


disponible

Violacin de
lmites
El proceso trata de acceder a una posicin de memoria a la que no le est
permitido acceder.

Error de El proceso intenta utilizar un recurso o un archivo que no le est permitido


proteccin utilizar, o trata de utilizarlo de forma incorrecta, como escribir en un archivo que
es slo de lectura.

Error aritmtico El proceso intenta hacer un clculo prohibido, como una divisin por cero, o trata
de almacenar un nmero mayor del que el hardware acepta.

Tiempo mximo El proceso ha esperado ms all del tiempo mximo especificado para que se
de espera produzca cierto suceso.
rebasado

Fallo de E/S Se produce un error en la entrada o la salida, tal como la incapacidad de encontrar
un archivo, un fallo de lectura o escritura despus de un nmero mximo de
intentos (cuando, por ejemplo, hay una regin defectuosa en una cinta), o una
operacin ilegal (como intentar leer de una impresora).

Instruccin El proceso intenta ejecutar una instruccin inexistente (a menudo como resultado
invlida de un salto a una zona de datos para intentar ejecutar los datos).
Instruccin El proceso intenta usar una instruccin reservada para el sistema operativo.
privilegiada

Mal uso de los Un elemento de dato es de un tipo equivocado o no est inicializado.


datos

Intervencin del Por alguna razn el operador o el sistema operativo termina con el proceso (por
operador o de ejemplo, si existe un interbloqueo).

SO

Terminacin del Cuando un proceso padre finaliza, el sistema operativo puede disearse para
padre terminar automticamente con todos sus descendientes.

Solicitud del Un proceso padre tiene normalmente la autoridad de terminar con cualquiera de
padre sus descendientes.

4.13. CONCURRENCIA Y SECUENCIABILIDAD

Los procesos son concurrentes si existe simultneamente. Los procesos concurrentes


pueden funcionar en forma totalmente independiente unos de otros, o pueden ser
asncronos, lo cual significa que en ocasiones requieren cierta sincronizacin o
cooperacin.
Figura. 4.02. MODELO CONCEPTUAL DE CUATRO
PROCESOS SECUENCIALES INDEPENDIENTES.

Cuando dos o ms procesos llegan al mismo tiempo a ejecutarse, se dice que se ha


presentado una concurrencia de procesos. Es importante mencionar que para que dos
o ms procesos sean concurrentes, es necesario que tengan alguna relacin entre ellos
como puede ser la cooperacin para un determinado trabajo o el uso de informacin
o recursos compartidos, por ejemplo: en un sistema de un procesador, la
multiprogramacin es una condicin necesaria pero no suficiente para que exista
concurrencia, ya que los procesos pueden ejecutarse de forma totalmente
independiente.

Por otro lado, en un sistema de varios procesos se puede presentar la concurrencia


siempre y cuando las actividades necesiten actuar entre s ya sea para utilizar
informacin en comn o para cualquier otra cosa.

4.14. BENEFICIOS DE LA CONCURRENCIA


- Trata de evitar los tiempos muertos de la UCP
- Comparte y optimiza el uso de recursos
- Permite la modularidad en las diferentes etapas del proceso
- Acelera los clculos
- Da mayor comodidad.
4.15. DESVENTAJAS DE LA CONCURRENCIA
Inanicin.
Interrupcin de procesos.
Bloqueos.
Que dos o ms procesos requieran el mismo recurso.

4.16. LA SINCRONIZACION
En muchos casos, los procesos se renen para realizar tareas en conjunto, a este tipo
de relacin se le llama procesos cooperativos. Para lograr la comunicacin, los
procesos deben sincronizarse, de no ser as pueden ocurrir problemas no deseados.
La sincronizacin es la transmisin y recepcin de seales que tiene por objeto llevar
a cabo el trabajo de un grupo de procesos cooperativos. Es la coordinacin y
cooperacin de un conjunto de procesos para asegurar la comparacin de recursos de
cmputo. La sincronizacin entre procesos es necesaria para prevenir y/o corregir
errores de sincronizacin debidos al acceso concurrente a recursos compartidos, tales
como estructuras de datos o dispositivos de E/S, de procesos contendientes. La
sincronizacin entre procesos tambin permite intercambiar seales de tiempo
(ARRANQUE/PARADA) entre procesos cooperantes para garantizar las relaciones
especficas de precedencia impuestas por el problema que se resuelve. Sin una
sincronizacin adecuada entre procesos, la actualizacin de variables compartidas
puede inducir a errores de tiempo relacionados con la concurrencia que son con
frecuencia difciles de depurar. Una de las causas principales de este problema es que
procesos concurrentes puedan observar valores temporalmente inconsistentes de una
variable compartida mientras se actualizan. Una aproximacin para resolver este
problema es realizar actualizaciones de variables compartidas de manera
mutuamente exclusiva. Se pueden mejorar permitiendo que a lo ms un proceso entre
a la vez en la seccin crtica de cdigo en al que se actualiza una variable compartida
o estructura de datos en particular.
4.17. PLANIFICACIN DE PROCESOS

En pocas pasadas de los sistemas de procesamiento por lotes, con una entrada en
forma de imgenes de tarjetas en una cinta magntica, el algoritmo de planificacin
era sencillo: slo haba que ejecutar el siguiente trabajo en la cinta. En los sistemas de
multiusuario de tiempo compartido, que se combinaban con un fondo de trabajos
procesados en lote, el algoritmo era ms complejo. En forma invariable, existan
varios usuarios en espera de servicio y podan existir tambin otros trabajos para ser
procesados en lote. Incluso en los sistemas puros de tiempo compartido existen con
frecuencia los trabajos colaterales, como el sistema de correo electrnico, que a
menudo se ejecuta todo el tiempo para enviar o recibir correo o noticias.

Cuando son ejecutables varios procesos, tomando en cuenta la existencia de


multiprogramacin y de tiempo compartido el sistema operativo debe decidir cul
conviene ejecutar primero. La parte del SO a la que concierne esta decisin se llama
planificador de procesos y los algoritmos que utiliza se denominan algoritmos de
planificacin de procesos.

A la hora de planificar procesos es importante estimar la carga de CPU versus


demanda de E/S de los mismos, pues interesa que haya un equilibrio entre las dos.

Conjunto de polticas y mecanismos incorporados al sistema operativo, a travs de un


mdulo denominado planificador, que debe decidir cul de los procesos en
condiciones de ser ejecutado conviene ser despachado primero y qu orden de
ejecucin debe seguirse. Esto debe realizarse sin perder de vista su principal objetivo
que consiste en el mximo aprovechamiento del sistema, lo que implica proveer un
buen servicio a los procesos existentes en un momento dado.
4.18. CONCEPTO DE PLANIFICACIN
La planificacin es una funcin fundamental del Sistema Operativo. La mayor parte
de los recursos se planifican antes de que se usen. Desde luego, la UCP es uno de los
principales recursos de la computadora, por lo que su planificacin es importante para
el diseo de los Sistemas Operativos.

Se conoce como planificacin al estudio de los problemas: cundo asignar


procesadores? y a cules procesos asignarlos?.

La planificacin se refiere a un conjunto de polticas y mecanismos que poseen los


actuales Sistemas Operativos y por los que se rige el orden en que se completa el
trabajo que hay que realizar por los procesos.
En Windows NT los subprocesos tienen asignadas prioridades. El rango de prioridades
va de 1 a 31, siendo 31 la prioridad mayor. La UCP trata de manera idntica a todos
los subprocesos de la misma prioridad. Esto es simplemente asigna el primer
subproceso de prioridad 31 a una UCP, y una vez que su intervalo de tiempo ha
finalizado asigna el siguiente subproceso de prioridad 31 a la UCP. Cuando todos los
subprocesos de prioridad 31 han tenido un intervalo de tiempo de la UCP, el kernel de
Windows NT asigna de nuevo el primer subproceso de prioridad 31 a la UCP. Como
se ve, si siempre existe un subproceso de prioridad inferior de 31 nunca se ejecutar.

4.19. OBJETIVOS DE LA PLANIFICACIN DE PROCESOS


La Planificacin de procesos tiene como principales objetivos la equidad, la eficacia,
el tiempo de respuesta, el tiempo de regreso y el rendimiento.

Equidad: Todos los procesos deben ser atendidos.


Eficacia: El procesador debe estar ocupado el 100% del tiempo.
Tiempo de respuesta: El tiempo empleado en dar respuesta a las solicitudes
del usuario debe ser el menor posible.
Tiempo de regreso: Reducir al mnimo el tiempo de espera de los resultados
esperados por los usuarios por lotes.
Rendimiento: Maximizar el nmero de tareas que se procesan por cada hora.

4.20. PLANIFICADORES
El planificador o scheduler es un componente del Sistema Operativo que se encarga
de elegirla tarea siguiente que hay que admitir en el sistema y el proceso siguiente que
hay que ejecutar.

La finalidad del planificador es asignar procesos para que sean ejecutados por el
procesador o procesadores con el fin de obtener mejores tiempos de respuesta, mayor
productividad o rendimiento y eficiencia del procesador. En la mayora de los sistemas
esta actividad de planificacin se realiza en tres tipos de planificadores que se explican
a continuacin.
En UNX, las tareas de planificacin las resuelve el scheduler (planificador) mediante
un mecanismo de prioridades. Cada proceso tiene asignada una prioridad. Las
prioridades de los procesos de los usuarios son siempre menores que la prioridad ms
pequea de un proceso del sistema.

El componente que se encarga de administrar los procesos de Windows 95 trabaja con


dos modelos de Multitarea:

Multitarea Cooperativa
La Multitarea con Derecho Preferente

Mediante el mtodo de Multitarea Cooperativa, el Sistema Operativo deja que sea el


proceso quien compruebe la cola de procesos que quieren ejecutarse y que cada
proceso, deje tiempo de UCP al resto de aplicaciones que se estn ejecutando. Puede
ocurrir que el programa que est en ejecucin, no compruebe peridicamente la cola
y se apodere completamente de la UCP, con lo cual ningn proceso responder hasta
que termine el que est en ejecucin.
En la Multitarea con Derecho Preferente, es el Planificador de Procesos quien quita o
da el control a un proceso y adems determina el tiempo que dicho proceso va a ocupar
la UCP. El cambio de un proceso a otro, generalmente est dado a un suceso o evento
(un clic del ratn, minimizar una ventana). En la Multitarea con Derecho, el
Planificador asigna unas prioridades a los procesos que determinan la forma de
ejecucin, sin embargo estas prioridades varan segn avanza la ejecucin, ya que, en
caso contrario, cuando un proceso de mxima prioridad tomase la UCP nunca la
soltara.

Windows 95 solo utiliza la Multitarea Cooperativa, con las aplicaciones de 16 bits.


Todas las aplicaciones de 32 bits se ejecutan en Multitarea con Derecho Preferente.

Planificador a largo plazo (Planificador de trabajos)

Cada vez que un usuario inicia la ejecucin de un programa, el planificador a largo


plazo recibe la orden de ejecucin, crea el proceso correspondiente y lo pasa al
planificador a corto plazo, colocndose en la cola de procesos listos. Este planificador
es, por tanto, el encargado de crear los procesos. Cada vez que termina un trabajo, el
planificador tomara la decisin de aadir uno o ms trabajos nuevos.

a) Planificador a mediano plazo (planificador de intercambio): Decide si un


proceso que est en estado bloqueado o suspendido debe ser retirado de la memoria
temporalmente. Posteriormente, cuando el sistema se encuentra ms descargado,
devolver dicho proceso a la memoria y al estado de ejecucin. Esta tcnica se
conoce con el nombre de intercambio (swapping). Este nivel, por tanto, gestiona
los procesos suspendidos en espera de algn recurso no disponible en el momento
de la suspensin.
b) Planificador a corto plazo (Planificador del procesador): Tambin conocido
como despachador, es el encargado de decidir cmo y cundo tendr acceso al
procesador un proceso que est listo para utilizarlo. Solo considera losa procesos
que estn en memoria. Ha de ser rpido y eficiente ya que se ejecuta muy a
menudo. Este nivel, es donde se debe de dar un buen servicio a los procesos para
que el usuario no perciba, o lo haga un pequeo grado, que est compitiendo por
el procesador junto con otros usuarios.

4.21. ALGORITMOS DE PLANIFICACIN


a) ALGORITMO DE PLANIFICACIN FIFO (First Input First Output):
Este algoritmo a su vez es llamado First Come - First Served (Primero en llegar-
Primero en servir).
Tal vez la disciplina ms simple de planificacin sea la de primeras entradas
primeras salidas (PEPS). Los procesos se despachan de acuerdo con su tiempo de
llegada a la cola de procesos listos. Cuando un proceso tiene la UCP, se ejecuta
hasta terminar. Es junto en el sentido formal, pero algo injusta en cuanto a que
los trabajos largos hacen esperar a los cortos y los trabajos sin importancia hacen
esperar a los importantes. FIFO ofrece variaciones relativamente pequeas en los
tiempos de respuesta y por lo tanto es ms predecible que los otros esquemas. No
es til en la planificacin para los usuarios interactivos porque no puede
garantizar buenos tiempos de respuesta.
El esquema FIFO rara vez se usa como esquema principal en los sistemas
actuales, pero a menudo est incorporado en otros sistemas. Por ejemplo, muchos
esquemas de planificacin despachan los procesos de acuerdo con la prioridad,
pero los procesos con la misma prioridad se despachan de acuerdo con el esquema
FIFO. Este es un algoritmo que no usa apropiacin, y que consiste en atender a
los procesos por estricto orden de llegada a la lista de procesos listos. Cada
proceso se ejecuta hasta que termina, o hasta que hace una llamada bloqueante
(de E/S). Se trata de una poltica muy simple y sencilla de llevar a la prctica,
pero muy pobre en cuanto a su comportamiento.
Las caractersticas principales de este algoritmo son las siguientes:

- No es apropiativa.
- Es justa, aunque los procesos largos hacen esperar mucho a los cortos.
- Es una poltica predecible.
- El tiempo promedio de servicio es muy variable ya que est en funcin
del nmero de procesos y la duracin promedio que tenga.

b) El trabajo ms corto primero: Llamado tambin SJF (Shortest Job First). Este
algoritmo de planificacin reduce la preferencia en favor de los procesos ms
largos dando ms importancia a los procesos cortos, como se muestra en la figura.

Esta poltica funciona otorgndole el procesador al proceso ms corto. En general,


esta poltica mejora el funcionamiento del sistema en trminos del tiempo de
respuesta, pero gran cambia demasiado cuando se trata de procesos largos.

Las caractersticas de este algoritmo son las siguientes:


El tiempo de espera aumenta de acuerdo con el tamao de los procesos, pero el
tiempo promedio de espera con respecto a otros algoritmos es ptimo.
Es poco predecible.
No es justo con los procesos largos.
Tiene buen tiempo de servicio.
Resulta difcil de llevarse a la prctica por los datos que necesita para realizarse
la planificacin.

Su caracterstica principal es que cuando se activa el planificador, ste elige el proceso


de menor duracin. Es decir, introduce una nocin de prioridad entre 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:
c) Planificacin por prioridad: A cada proceso se le asigna una prioridad, de manera
que el procesador se le asignar al proceso que tenga la mayor prioridad.

Las prioridades pueden ser definidas interna o externamente. En el primer caso,


el Sistema Operativo se basa en una serie de informaciones medibles para el
clculo y asignacin de dichas prioridades (tiempo necesitado del procesador,
necesidad de memoria, etc). En las externas la asignacin de prioridades se basa
en la categora que tenga el usuario.

El principal problema de este algoritmo es el bloqueo o postergacin indefinida, ya que


un proceso de baja prioridad puede estar esperando su turno al grado de no ejecutarse
nunca. Para evitar esta postergacin se aumenta poco a poco las prioridades de los
procesos que estn, a la espera de utilizar el procesador.

Cualquier algoritmo que se base en esta poltica puede ser apropiativo o no apropiativo.
En el primer caso, un proceso puede ser retirado del procesador si aparece otro de mayor
prioridad.

El algoritmo SJF es un caso especial de planificacin por prioridad, donde la prioridad es


el tamao del proceso.

d) Planificacin Round Robin: Uno de los ms antiguos, sencillo, justo y de uso


ms amplio es el round robin. Cada proceso tiene asignado un intervalo de tiempo
de ejecucin, llamado su quantum. Si el proceso en ejecucin al final de su
quantum, otro proceso se apropia de la CPU. Si el proceso est bloqueado o ha
terminado antes de consumir su quantum, se altera el uso de la CPU. El Round
Robin es muy fcil de implantar. Todo lo que necesita el planificador es mantener
una lista de procesos ejecutables. Cuando el quantum de un proceso se consume,
se le coloca al final de la lista, como se muestra a continuacin.

Figura. 4.03. Planificacin Round Robin.

Volviendo a FCFS, una forma de mejorarlo es agregando apropiacin de tal forma que
cada proceso no retenga el procesador por ms de un quantum o periodo de tiempo
predefinido. Consiste en darle a cada proceso en ejecucin un cierto periodo de tiempo,
y una vez finalizado el tiempo, si el proceso no ha terminado, es colocado al final de la
cola de procesos listo, otorgndose el procesador al siguiente proceso. Trata de ser ms
justo en cuanto a tiempos de respuesta tanto de los procesos cortos como de los procesos
largos.

El punto interesante es encontrar el quantum adecuado. Si es muy grande, puede caer en


un algoritmo FCFS, pero tampoco puede ser demasiado pequeo, porque entonces el
costo de cambiar de un proceso a otro es muy alto. Los valores del quantum varan entre
10 y 100 milisegundos, siendo recomendable que el 80% de los tiempos de respuesta de
los procesos sean menores que el quantum.
Las caractersticas de este algoritmo de planificacin son:

Baja sobrecarga si el cambio entre un proceso y otro es eficiente y los procesos


siempre estn en la memoria principal.
El tamao ptimo del quantum depende de:
- El tipo de sistema.
- Las cargas que vaya a soportar el sistema.
- El nmero de procesos en el sistema y su tipo.
Es la poltica ms usada para tiempo compartido.
Ofrece un servicio igual para todos los procesos.
Es una poltica apropiativa.
Mantiene ms equilibradas las colas de procesos listos y bloqueados.