Você está na página 1de 15

ESTRUCTURA Y FUNCIONAMIENTO DE

COMPUTADORAS II

UNIDAD 5: SISTEMAS OPERATIVOS.


PROCESOS.

Licenciatura en Sistemas de Informacin


Licenciatura en Ciencias de la Computacin

Departamento de Informtica

Facultad de Ciencias Exactas, Fsicas y Naturales

Universidad Nacional de San Juan


Estructura y Funcionamiento de Computadoras II

Esquema de contenidos
Definicin
Procesos Estados de los procesos
Descripcin de los procesos

Definicin
Hilos de ejecucin Multihilo
Funcionalidades de los hilos

Principios de concurrencia
Exclusin mutua: Soporte hardware Interrupciones
Concurrencia Exclusin mutua: Soporte software Semforos
Exclusin mutua: Soporte software Monitores
Exclusin mutua: Soporte software Paso de mensajes
Interbloqueo Abrazo mortal

5.1. PROCESOS

5.1.1. Definicin
El procesador es el dispositivo que se encarga de la ejecucin de las instrucciones y es un recurso por el
cual los procesos compiten.
Para comenzar el estudio de este tema es necesario diferenciar dos conceptos: proceso y tarea (job). Un
trabajo o job es una unidad de trabajo definida externamente, presentada al sistema para su ejecucin.
En cambio, un proceso es una unidad de trabajo interna. Un job puede generar uno o ms procesos (por
ejemplo: compilacin, vinculacin, carga y ejecucin).
Un job que entra al sistema, puede pensarse como un pedido de creacin de procesos para llevar a cabo
el trabajo. Asimismo, cada sesin de un usuario conectado a un sistema interactivo es tambin un
proceso.
Otra diferencia que es pertinente realizar es la que existe entre programa y proceso. Un programa es un
conjunto de lneas de cdigo y es esttico. Mientras, que un proceso es un programa en ejecucin, y por
lo tanto es dinmico, ya que involucra, por ejemplo, el valor de los registros de la CPU y estos van
cambiando a medida que se va ejecutando.
Se definir tcnicamente un proceso como una entidad que se caracteriza por:
Un cdigo de programa o secuencia de instrucciones.
Un contexto de ejecucin, que es un conjunto de datos asociados a dicho cdigo.
Un conjunto de recursos del sistema asociados (memoria, archivos, perifricos).

El contexto de ejecucin es, como se dijo, el conjunto de datos interno por el cual el SO es capaz de
supervisar y controlar el proceso. Esta informacin interna est separada del proceso, porque el SO
tiene informacin a la que el proceso no puede acceder. El contexto incluye toda la informacin que el
SO necesita para gestionar el proceso y que el procesador necesita para ejecutar el proceso
apropiadamente. El contexto incluye el contenido de diversos registros del procesador, tales como el
contador de programa y los registros de datos. Tambin incluye informacin de uso del SO, como la
prioridad del proceso y si un proceso est esperando por la finalizacin de un evento de E/S.

5.1.2. Estados de los procesos


Para que un programa se ejecute, se debe crear un proceso o tarea para dicho programa. Desde el punto
de vista del procesador, l ejecuta instrucciones de su repertorio de instrucciones en una secuencia
dictada por el cambio de los valores del registro contador de programa. A lo largo del tiempo, el
contador de programa puede apuntar al cdigo de diferentes programas que son parte de diferentes
procesos. Desde el punto de vista de un programa individual, su ejecucin implica una secuencia de
instrucciones dentro de dicho programa.

Sistemas Operativos. Procesos. 2


Estructura y Funcionamiento de Computadoras II

Se puede caracterizar el comportamiento de un Identificador


determinado proceso, listando la secuencia de
instrucciones que se ejecutan para dicho proceso. A Estado
esta lista se la denomina traza del proceso. Se puede Prioridad
caracterizar el comportamiento de un procesador
Contador de programa
mostrando cmo las trazas de varios procesos se
entrelazan. Punteros de memoria

Datos de contexto
Considere el ejemplo de la figura, donde se muestra el
Informacin de estado de E/S
despliegue en memoria de tres procesos (A, B y C).
Para simplificar la exposicin, se asume que dichos Informacin de auditora
procesos no usan memoria virtual; por tanto, los tres
procesos estn representados por programas que
residen en memoria principal. De manera adicional,
existe un pequeo programa activador (dispatcher) del sistema operativo (ser abordado en la unidad de
Administracin del Procesador) que intercambia el procesador de un proceso a otro.
Direccin MEMORIA RAM Contador de programa
0
8000
100
Activador

5000
Proceso A

8000
Proceso B

12000
Proceso C

La prxima figura muestra las trazas de cada uno de los procesos en los primeros instantes de ejecucin.
Se muestran las 12 primeras instrucciones ejecutadas por los procesos A y C. El proceso B ejecuta 4
instrucciones y se asume que la cuarta instruccin invoca una operacin de E/S, a la cual proceso debe
esperar.

5000 8000 12000


5001 8001 12001
5002 8002 12002
5003 8003 12003
5004 12004
5005 12005
5006 12006
5007 12007
5008 12008
5009 12009
5010 12010
5011 12011

Traza del proceso A Traza del Proceso B Traza del Proceso C

Nota aclaratoria:
5000 = Direccin de comienzo del programa del Proceso A.
8000 = Direccin de comienzo del programa del Proceso B.
12000 = Direccin de comienzo del programa del Proceso C.

Ahora vea estas trazas desde el punto de vista del procesador. La siguiente figura muestra las trazas

Sistemas Operativos. Procesos. 3


Estructura y Funcionamiento de Computadoras II

entrelazadas resultante de los 52 primeros ciclos de ejecucin (por conveniencia los ciclos de
instrucciones han sido numerados). En este ejemplo, se asume que el sistema operativo slo deja que
un proceso contine durante seis ciclos de instruccin, despus de los cuales se interrumpe; lo cual
previene que un solo proceso monopolice el uso del tiempo del procesador. Como muestra la figura,
las primeras seis instrucciones del proceso A se ejecutan seguidas de una alarma de temporizacin
(time-out) y de la ejecucin de cierto cdigo del activador, que ejecuta seis instrucciones antes de
devolver el control al proceso B (Tiempo=13). Despus de que se ejecuten cuatro instrucciones, el
proceso B solicita una accin de E/S, para la cual debe esperar. Por tanto, el procesador deja de
ejecutar el proceso B y pasa a ejecutar el proceso C (T=23), por medio del activador. Despus de otra
alarma de temporizacin, el procesador vuelve al proceso A (T=35). Cuado este proceso llega a su
temporizacin, el proceso B an estar esperando que se complete su operacin de E/S, por lo que el
activador pasa de nuevo al proceso C (T=47).

1 5000 27 12004
2 5001 28 12005
3 5002 Temporizacin
4 5003 29 100
5 5004 30 101
6 5005 31 102
Temporizacin 32 103
7 100 33 104
8 101 34 105
9 102 35 5006
10 103 36 5007
11 104 37 5008
12 105 38 5009
13 8000 39 5010
14 8001 40 5011
15 8002 Temporizacin
16 8003 41 100
Peticin de E/S 42 101
17 100 43 102
18 101 44 103
19 102 45 104
20 103 46 105
21 104 47 12006
22 105 48 12007
23 12000 49 12008
24 12001 50 12009
25 12002 51 12010
26 12003 52 12011
Temporizacin
Nota aclaratoria:
100 = Direccin de comienzo del programa activador.
Las zonas sombreadas indican la ejecucin del proceso de activacin;
La primera y la tercera columna cuentan ciclos de instrucciones;
La segunda y la cuarta columna las direcciones de las instrucciones que se ejecutan.

5.1.2.1. Creacin de procesos


Los trabajos (unidad externa de medida) son ingresados al sistema a una cola de jobs. El job es

Sistemas Operativos. Procesos. 4


Estructura y Funcionamiento de Computadoras II

seleccionado cuando le son concedidos los recursos necesarios para su ejecucin, y es en este
momento cuando se crea el proceso (o procesos) correspondiente y es admitido en una cola de
procesos en estado listo.
Esto significa que el SO, para aadir un nuevo proceso a aquellos a los que est gestionando en un
determinado momento, debe construir las estructuras de datos (BCP-Bloque de Control de Procesos,
que se ver mas adelante) que se usan para manejar el proceso y reservar el espacio de direcciones en
memoria principal para el proceso.
Hay cuatro razones par la creacin de un proceso:
Nuevo proceso de lotes: El SO dispone de un flujo de control de lotes de trabajos,
habitualmente en cinta o en disco. Cuando el SO est listo para procesar un nuevo trabajo,
Sesin interactiva: Un usuario desde una terminal entra al sistema.
Creado por el SO para proporcionar un servicio: El SO puede crear un proceso para realizar
una funcin en representacin de un programa de usuario, sin que el usuario tenga que esperar
(por ejemplo, un proceso para controlar la impresin).
Creado por un proceso existente: Por motivos de modularidad o para explotar el paralelismo,
un programa de usuario puede ordenar la creacin de un nmero de procesos. Cuando esto
ocurre al primero se le llama proceso padre y al segundo proceso hijo.

5.1.2.2. Terminacin de procesos


Todo sistema debe proporcionar los mecanismos mediante los cuales un proceso indica su finalizacin
o que se ha completado su tarea. Algunas de las razones para la terminacin de un proceso pueden ser:
Finalizacin normal: El proceso ejecuta una llamada al sistema operativo para indicar que ha
completado su ejecucin.
Lmite de tiempo excedido: El proceso ha ejecutado ms tiempo del especificado en un lmite
mximo. Existen varias posibilidades para medir dicho tiempo. Estas incluyen el tiempo total
utilizado, el tiempo utilizado nicamente en ejecucin, y, en el caso de procesos interactivos,
la cantidad de tiempo desde que el usuario realiz la ltima entrada.
Memoria no disponible: El proceso requiere ms memoria de la que el sistema puede
proporcionar.
Violaciones de frontera: El proceso trata de acceder a una posicin de memoria a la cual no
tiene acceso permitido.
Error aritmtico: El proceso trata de realizar una operacin de clculo no permitida, tal como
una divisin por 0, o trata de almacenar nmeros mayores de los que la representacin
hardware puede codificar.
Fallo de E/S: Se ha producido un error durante una operacin de entrada o salida, por ejemplo
la imposibilidad de encontrar un archivo, fallo en la lectura o escritura despus de un lmite
mximo de intentos (cuando, por ejemplo, se encuentra un rea defectuosa en una cinta), o una
operacin invlida (la lectura de una impresora en lnea).
Instruccin no vlida: El proceso intenta ejecutar una instruccin inexistente (habitualmente el
resultado de un salto a un rea de datos y el intento de ejecutar dichos datos).
Instruccin privilegiada: El proceso intenta utilizar una instruccin reservada al SO.
Terminacin del proceso padre: Cuando un proceso padre termina, el SO puede finalizar
automticamente todos los procesos hijos descendientes de dicho padre.
Solicitud del proceso padre: Un proceso padre habitualmente tiene autoridad para finalizar sus
propios procesos descendientes.

5.1.2.3. Modelo de proceso de seis estados


Todo proceso se encuentra en uno de seis estados:
Activo (en ejecucin): El proceso est actualmente en ejecucin. En este momento se asume
que la computadora tiene un nico procesador, de forma que slo un proceso puede estar en
este estado en un instante determinado.
Listo (en espera): El proceso est en memoria principal preparado para ejecutarse cuando
tenga oportunidad.
Bloqueado. El proceso no se puede ejecutar hasta que se cumpla un evento determinado o se

Sistemas Operativos. Procesos. 5


Estructura y Funcionamiento de Computadoras II

complete una operacin E/S.


Nuevo: Un proceso que se acaba de crear y que an no ha sido admitido en el grupo de
procesos ejecutables por el SO. Tpicamente, se trata de un nuevo proceso que no ha sido
cargado en memoria principal, aunque su bloque de control de proceso (BCP) s ha sido
creado.
Suspendido. El proceso est en memoria secundaria y esperando un evento.
Saliente: Un proceso que ha sido liberado del grupo de procesos ejecutables por el sistema
operativo, debido a que ha sido detenido o que ha sido abortado por alguna razn.

Admisin Activacin Salida


Nuevo Listo Activo Saliente

Temporizacin

Reactivacin Sucede evento


Espera por evento

Suspendido Bloqueado
Suspensin

Los estados Nuevo y Saliente son tiles para construir la gestin de procesos. El estado Nuevo se
corresponde con un proceso que acaba de ser definido. Por ejemplo, si un nuevo usuario intenta entrar
dentro de un sistema de tiempo compartido o cuando se solicita un nuevo trabajo a un sistema de
proceso por lotes, el sistema operativo puede definir un nuevo proceso en dos etapas. Primero, el SO
realiza todas las tareas internas que correspondan. Se asocia un identificador a dicho proceso. Se
reservan y construyen todas aquellas tablas que se necesiten para gestionar al proceso. En este punto,
el proceso se encuentra el estado Nuevo. Esto significa que el sistema operativo ha realizado todas las
tareas necesarias para crear el proceso pero el proceso en s, an no se ha puesto en ejecucin. Por
ejemplo, un SO puede limitar el nmero de procesos que puede haber en el sistema por razones de
rendimiento o limitaciones de memoria principal. Mientras un proceso est en el estado Nuevo, la
informacin relativa al proceso que se necesite por parte del SO se mantiene en tablas de control de
memoria principal. Sin embargo, el proceso en s mismo no se encuentra en memoria principal. Esto
es, el cdigo de programa a ejecutar no se encuentra en memoria principal, y no se ha reservado
ningn espacio para los datos asociados al programa. Cuando un proceso se encuentra en el estado
Nuevo, el programa permanece en almacenamiento secundario, normalmente en disco.
De forma similar, un proceso sale del sistema en dos fases. Primero, el proceso termina cuando alcanza
su punto de finalizacin natural, cuando es abortado debido a un error no recuperable, o cuando otro
proceso con autoridad apropiada causa que el proceso se aborte. La terminacin mueve el proceso al
estado Saliente. En este punto, el proceso no es elegible de nuevo para su ejecucin. Las tablas y otra
informacin asociada con el trabajo se encuentran temporalmente preservadas por el SO, el cual
proporciona tiempo para que programas auxiliares o de soporte extraigan la informacin necesaria. Por
ejemplo, un programa de auditora puede requerir registrar el tiempo de proceso y otros recursos
utilizados por este proceso saliente con objeto de realizar una contabilidad de los recursos del sistema.
Un programa de utilidad puede requerir extraer informacin sobre el histrico de los procesos por
temas relativos con el rendimiento o anlisis de la utilizacin. Una vez que estos programas han
extrado la informacin necesaria, el SO no necesita mantener ningn dato relativo al proceso y el
proceso se borra del sistema.
La figura indica qu tipos de eventos llevan a cada transicin de estado para cada proceso; las posibles
transiciones son las siguientes:
Nuevo  Listo: El SO mueve a un proceso del estado nuevo al estado listo cuando ste se
encuentre preparado para ejecutar un nuevo proceso. La mayora de sistemas fijan un lmite
basado en el nmero de procesos existentes o la cantidad de memoria virtual que se podr
utilizar por parte de los procesos existentes. Este lmite asegura que no haya demasiados
procesos activos y que se degrade el rendimiento sistema.
Listo  Activo: Cuando llega el momento de seleccionar un nuevo proceso para ejecutar, el

Sistemas Operativos. Procesos. 6


Estructura y Funcionamiento de Computadoras II

SO selecciona uno los procesos que se encuentre en el estado Listo. Esta es una tarea la lleva
acabo el planificador de procesos. El planificador se estudiar en el prximo captulo.
Activo  Saliente: El proceso actual en ejecucin se finaliza por parte del SO tanto si el
proceso indica que ha completado su ejecucin como si ste se aborta (ver Terminacin de
procesos).
Activo  Listo: La razn ms habitual para esta transicin es que el proceso en ejecucin haya
alcanzado el mximo tiempo posible de ejecucin de forma ininterrumpida; prcticamente
todos los SO multiprogramados imponen este tipo de restriccin de tiempo. Existen otras
posibles causas alternativas para esta transicin, que no estn incluidas en todos los SO. Es de
particular importancia el caso en el cual el SO asigna diferentes niveles de prioridad a
diferentes procesos. Supngase, por ejemplo, que el proceso A est ejecutando a un
determinado nivel de prioridad, y el proceso B, a un nivel de prioridad mayor, y que se
encuentra bloqueado. Si el SO se da cuenta de que se produce un evento al cual el proceso B
est esperando, mover el proceso B al estado de Listo. Esto puede interrumpir al proceso A y
poner en ejecucin al proceso B. Se dice, en este caso, que el SO ha expulsado al proceso A.
Adicionalmente, un proceso puede voluntariamente dejar de utilizar el procesador. Un ejemplo
son los procesos que realiza alguna funcin de auditora o de mantenimiento de forma
peridica.
Activo  Bloqueado: Un proceso se pone en el estado Bloqueado si solicita algo por lo cual
debe esperar. Una solicitud al SO se realiza habitualmente por medio de una llamada al
sistema; esto es, una llamada del proceso en ejecucin a un procedimiento que es parte del
cdigo del SO. Por ejemplo, un proceso ha solicitado un servicio, que el SO no puede realizar
en ese momento. Puede solicitar un recurso, como por ejemplo un archivo o una seccin
compartida de memoria virtual, que no est inmediatamente disponible. Cuando un proceso
quiere iniciar una accin, tal como una operacin de E/S, que debe completarse antes de que el
proceso contine. Cuando un proceso se comunica con otro, un proceso puede bloquearse
mientras est esperando a que otro proceso le proporcione datos o esperando un mensaje de
ese otro proceso.
Bloqueado  Listo: Un proceso en estado Bloqueado se mueve al estado Listo cuando sucede
el evento por el cual estaba esperando.
Bloqueado  Suspendido: como ya se ha visto, la diferencia de velocidad entre el procesador
y los dispositivos de E/S es que sera muy habitual que todos los procesos en memoria se
encontrasen a esperas de dichas operaciones. Cuando todos los procesos se encuentran en
estado de Bloqueado, el SO puede suspender un proceso ponindolo en el estado Suspendido y
transfirindolo al disco (swapping). De esta manera el SO libera memoria principal.
Suspendido  Listo: Cuando se libera espacio en memoria RAM, entonces el SO tiene 2
opciones: traer un nuevo proceso desde la cola de Nuevo y as admitir un proceso ya creado; o
bien, reactivar (es decir cargar en memoria principal) un proceso que estaba en estado
suspendido.
Listo  Saliente: Por claridad, esta transicin no se muestra en el diagrama de estados, En
algunos sistemas, un padre puede terminar la ejecucin de un proceso hijo en cualquier mo-
mento. Tambin, si el padre termina, todos los procesos hijos asociados con dicho padre
pueden finalizarse.
Bloqueado  Saliente: Se aplican los comentarios indicados en el caso anterior.

5.1.3. Descripcin de Procesos


El SO controla los eventos dentro de la computadora, planifica y activa los procesos para su ejecucin
por el procesador, reserva recursos para los mismos y responde a las solicitudes de servicios bsicos de
los procesos de usuario. Fundamentalmente, se piensa en el SO como en la entidad que gestiona el uso
de recursos del sistema por parte de los procesos.
Este concepto se ilustra en la figura. En un entorno multiprogramado, hay numerosos procesos (P1, ...
Pn) creados y residentes en memoria. Cada proceso, durante el transcurso de su ejecucin, necesita
acceder a ciertos recursos del sistema, incluido el procesador, los dispositivos de E/S y la memoria
principal. En la figura, el proceso P1 est ejecutando; al menos parte del proceso est en memoria
principal, y controla dos dispositivos de E/S. El proceso P2 est tambin totalmente en memoria

Sistemas Operativos. Procesos. 7


Estructura y Funcionamiento de Computadoras II

principal pero est bloqueado esperando a disponer de un dispositivo de E/S que est asignado a P1. El
proceso Pn se encuentra transferido a disco (swapping) y est por tanto suspendido.

P1 P2 Pn Memoria Virtual

Recursos del ordenador


Procesador E/S E/S E/S Memoria Principal

5.1.3.1. Estructuras de control del Sistema Operativo


Si el SO se encarga de la gestin de procesos y recursos, debe disponer de informacin sobre el estado
actual de cada proceso y cada recurso. El mecanismo universal para proporcionar esta informacin es
el siguiente: el SO construye y mantiene tablas de informacin sobre cada entidad que gestiona. Se
indica una idea general del alcance de esta tarea en la figura, que muestra cuatro diferentes tipos de
tablas mantenidas por el SO: memoria, E/S, archivos y procesos. A pesar de que los detalles difieren
de un sistema operativo a otro, todos los SO mantienen informacin de estas cuatro categoras.
Las tablas de memoria se usan para mantener un registro tanto de la memoria principal (real) como de
la secundaria (virtual). Parte de la memoria principal est reservada para el uso del SO; el resto est
disponible para el uso de los procesos. Los procesos se mantienen en memoria secundaria utilizando
algn tipo de memoria virtual o tcnicas de swapping (Este tema ser tratado en la Unidad de
Administracin de la Memoria).
El SO debe utilizar las tablas de E/S para gestionar los dispositivos de E/S y los canales de la
computadora. Pero, en un instante determinado, un dispositivo E/S puede estar disponible o asignado a
un proceso en particular. Si la operacin de E/S se est realizando, el SO necesita conocer el estado de
la operacin y la direccin de memoria principal del rea usada como fuente o destino de la
transferencia de E/S. La gestin de E/S se examina en detalle en el captulo de Administracin de los
Perifricos.
El SO tambin puede mantener las tablas de archivos. Estas tablas proporcionan informacin sobre la
existencia de archivos, su posicin en almacenamiento secundario, su estado actual, y otros atributos.
Este aspecto se explorar en el captulo de Administracin de la Informacin.
Imagen del proceso
Tablas de memoria
Proceso 1
Memoria
Dispositivos Tablas de E/S
Archivos
Procesos Tablas de Archivos

Tabla primaria de procesos

Proceso 1
Proceso 2
Proceso 3
Proceso 4
Imagen del proceso

Proceso n
Proceso n

Por ltimo, el SO debe mantener tablas de procesos para gestionar los procesos. En la figura se
muestran los cuatro tipos diferentes de tablas que hay, pero debe quedar claro que estas tablas se
encuentran entrelazadas y referenciadas entre s de alguna manera. Memoria, E/S, y archivos se
gestionan por parte de los procesos, de forma que debe haber algunas referencias en estos recursos,
directa o indirectamente, desde las tablas de procesos. Los archivos indicados en las tablas de archivos
son accesibles mediante dispositivos E/S y estarn, en algn caso, residentes en memoria virtual o
principal. Las tablas son tambin accesibles para el SO, y adems estn controladas por la gestin de

Sistemas Operativos. Procesos. 8


Estructura y Funcionamiento de Computadoras II

memoria.
Ahora bien, para que el SO pueda crear las tablas iniciales, debe tener alguna informacin sobre el
entorno bsico, tal como: cunta memoria fsica existe, cules son los dispositivos de E/S y cules son
sus identificadores, por ejemplo. Esto es una cuestin de configuracin. Esto es, cuando el sistema
operativo se inicializa, debe tener acceso a algunos datos de configuracin que definen el entorno
bsico y estos datos se deben crear fuera del SO, con asistencia humana o por medio de algn software
de autoconfiguracin.

5.1.3.2. Localizacin de los procesos


Antes de tratar la cuestin de dnde se encuentran los procesos o cules son sus atributos, es necesario
definir la representacin fsica de un proceso.
Como mnimo, un proceso debe incluir un programa o un conjunto de programas a ejecutar. Asociados
con estos programas existen unas posiciones de memoria para los datos de variables locales y globales
y de cualquier constante definida. As, un proceso debe consistir en una cantidad suficiente de
memoria para almacenar el programa y datos del mismo. Adicionalmente, la ejecucin tpica de un
programa incluye una pila que se utiliza para registrar las llamadas a procedimientos y los parmetros
pasados entre dichos procedimientos. Por ltimo, cada proceso est asociado a un nmero de atributos
que son utilizados por el SO para controlar el proceso. Normalmente, el conjunto de estos atributos se
denomina Bloque de Control de Proceso (BCP). Se puede hacer referencia al conjunto de programa,
datos, pila, y atributos, como la imagen del proceso.
La posicin de la imagen del proceso depender del esquema de gestin de memoria que se utilice. En
el caso ms simple, la imagen del proceso se mantiene como un bloque de memoria contiguo, o
continuo. Este bloque se mantiene en memoria secundaria, habitualmente disco. Para que el SO pueda
gestionar el proceso, al menos una pequea porcin de su imagen se debe mantener en memoria
principal. Para ejecutar el proceso, la imagen del proceso completa se debe cargar en memoria
principal o al menos en memoria virtual. Asimismo, el SO necesita conocer la posicin en disco de
cada proceso y, para cada proceso que se encuentre en memoria principal, su posicin en dicha
memoria.

Elementos tpicos de la imagen de un proceso.


La parte modificable del espacio de usuario. Puede incluir
datos de programa, rea de pila de usuario, y programas
Datos del usuario
que puedan ser modificados.

El programa a ejecutar
Programa de usuario
Cada proceso tiene una o ms pilas de sistema (LIFO)
asociadas a l. Una pila se utiliza para almacenar los
Pila de sistema parmetros y las direcciones de retorno de los
procedimientos y llamadas a sistema.

Datos necesarios para que el sistema operativo pueda


Bloque de control de proceso controlar los procesos.

5.1.3.3. Atributos de proceso


Cualquier SO multiprogramado de la actualidad requiere una gran cantidad de informacin para
manejar cada proceso. Para ello el SO mantiene una lista o cola de procesos (TBCP - Tabla de Bloque
de Control de Proceso), en la que cada uno de ellos tiene un descriptor de proceso (BCP - Bloque de
Control de Proceso) o registro de informacin del mismo.
Tal lista se puede estructurar de distintas maneras. Una estructura comnmente usada es la cola, an
cuando la organizacin no es una cola en el sentido FIFO estricto.
Se puede agrupar la informacin del BCP en tres categoras generales:
Identificacin del proceso
Informacin de estado del procesador
Informacin de control del proceso

Sistemas Operativos. Procesos. 9


Estructura y Funcionamiento de Computadoras II

En la siguiente tabla se muestra la lista de los tipos de categoras de informacin que el SO requiere
para cada proceso. Resulta sorprendente la cantidad de informacin necesaria para esta gestin.
Cuando se vaya apreciando con mayor exactitud las responsabilidades del sistema operativo, esta lista
parecer ms razonable.

Identificacin del proceso


Identificadores
Identificadores numricos que se pueden guardar dentro del bloque de control del proceso:
Identificadores del proceso
Identificador del proceso que cre a este proceso (proceso padre)
Identificador del usuario

Informacin de estado del procesador


Registros visibles por el usuario
Un registro visible por el usuario es aquel al que se puede hacer referencia por medio del lenguaje mquina que
ejecuta el procesador cundo est en modo usuario. Normalmente, existen de 8 32 de estos registros, aunque
determinadas implementaciones RISC tienen ms de 100.
Registros de estado y control
Hay una gran variedad de registros del procesador que se utilizan para el control de operaciones. Por ejemplo:
Contador de programa: contiene la direccin de la siguiente instruccin a ejecutar.
Cdigos de condicin: resultan de la operacin lgica o aritmtica ms reciente (por ejemplo, signo,
cero, acarreo, igual, desbordamiento).
Informacin de estado: incluyen los flags de interrupciones habilitadas/deshabilitadas, modo
ejecucin.
Puntero de pila
Cada proceso tiene una o ms pilas de sistema (LIFO.) asociadas a l. Una pila se utiliza para almacenar los
parmetros y las direcciones de retorno de los procedimientos y llamadas a sistema. Un puntero de pila apunta a
la parte ms alta de la pila.

Informacin de control de proceso


Informacin de estado y de planificacin
Esta es la informacin que el SO necesita para analizar las funciones de planificacin. Elementos tpicos de esta
informacin son:
Estado del proceso: indica si est listo o no el proceso para ser planificado para su ejecucin (por
ejemplo, Ejecutando, Listo, Esperando, Detenido).
Prioridad: uno o ms campos que se pueden utilizar para escribir la prioridad de planificacin del
proceso. En algunos sistemas, se necesitan mltiples valores (por ejemplo, por-defecto, actual, mayor-
disponible).
Informacin relativa a planificacin: esto depender del algoritmo de planificacin utilizado. Por
ejemplo, la cantidad de tiempo que el proceso estaba esperando y la cantidad de tiempo que el proceso
ha ejecutado la ltima vez que estuvo corriendo.
Evento: identificar el evento al cual el proceso est esperando para continuar su ejecucin.
Estructuracin de datos
Un proceso puede estar enlazado con otro proceso en una cola, anillo o con cualquier otra estructura. Por
ejemplo, todos los procesos en estado de espera por un nivel de prioridad en particular pueden estar enlazados
en una cola. Un proceso puede mostrar una relacin padre-hijo (creador-creado) con otro proceso. El bloque de
control del proceso puede contener punteros a otros procesos para dar soporte a estas estructuras.
Comunicacin entre procesos
Se pueden asociar diferentes flags, seales, y mensajes relativos a la comunicacin entre dos procesos
independientes. Alguna o toda esta informacin se puede mantener en el bloque de control de proceso (BCP).
Privilegios de proceso
Los procesos adquieren privilegios de acuerdo con la memoria a la que van a acceder y los tipos de
instrucciones que se pueden ejecutar. Adicionalmente, los privilegios se pueden utilizar para usar utilidades de
sistema o servicios.
Gestin de memoria
Esta seccin puede incluir punteros a tablas de segmentos y/o pginas que describen la memoria virtual
asignada a este proceso.

Sistemas Operativos. Procesos. 10


Estructura y Funcionamiento de Computadoras II

Propia de recursos y utilizacin


Se deben indicar los recursos controlados por el proceso, por ejemplo, archivos abiertos. Tambin se puede
incluir un histrico de utilizacin del procesador o de otros recursos; esta informacin puede ser necesaria para
el planificador.

Con respecto al identificador de proceso, en prcticamente todos los SO, se le asocia a cada proceso un
identificador numrico nico, que permita al SO localizar las tablas apropiadas basndose en dicho
identificador de proceso. Como los procesos pueden crear otros procesos, los identificadores indican el
proceso padre y los descendientes en cada caso.
Junto con estos identificadores de proceso, a un proceso se le puede asignar un identificador de usuario
que indica qu usuario es responsable del trabajo.
La informacin de estado del procesador indica los contenidos de los registros del procesador. Cuando
un proceso est ejecutando, esta informacin est, por supuesto, en los registros. Cuando un proceso se
interrumpe, toda la informacin de los registros debe salvaguardarse de forma que se pueda restaurar
cuando el proceso contine con su ejecucin. La naturaleza y el nmero de estos registros dependen del
diseo del procesador. Normalmente, el conjunto de registros incluye registros visibles por usuario,
registros de control y de estado, y punteros de pila.
Se debe notar que el diseo de todos los procesadores incluye un registro o conjuntos de registros,
habitualmente conocidos como palabras de estado de programa (program status word, PSW) que
contiene informacin de estado. La PSW tpicamente contiene cdigos de condicin as como otra
informacin de estado. Como ejemplo de una palabra de estado de un procesador se tiene lo que los
procesadores Pentium definen como registros EFLAGS. Esta estructura es utilizada por los SO
(incluyendo UNIX y Windows) que se ejecuten sobre procesadores de tipo Pentium.
La tercera categora principal de informacin del bloque de control de proceso se denomina, a falta de
otro nombre mejor, informacin de control de proceso. Esta informacin adicional la necesita el
sistema operativo para controlar y coordinar los procesos activos.
La siguiente figura sugiere la estructura de las imgenes de los procesos en memoria virtual. Cada
imagen de proceso consiste en un bloque de control de proceso, una pila de usuario, un espacio de
direcciones privadas del proceso, y cualquier otro espacio de direcciones que el proceso comparta con
otros procesos. En la figura, cada imagen de proceso aparece como un rango de direcciones contiguo,
pero en una implementacin real, este no tiene por qu ser el caso; depender del esquema de gestin de
memoria y de la forma en la cual se encuentren organizadas las estructuras de control por parte del SO.

Identificador Identificador Identificador


del proceso del proceso del proceso
Informacin de Informacin de Informacin de
estado del estado del estado del BCP
procesador procesador procesador
Informacin de Informacin de Informacin de
control del control del control del
proceso proceso proceso

Pila de usuario Pila de usuario Pila de usuario

Espacio privado Espacio privado Espacio privado


de direcciones de direcciones de direcciones
de usuario de usuario de usuario
(programas y datos) (programas y datos) (programas y datos)

Espacio compartido Espacio compartido Espacio compartido


de direcciones de direcciones de direcciones

5.1.3.4. El papel del bloque de control de proceso


El bloque de control de proceso es la ms importante de las estructuras de datos del SO. Cada bloque de
control de proceso contiene toda la informacin sobre un proceso que necesita el sistema operativo. Los
bloques se leen y/o se modifican por la prctica totalidad de los mdulos del sistema operativo,

Sistemas Operativos. Procesos. 11


Estructura y Funcionamiento de Computadoras II

incluyendo aquellos relacionados con la planificacin, la reserva de recursos, el procesamiento entre


regiones, y el anlisis y monitorizacin del rendimiento.
Esto muestra un aspecto importante en el diseo. Un gran nmero de rutinas dentro del SO necesitarn
acceder a informacin de los BCP. Proporcionar acceso directo a estas tablas no es difcil. Cada proceso
lleva asociado un nico identificador, que puede utilizarse para indexar dentro de una tabla de punteros
a bloques de control de proceso. La dificultad no reside en el acceso sino en la proteccin. Dos posibles
problemas se pueden presentar son:
Un fallo en una simple rutina, como un manejador de interrupcin, puede daar los BCP, que
puede destruir la capacidad del sistema para manejar los procesos afectados.
Un cambio en la estructura de los bloques de control de procesos puede afectar a un gran
nmero de mdulos del SO.

5.2. HILOS (THREADS) DE EJECUCIN

5.2.1. Definicin
De acuerdo a lo visto hasta ahora, se puede decir que un proceso es poseedor de dos caractersticas:
Propiedad de recursos. Un proceso incluye un espacio de direcciones virtuales para el manejo
de la imagen del proceso; esto es la imagen de un proceso es la coleccin de programa, datos,
pila y atributos definidos en el bloque de control del proceso. De vez en cuando a un proceso
se le puede asignar control o propiedad de recursos tales como la memoria principal, canales
E/S, dispositivos E/S y archivos. El sistema operativo realiza la funcin de proteccin para
evitar interferencias no deseadas entre procesos en relacin con los recursos.
Planificacin/ejecucin. La ejecucin de un proceso sigue una ruta de ejecucin (traza) a
travs de uno o ms programas. Esta ejecucin puede estar intercalada con ese u otros
procesos. De esta manera, un proceso tiene un estado de ejecucin (Ejecutando, Listo, etc.) y
una prioridad de activacin y sta es la entidad que se planifica y activa por el SO.

En la mayor parte de los SO tradicionales, estas dos caractersticas son, realmente, la esencia de un
proceso. Sin embargo, debe quedar muy claro que estas dos caractersticas son independientes y podran
ser tratadas como tales por el sistema operativo. As se hace en diversos SO, sobre todo en los
desarrollados recientemente. Para distinguir estas dos caractersticas, la unidad que se activa se suele
denominar hilo (thread), o proceso ligero.
Entonces, se puede definir un hilo de ejecucin como una entidad ejecutable dentro de un proceso.
Un hilo de ejecucin es una caracterstica que permite a una aplicacin realizar varias tareas
concurrentemente. Los distintos hilos de ejecucin comparten una serie de recursos tales como el
espacio de memoria, los archivos abiertos, situacin de autenticacin, etc. Esta tcnica permite
simplificar el diseo de una aplicacin que debe llevar a cabo distintas funciones simultneamente.
Los hilos de ejecucin que comparten los mismos recursos, sumados a estos recursos, son en conjunto
conocidos como un proceso. El hecho de que los hilos de ejecucin de un mismo proceso compartan los
recursos hace que cualquiera de estos hilos pueda modificar stos. Cuando un hilo modifica un dato en
la memoria, los otros hilos acceden e ese dato modificado inmediatamente.

HILOS de ejecucin + RECURSOS asociados = PROCESO

5.2.2. Multihilo
Multihilo se refiere a la capacidad de un sistema operativo de dar soporte a mltiples hilos de ejecucin
en un solo proceso. El enfoque tradicional de un solo hilo de ejecucin por proceso, en el que no se
identifica con el concepto de hilo, se conoce como estrategia monohilo. Las dos configuraciones que se
muestran en la parte izquierda de la figura son estrategia monohilo.
Un ejemplo de SO que soporta un nico proceso de usuario y un nico hilo es el MS-DOS. Otros
sistemas operativos, como algunas variedades de UNIX, soportan mltiples procesos de usuario, pero

Sistemas Operativos. Procesos. 12


Estructura y Funcionamiento de Computadoras II

slo un hilo por proceso. La parte derecha de la figura representa las estrategias multihilo. El entorno de
ejecucin de Java es un ejemplo de sistema con un nico proceso y mltiples hilos. Lo interesante en
esta seccin es el uso de mltiples procesos, cada uno de los cuales soporta mltiples hilos. Este
enfoque es el de Windows, Solaris, Mach, y OS/2 entre otros.

Dentro de un proceso puede haber uno o ms hilos, cada uno con:


Un estado de ejecucin por hilo (Ejecutando, Listo, etc.).
Un contexto de hilo que se almacena cuando no est en ejecucin; una forma de ver a un hilo es
como un contador de programa independiente dentro de un proceso.
Una pila de ejecucin.
Por cada hilo, espacio de almacenamiento para variables locales.
Acceso a la memoria y recursos de su proceso, compartido con todos los hilos de su mismo
proceso.

La siguiente figura muestra la diferencia entre hilos y procesos desde el punto de vista de gestin de
procesos. En un modelo de proceso
monohilo (es decir, no existe el
concepto de hilo), la representacin de
un proceso incluye su bloque de
control de proceso y el espacio de
direcciones de usuario, adems de las
pilas de usuario y ncleo para gestionar
el comportamiento de las
llamadas/retornos en la ejecucin de
los procesos. Mientras el proceso est
ejecutando, los registros del procesador
se controlan por ese proceso y, cuando
el proceso no se est ejecutando, se
almacena el contenido de estos
registros. En un entorno multihilo,
sigue habiendo un nico bloque de
control del proceso y un espacio de
direcciones de usuario asociado al proceso, pero ahora hay varias pilas separadas para cada hilo, as
como un bloque de control para cada hilo que contiene los valores de los registros, la prioridad, y otra
informacin relativa al estado del hilo.

Sistemas Operativos. Procesos. 13


Estructura y Funcionamiento de Computadoras II

De esta forma, todos los hilos de un proceso comparten el estado y los recursos de ese proceso, residen
en el mismo espacio de direcciones y tienen acceso a los mismos datos. Cuando un hilo cambia
determinados datos en memoria, otros hilos ven los resultados cuando acceden a estos datos. Si un hilo
abre un archivo con permisos de lectura, los dems hilos del mismo proceso pueden tambin leer ese
archivo.
Los mayores beneficios de los hilos provienen de las consecuencias del rendimiento:
Lleva mucho menos tiempo crear un nuevo hilo en un proceso existente que crear un proceso
totalmente nuevo. Estudios realizados muestran que la creacin de un hilo es hasta diez veces
ms rpida que la creacin de un proceso.
Lleva menos tiempo finalizar un hilo que un proceso.
Lleva menos tiempo cambiar entre dos hilos dentro del
mismo proceso.
Los hilos mejoran la eficiencia de la comunicacin entre
diferentes programas que estn ejecutando. En la mayor
parte de los SO, la comunicacin entre procesos
independientes requiere la intervencin del ncleo para
proporcionar proteccin y los mecanismos necesarios de
comunicacin. Sin embargo, ya que los hilos dentro de
un mismo proceso comparten memoria y archivos, se
pueden comunicar entre ellos sin necesidad de invocar
ncleo.

De esta forma, si se desea implementar una aplicacin o funcin como un conjunto de unidades de
ejecucin relacionadas, es mucho ms eficiente hacerlo con un conjunto de hilos que con un conjunto
de procesos independientes.
Un ejemplo de una aplicacin que podra hacer uso de hilos es un servidor de archivos. Cada vez que
llega una nueva peticin de archivo, el programa de gestin de archivos puede ejecutar un nuevo hilo.
Ya que un servidor manejar muchas peticiones, se crearn y finalizarn muchos hilos en un corto
periodo de tiempo. Si el servidor ejecuta en una mquina multiprocesador, pueden estar ejecutando
simultneamente mltiples hilos del mismo proceso en diferentes procesadores. Adems, ya que los
procesos o los hilos en un servidor de archivos deben compartir archivos de datos y, por tanto,
coordinar sus acciones, es ms rpido usar hilos y memoria compartida que usar procesos y paso de
mensajes para esta coordinacin.
A veces los hilos son tambin tiles en un solo procesador ya que ayudan a simplificar la estructura de
programas que realizan varias funciones diferentes.
A modo de ejemplos de uso de hilos en un sistema de multiprocesamiento de un solo usuario:
Trabajo en primer plano y en segundo plano. Por ejemplo, en un programa de hoja de clculo,
un hilo podra mostrar mens y leer la entrada de usuario, mientras otro hilo ejecuta 1os
mandatos de usuario y actualiza la hoja de clculo. Esta forma de trabajo a menudo incrementa
la velocidad que se percibe de la aplicacin, permitiendo al programa solicitar el siguiente
mandato antes de que el mandato anterior est completado.
Procesamiento asncrono. Los elementos asncronos de un programa se pueden implementar
como hilos. Por ejemplo, se puede disear un procesador de textos con proteccin contra un
fallo de corriente que escriba el buffer de su memoria RAM a disco una vez por minuto. Se
puede crear un hilo cuyo nico trabajo sea crear una copia de seguridad peridicamente y que
se planifique directamente a travs del SO; no se necesita cdigo adicional en el programa
principal que proporcione control de tiempo o que coordine la entrada/salida.
Velocidad de ejecucin. Un proceso multihilo puede computar una serie de datos mientras que
lee los siguientes de un dispositivo. En un sistema multiprocesador pueden estar ejecutando
simultneamente mltiples hilos de un mismo proceso. De esta forma, aunque un hilo pueda
estar bloqueado por una operacin de E/S mientras lee datos, otro hilo puede estar ejecutando.
Estructura modular de programas. Los programas que realizan diversas tareas o que tienen
varias fuentes y destinos de E/S, se pueden disear e implementar ms fcilmente usando hilos.

En un SO que soporte hilos, la planificacin y la activacin se realizan a nivel de hilo; de aqu que la
mayor parte de la informacin de estado relativa a la ejecucin se mantenga en estructuras de datos a
nivel de hilo. Existen, sin embargo, diversas acciones que afectan a todos los hilos de un proceso y que

Sistemas Operativos. Procesos. 14


Estructura y Funcionamiento de Computadoras II

el sistema operativo debe gestionar a nivel de proceso. Suspender un proceso implica expulsar el
espacio de direcciones de un proceso de memoria principal para dejar hueco a otro espacio de
direcciones de otro proceso. Ya que todos los hilos de un proceso comparten el mismo espacio de
direcciones, todos los hilos se suspenden al mismo tiempo. De forma similar, la finalizacin de un
proceso finaliza todos los hilos de ese proceso.

5.2.3. Funcionalidades de los hilos


Estados de los hilos
Igual que con los procesos, los principales estados de los hilos son: Ejecutando, Listo y Bloqueado:
Hay cuatro operaciones bsicas relacionadas con los hilos que estn asociadas con un cambio de estado
del hilo:
Creacin. Cuando se crea un nuevo proceso, tambin se crea un hilo de dicho proceso.
Posteriormente, un hilo del proceso puede crear otro hilo dentro del mismo proceso,
proporcionando un puntero a las instrucciones y los argumentos para el nuevo hilo. Al nuevo
hilo se le proporciona su propio registro de contexto y espacio de pila y se coloca en la cola de
Listos.
Bloqueo. Cuando un hilo necesita esperar por un evento se bloquea, almacenando los registros
de usuario, contador de programa y punteros de pila. El procesador puede pasar a ejecutar otro
hilo en estado Listo, dentro del mismo proceso o en otro diferente.
Desbloqueo. Cuando sucede el evento por el que el hilo est bloqueado, el hilo se pasa a la cola
de Listos.
Finalizacin. Cuando se completa un hilo, se liberan su registro de contexto y pilas.

Sincronizacin de los hilos


Todos los hilos de un proceso comparten el mismo espacio de direcciones y otros recursos, como por
ejemplo, los archivos abiertos. Cualquier alteracin de un recurso por cualquiera de los hilos, afecta al
entorno del resto de los hilos del mismo proceso. Por tanto, es necesario sincronizar las actividades de
los hilos para que no interfieran entre ellos o corrompan estructuras de datos.
Los asuntos que surgen y las tcnicas que se utilizan en la sincronizacin de los hilos son, en general,
los mismos que en la sincronizacin de procesos, que sern tratadas mas adelante en este captulo.

5.3. Bibliografa
Sistemas operativos. Aspectos internos y principios de funcionamiento. William Stallings.
Sistemas operativos: Diseo e implementacin. Andrew Tanenbaum.
Apuntes de ctedra: Sistemas Operativos, UBA.
Wikipedia.

Sistemas Operativos. Procesos. 15

Você também pode gostar