Você está na página 1de 75

Tema: Conceptos Fundamentales de los Sistemas Operativos

De Programas a Procesos
Corresponde a:
Mdulo 2 de Notas Sobre Sistemas Operativos (Manual del alumno)
Captulos 3, y 4 de STALLINGS
Captulos 4 de SILBERSCHATZ

Carlos NEETZEL

cneetzel@sistemasoperativos.com.ar

Tema: De Programas a Procesos


DE PROGRAMA A PROCESOS

CONCEPTO DE PROCESO PESADO

CONCEPTO DE TASK
PROCESOS LIVIANOS

THREADS
FIBERS
LA REPRESENTACIN DE LOS PROCESOS

PROCESOS

CICLO DE VIDA DE UN PROCESO

VARIABLES LOCALES

RECURSOS DE UN PROCESO
VARIABLES GLOBALES

TIPOS PROCESOS

DISJUNTOS
CONCURRENTES
INTERACTUANTES
REUTILIZABLES
REENTRANTES

Procesos, Threads, Fibers


Objetivos
Estudiar como un programa es
llevado a ejecucin.
Entender el concepto de Proceso,
ambiente de ejecucin y cambio de
contexto.
Comprender el concepto de Hilo y
Fibra de un proceso.
3

Definiciones Previas
Programa: conjunto ordenado de operaciones sobre un espacio de
nombres de objetos (variables, archivos, etc.) creados por el
programador y que representan un conjunto ordenado de instrucciones
que pretenden resolver un problema.
Una Instruccin es una unidad de Ejecucin que dura un tiempo finito
y se ejecuta sobre un procesador (es indivisible, no se descompone ni
se interrumpe y se dice que ejecuta atmicamente).

Cada instruccin determina:


Un conjunto de Operaciones sucesivas
Un conjunto de vas de datos involucrados en las operaciones
Las OPERACIONES son las Reglas para manipular los datos, por
ejemplo:
'Una vez iniciada una operacin debe terminar en un tiempo finito' o
" La salida de una operacin es una funcin independiente del tiempo
(siempre que se apliquen los mismos datos a la entrada dar la misma
salida)"
4

Pasos en la Ejecucin de un
Programa
Primer paso
PRG
FUENTE

Direcciones
Simblicas

Procesador
Lgico que
traduce al
fuente

Segundo Paso
PRG
OBJETO

Tercer Paso

PRG
EJECUTABLE

Identificadores
nicos
Direcciones
Relativas al origen
Especio de Nombres
para el Programa

(1) Compilador
(2) Link-editor
(3) Loader + S.O

Cuarto Paso

PRG en

ejecucin

Procesador

PCB

Imagen del
Proceso
Proceso

Resuelve las
referencias no
satisfechas por
el compilador
Deja un Archivo
en Lenguaje Ejecutable y Desplazamientos relativos al origen

guarda

Copia y
carga

Pila
Piladel
del
Proceso
Proceso

Es el rea de
memoria donde se
ejecuta el proceso
5

Definiciones

Espacio de nombres de un programa: Conjunto de nombres sobre


el cual el programa puede actuar directamente (relacin directa). Por
Ej., un Archivo debe ser trasladado a Memoria para que el Programa
pueda actuar sobre l. Para ello solicita el respectivo servicio al S.O.
Espacio de nombres de un proceso: Conjunto de objetos que
pueden ser usados por el proceso.
Espacio de nombres del procreador: Conjunto de objetos que
pueden ser usados por todos los procesos.
Espacio de memoria: Conjunto de direcciones de memoria usadas
para implementar el espacio de nombres del procesador.
Poder de un proceso (Modo Master-Slave): Conjunto de informacin
que define los recursos accesibles por dicho proceso, as como su
modo de acceso. Puede evolucionar dinmicamente durante su
ejecucin.
El espacio de nombres del proceso y del procesador no coinciden, en
general el primero es un subconjunto del segundo.
6

Diferencias de Conceptos:

PROGRAMA

PROCESO

Es una entidad pasiva.


Es su Cdigo o Texto y sus datos.

Es una entidad activa.


Es un programa en ejecucin ms su
PC (program Counter), registros y
variables

Es un conjunto de instrucciones.

Es un conjunto de instrucciones ms
su contexto de ejecucin descrito en
su PCB.

Un proceso dentro de un programa significa, por ejemplo: un conjunto de


instrucciones donde se puede dividir un programa en un conjunto de tareas o
procesos
READ (A)
READ (B)
C = (A) + (B)

Read (B)

Read (A)

Se pueden ejecutar
en paralelo

C = A+ B
7

Conceptos de Trabajo, Proceso e Hilo


Process

Creado por el S.O.

JOB STEPS

Process
USER

JOB

Process

Job STEPS
Especificado y
creado por el User

Process
(dir. simblicas)

Espacio de Direccionamiento

CPU

Proceso
S.O.

PGR

Data

STACK

Heap

Operaciones

I/O
etc.

Direcciones simblicas (mc)

PROCESADORES

La ejecucin significa que se suceden los procesos del usuario mezclados con las
llamadas al sistema (System Calls) conmutndose el contexto de ejecucin en cada
cambio.
Usuario (User): Es aquel que somete un trabajo (Job) a un sistema de cmputos.
Trabajo (Job): Conjunto de programas y datos sometidos al Sistema Operativo.
Paso de trabajo (Job Steps): Unidad del Job que debe ejecutarse en forma secuencial
mediante una serie de procesos o tareas.
Proceso o tarea (Process or Task): Sucesin de operaciones que se ejecutan
secuencialmente en el tiempo (luego se ampliar este concepto).
HILO (thread): es una parte o seccin de un proceso (registros, pila y PCB propio), y
comparten la memoria con todos los hilos que forman parte del mismo proceso. 8

Introduccin a los Procesos


Los Sistemas Operativos antiguos slo permitan ejecutar
un programa a la vez. Este programa obtena el control
completo del Sistema.
Las Sistemas Operativos actuales permiten la ejecucin
concurrentes de mltiples programas cargados en
Memoria. Nace el concepto de PROCESOS.
Un proceso es una porcin de un programa en ejecucin.
Es la unidad de trabajo de un SO moderno.
Un SO se puede ver como conjunto de procesos:
Los procesos del SO ejecutan cdigo del Sistema
Los procesos del Usuarios ejecutan cdigo del User.
Todos los procesos se ejecutan en forma pseudoconcurrente, con una sola CPU conmutado entre ellos.
En sistemas Multiprocesadores se ejecutan
concurrentemente los procesos e hilos
De esta manera se logra que el Sistema Computacional sea
mas productivo.
9

Introduccin a los Procesos


Proceso = porcin programa en ejecucin + PCB
Es la imagen de un programa en ejecucin (en Memoria y usando la
CPU).Tiene:
Cdigo Ejecutable
Datos
Pila (stack)
Registros Temporales
PC (program Counter): es usado para conmutar la CPU entre los
distintos programas en ejecucin.
PCB 1 PCB 2 PCB 3

prg 1

prg 2
prg 3
MEMORIA CENTRAL (MC)

CPU Un solo procesador se Multiplexa entre


los Procesos

Si dos o ms procesos forman parte de un mismo


programa, se consideran secuencias separadas de
ejecucin y que pueden cooperar entre ellos.
10

Cambio de Contexto de Ejecucin


Conmutacin de la CPU entre Procesos La CPU puede cambiar de un proceso a
otro cuando ejecuta varios procesos (P0 y P1) sobre una CPU (Multiprogramacin).

PROCESO P0

Interrupcin o
llamada al sistema

SISTEMA OPERATIVO
Interrupcin o llamada al sistema

PROCESO P1

guardar estado y el contexto del PCB


perteneciente al P0 en el stack
volver a cargar contexto y estado de PCB1

guardar estado y contexto del P1


volver a cargar contexto y estado de P0

Referencias:
Ejecutando

Inactivo

Interrupcin o
llamada al sistema

11

PCB Estructura de Datos de un Proceso


PCB Estructura de Datos de un Proceso
PID (Identificador del Proceso)
STATUS

(Estado: New, Ready, Running, Wait, Halt, etc.)

Pointer (Puntero)

(al prximo PCB)

rea de Pointers (Punteros a otros procesos parientes)


(Padre, Hijos, Dueo, grupo, etc.)

CPU DATA:

(Se deben salvar ante una Interrupcin o un System Call)


REGISTROS: Program Counter,Acumulador, Flags, RI, data
pointer, segment pointer, index pointer etc. etc.

Memory Management:

(Informacin para la administracin de la


Memoria Central)
Limites, RB, RL, Tablas de Paginas o Segmentos, etc

FILE Management:

(Inf. para la administracin de los Archivos)

Descriptores, Directorios, Path, Parmetros de llamada, proteccin, etc.

I/O Mangement:
ACCOUNT

Status, Path, etc. + (Inf. sobre los dispositivos y su uso)

Informacin estadistica y contable sobre los recursos para la


administracin.

Privilegios:

Modos de ejecucin, prioridades, protecciones, etc

(rea de Pointers a Threads)

12

El Bloque Control de Proceso (PCB, Vector de Estado o Descriptor del Proceso)

Cada proceso tiene asociado una estructura de datos llamado PCB

PCB:
Contiene: contexto de un proceso y todos los datos necesarios
para hacer posible la ejecucin de ese proceso y satisfacer sus
necesidades.
Se encuentra en Memoria Central, y se accede a ella en los
momentos en que se hace necesaria su actualizacin o
consulta.
Si su implementacin es esttica se podra desembocar en que
el espacio reservado para PCBs se termine.
Su ejecucin es dinmica y se puede implementar a la Tabla
PCB como un encadenamiento de PCBs en una estructura tipo
13
cola

Representacin de los procesos sobre el procesador


Mquina Virtual: En la ejecucin de cada proceso queda cableado 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.
KERNEL + S.O.
P1
( Entorno que
permite la existencia
de distintos procesos)

P2

PROCESOS

Pn
PCB

Estructura de datos que

Procesador

representa fsicamente

(Ejecuta instrucciones en Lenguaje


de mquina)

a todos los Procesos


( Cada uno Distinto)
Se copia una
imagen del PCB
sobre CPU

MQUINA VIRTUAL
Capaz de Ejecutar los Procesos del User

Una Estructura de Datos


homogenea por cada Proceso

Mquina Virtual: El SO, a travs del Kernel, crea esa mquina virtual
que permite la ejecucin de los procesos sobre un procesador
14
(Hardware cableado para cada instruccin del programa en ejecucin)
haciendo una abstraccin de la complejidad del procesamiento.

Estado de los procesos


Los estados de los procesos son internos del SO y
transparentes al usuario.
Se dividen en 2 Tipos:
ACTIVOS: son los que compiten por la CPU.

Listo (Ready)
Ejecutando (Running)
Esperando (Blocked)
Terminado (Completed)

INACTIVOS: son los que no pueden competir por la CPU.


Estn fuera de la Memoria Central (rea Swap del
Disco).
Suspendidos (Suspend): SUSPENDIDO-LISTO15
y

Estado de los procesos


Nuevo o New (create): El proceso est siendo creado.
Listo (ready): El Proceso espera que se le asigne el
procesador.
Ejecutando (running): Se estn ejecutando las Instrucciones
del proceso.
Esperando (blocked): El Proceso est esperando que suceda
algn evento.
Terminado (completed): El Proceso ha finalizado.
Suspendido (Suspend): fue suspendido en espera de un
evento, sin que hayan desaparecido las causas de su bloqueo.
New

listo

initiate

create
S.O.

signal

ejecutando kill Fin de


ejecucin

Bloqued
esperando

16

CREACION y DESTRUCCIN de PROCESOS

Los procesos en un SO pueden ejecutarse concurrentemente y deben ser creados y


eliminados dinmicamente. Para esto, se deben proveer SYSTEM CALL que permitan:
CREAR PROCESOS
PROCESOS
Crear un Proceso Significa:

DESTRUIR PROCESOS

TERMINAR

Se hace mediante system call.


Darle un nombre (referencias unvocas) representado en un PID (Process
IDentifier) y en un espacio de direccionamiento en memoria.
En el PCB inicial se deben especificar todo lo que va a usar el Proceso (Se
asignan todos los recursos que va a utilizar el proceso durante su ejecucin).
Un proceso puede ser creado por el S.O. o por otro proceso
Un proceso puede crear varios nuevos procesos.
El proceso que crea se denomina Proceso PADRE y los procesos creados, Procesos
HIJOS
Cada uno de estos procesos, pueden a su vez crear nuevos procesos.
De esta forma se crea una JERARQUIA DE PROCESOS
Como cada proceso necesita recursos, stos los pueden obtener directamente del SO,
o compartir recursos con su Padre.
Existen dos tipos de creacin:
Jerrquica: Cada proceso que se crea es hijo del proceso creador y hereda el entorno
de ejecucin de su padre.
No Jerrquica: cada proceso creado por otro proceso se ejecuta independientemente
17
de su creador en un entorno diferente.

Razones para crear un proceso:


Hay cuatro motivaciones para que un proceso sea
creado:
a) Llega un trabajo nuevo al sistema: generalmente
en forma de Batch entonces el SO debe recibirlo y
comenzarlo a ejecutar creando una secuencia de
procesos nuevos.
b) Llegada de un usuario al sistema: Entonces el SO
ejecuta un proceso llamado login.
c) Un servicio al programa en ejecucin: Creado por
el SO por ejemplo realizar una lectura en disco (en
ese caso el proceso que solicit el servicio es
bloqueado).
d) Por un proceso existente: por razones de
modularidad o paralelismo.
18

Tareas del S.O. en la creacin de un proceso


Una vez que el SO decide por alguna razn crear
un nuevo proceso sigue los siguientes pasos:
1. Asigna un nico identificador al nuevo proceso
(PID).
2. Asigna espacio para el proceso
3. Inicializa el bloque de control de proceso
4. Establece los enlaces apropiados con otras
estructuras de datos.
5. Amplia o crear otras estructures de dato en el
caso que fueran necesarias.

19

CREACION de PROCESOS
Cuando se crea un nuevo proceso existen dos alternativas:
El PADRE continua ejecutndose en forma concurrente con el HIJO. (Multitarea)
El PADRE espera hasta que alguno o todos sus HIJOS terminen.(no es
estrictamente obligatorio)
El shell lee las instrucciones que le da el usuario (a travs del teclado) e interpreta la
orden, y lo pasa al SO (kernel) para su ejecucin.
Mecanismo del shell para ejecutar la orden: crea un proceso HIJO a travs de system
call: fork(), exec(),..
Las ordenes internas del shell (cd, pwd, echo, etc.), cuando se ejecutan no se crean
procesos hijos, ya que estas ordenes son subrutinas dentro del interprete de comandos.
Cada proceso tiene un Identificador nico (PID) que corresponde a un nmero entero
Shell

El system call fork crea un nuevo proceso,


duplicando el espacio de direcciones del
Padre
Despus de la ejecucin de fork( ), ambos
procesos ejecutan concurrentemente el
nuevo cdigo.

Proceso Hijo

fork()

Exec()
Ejecucin de la
Orden

Proceso
Padre

Exit()
Wait()

20
Shell

Cul es la diferencia entre ambos procesos?


El system call fork entrega un cdigo de retorno diferente para
el padre.
i=fork();
El cdigo de retorno para:
0 si es Proceso_Hijo
i=
1. HIJO: es el valor cero,
PID_Hijo si es Proceso_Padre
2. PADRE: es el PID del Hijo
Pid=13
Padre
Hijo
i=0 Pid=25

i=fork()
Padre
i=25 Pid=13
21

De qu sirve sacar una copia de un proceso?


El system call exec se usa despus del fork para reemplazar el
espacio de memoria por un nuevo programa
El system call exec carga un archivo binario en la memoria y
comienza su ejecucin. El espacio antiguo se destruye.
El Padre puede esperar que los hijos terminen mediante el
system call wait
p id P
p a d re

p id P
p a d re

fo rk ()
p id H
h ijo

p id P

p id P

p id H

e x e c ()

p id P

p id H
h ijo

p id H

w a it ( )

e x it ( )

p id H
h ijo

p id P
p a d re

z o m b ie

p id P
te x to
d a to s
p ila
F i c h e r o s , t u b 22
e ra s , ...

Descendencia
y muerte de un proceso
Descendencia
de un proceso
Supongamos dos procesos (p y q) en que se dan las siguientes
relaciones:
q creado por p q D(p).
q D(p) D(q) D(p).
Se dice que q fue creado por p pertenece a la descendencia de p
y no existe otra forma de que un proceso pertenezca a D(p). Entonces
p es el padre y q el hijo.

Muerte de un proceso:
Un proceso muere cuando el proceso termina de ejecutar
(se completa) o por una falla o error. Puede ser por propia
iniciativa o por iniciativa del SO u de otro proceso.
Un proceso termina cuando ejecuta su ultima instruccin y pide al SO que lo
elimine
Cuando esto ocurre, todos sus recursos son devueltos al SO.
Cundo un proceso termina?
Se ejecut la ultima instruccin.
El proceso decide terminar.
Un proceso decide matar a otro.
Un proceso Padre puede matar a sus Hijos.

23

TERMINACION de PROCESOS
Un proceso puede terminar ejecutando el System Call
exit
El system call wait entrega el PID_Hijo que termina, de
esta forma el Padre se entera de cual Hijo termin.
Si el Padre termina, todos sus Hijos terminan

(Terminacin en cascada).
Ejemplo: Qu escribe?
main ( )
{ int hijo;
if ( (hijo = fork( ) ) == 0)
{ printf ( PID Hijo = %d \ n, getpid
( ) ) ; //ident.del proceso
pause ( ) ; // se suspende hasta seal
}
printf (PID Hijo = %d \ n, hijo) ;
exit (hijo) ;
}

24

Causales de muerte de un proceso

FIN NORMAL (Proceso completado)


ERROR DE PROTECCIN (Fin anormal)
POR INTERVENCIN DE UN OPERADOR O POR EL S.O.
VIOLACIONES de ACCESO A REAS DE MEMORIA.
FALLA DE E/S.
SE PRODUCE UNA EXCEPCIN (TRAP) EN LA EJECUCIN
ERROR DE DATOS
POR REQUERIMIENTO DE UN PROCESO PARIENTE
MUERTE O FINALIZACIN DE UN PROCESO PARIENTE
ERROR ARITMTICO
NO DISPONIBILIDAD DE MEMORIA
LIMITE DE TIEMPO EXCEDIDO EN EJECUCIN.
NECESIDAD DE RECURSOS NO DISPONIBLES
DESALOJO EN EL USO DEL PROCESADOR
25

Tareas del S.O. en la muerte de un proceso


Cuando un proceso muere ocurren los siguientes
pasos:
1. Desaparece el PCB
2. Recursos comunes son liberados
3. Recursos locales son destruidos
Cuando un proceso termina (muere) tambin deben
terminar sus hijos (normal o anormalmente). Esto
se conoce como terminacin en cascada.
Con la muerte de un proceso, el S.O. debe proveer
un servicio de acuerdo al tipo de finalizacin.
26

Transiciones de Estado de un proceso


Todo proceso durante su existencia cambia de estado varias
veces.
Cada cambio de estado se llama Transicin de Estado:

Comienzo de la ejecucin.
Paso a estado listo o preparado
Paso a estado de ejecucin.
Paso a estado bloqueado.
Activacin.
Paso a estado suspendido -bloqueado
Paso a estado suspendido - listo.
27

Modelo de proceso de 2 estados


Not Running Running: El SO hace ste cambio de
estado cuando es necesario elegir un nuevo proceso a ejecutar al
existir procesos en la cola y el procesador esta desocupado.
Running Not Running: De vez en cuando, un proceso
ser interrumpido por alguna razn. El SO elegir un nuevo
proceso para ejecutar o atender el evento. El proceso
interrumpido pasar del estado running al not running y el
evento (proceso) a ejecutar, realizar la transicin inversa
Dispach

Enter
Not Running

Running

Exit

Pause

Enter

Wait Queue

Dispach

Not Running
Pause

Procesador
(Running)

Exit

28

Modelo de 3 estados:
Los procesos van a estar en uno de
estos tres estados:
Ejecutando.
Listo para la ejecucin.
Bloqueados por alguna razn.
PID
A
EJECUTANDO

LISTO

BLOQUEADO

ESTADO
RUNNING

1ro en la
B
cola de
LISTOS C

READY
BLOCKED

D
E

READY
BLOCKED

PCBT

29

Modelo de Cinco Estados


Running: El proceso est siendo ejecutado.
Ready: El proceso est listo para ejecutarse cuando se le d la oportunidad.
Blocked: El proceso no puede ejecutarse hasta que ocurra algn evento (fin de
operacin de E/S)
New: El proceso recin ha sido creado, pero no est en el conjunto de procesos
ejecutables por el SO.
Exit: El proceso fue excluido del conjunto de procesos ejecutables por el SO.

NUEVO

Admitido

TERMINADO

Interrumpido

Salida

Null
LISTO

EJECUTANDO

Planificador despacha
Evento o E/S
Completado

Evento o E/S
espera
BLOQUEADO

30

Modelo de Seis Estados


El concepto de swapping trae nuevos conceptos de los estados existentes:
Listo (Ready): El proceso est en Memoria Central y listo para su ejecucin.
Bloqueado (Blocked): El proceso est en Memoria Central, pero est
esperando un evento generalmente de E/S.
Suspendido - Bloqueado (Blocked- suspend): El proceso est en memoria
secundaria y esperando un evento.
Bloqueado Listo (Ready- blocked): El proceso est en memoria secundaria
y disponible para ejecucin cuando se lo traiga a Memoria Central.

NEW

Admitido
Interrumpido por
time out

Activado
SUSPEND

Suspendido

Abandono
RUNNING

READY
Evento o E/S
Completado

EXIT

Planificador despacha
Evento o E/S
espera
BLOCKED

31

Modelo de 7 estados
Suspendido
NEW
Admitido

Admitido

Interrumpido por
time out

EXIT
Abandono

Activado
READY/
SUSPEND

READY
Suspendido

RUNNING

Planificador despacha

Evento o E/S
Completado
BLOCKED/
SUSPEND

Activado

Evento o E/S
espera
BLOCKED

Suspendido

32

Modelo de 9 estados (UNIX).


Retorno al
Usuario
Preempt
(Expropiado)
Created
No Admitido
Por
insuficiente
Memoria
READY/
SUSPEND

ZOMBI
Admitido
Suficiente
Memoria

Interrumpido
por time out

Return

Swap in
Kernel
RUNNING

READY
Swap out

USER
RUNNING

Interrupcin
por System
Calls

Planificador despacha

Evento o E/S
Completado
BLOCKED/
SUSPEND

Abandono

Evento o E/S
espera
BLOCKED in
Memory

Suspendido

33

Cambio de contexto de ejecucin


Se denomina conmutacin o cambio de contexto al mecanismo mediante el cual el
sistema almacena la informacin del proceso que se est ejecutando y recupera la
informacin del proceso que ejecutar enseguida.
SISTEMA
OPERATIVO

PROCESO A
E
J
E
C
U
C
I

I
N
A
C
T
I
V
O

E
J
E
C
U
C
I

Interrupcin
o Llamada al
sistema

PROCESO B

I
N
A
EJECUTA EL S.O.
C
T
GUARDA PCB del
PROCESO A
I
REPONE EL PCB
V del B en la CPU
O

Overhead

I
N
A
C
T
I
V
O

I
N
A
C
T
I
V
S.O.
O

Interrupcin
o Llamada al
sistema

EJECUTA EL
GUARDAR PCB del PROCESO B
REPONE EL PCB del A en la CPU

I
N
A
C
T
I
V
O

E
J
E
C
U
C
I

I
N
A
C
T
I
V
O

34

Las Operaciones sobre un proceso


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:
Crear el proceso.
Destruir o Eliminar un proceso
Suspender un proceso.
Reanudar un proceso.
Cambiar la prioridad de un proceso.
Temporizar la ejecucin de un proceso.
Despertar un proceso.
Prioridades.
Todos estos son System Calls.

35

El control de un Proceso
Estructuras de control del SO:
Si el SO va administrar los procesos y los recursos mediante el
uso de tablas. Estas tablas se encadenan mediante
punteros.
Las tablas de memoria se utilizan para controlar los
espacios de direccionamiento de la memoria central y la
virtual. Estas tablas de memoria deben incluir la siguiente
informacin:

La asignacin de memoria central a los procesos.


La asignacin de memoria secundaria a los procesos.
Atributos de proteccin de segmentos de memoria central o virtual.
Cualquier informacin necesaria para gestionar la memoria virtual.

Las Tablas de E/S son utilizadas por el SO para administrar


los dispositivos y canales de E/S del sistema.
Tablas de archivos, las cuales ofrecen una formacin sobre
la existencia de los archivos, su posicin en la memoria
secundaria, su estado actual y otros atributos.
36
Tablas del sistema sobre los procesos.

Estructuras de control de procesos

a)Ubicacin de los procesos: (Programa, Datos,


Stack. etc.) Pointers a Tablas
b) Atributos del proceso:

Identificacin del proceso.

Informacin de estado del proceso

Informacin de control del proceso.


c) El bloque de control (PCB)

Control de Procesos
a) Modos de ejecucin: (Modo dual del procesador) .
b) Cambio de procesos sobre el procesador
c) Cambio de contexto

37

a) Modo de Ejecucin
Hace falta distinguir entre el modo de ejecucin del
procesador que se asocia con el SO y el modo
usuario que se asocia con los programas del usuario.
Ciertas instrucciones de mquina pueden
ejecutarse slo en modo privilegiado o Kernel.
Entre stas estn la lectura o modificacin de
registros de control, instrucciones primitivas de E/S
e instrucciones relativas a la gestin de memoria. Y
solamente se puede acceder a ciertas zonas de
memoria en el modo privilegiado.
El modo de menor privilegio se conoce como modo
usuario, y el de mayor privilegio como modo de
sistema, supervisor o ncleo.
38

a) Modo de Ejecucin
La razn por la que se usan dos modos:
Es necesario proteger al SO y a las estructuras de datos
importantes, tales como los PCBs, de las inferencias de los
programas de usuario.
En el modo ncleo o privilegiado, el software tiene control
completo del procesador y de todas las instrucciones, registros
y memoria.
Surgen dos preguntas:
Cmo conoce el procesador en qu modo va a ejecutar?,
Cmo se cambia de modo?
Respuestas: Hay un bit en la PSW ( palabra de estado del
procesador), que indica el modo de ejecucin. El bit se cambia
como respuesta a ciertos sucesos tales como una llamada al
sistema y, as, se cambia de modo.
39

Control de procesos: Cambio de procesos (Process Switch)


sobre el procesador

Motivado por una interrupcin


A primera vista, la funcin de cambio de proceso parece sencilla.
En cierto momento, un proceso que se est ejecutando se
interrumpe, el SO pone a otro proceso en el estado de ejecucin
y pasa el control a dicho proceso.
Sin embargo, surgen diversas cuestiones de diseo:
Qu se debe hacer una distincin entre cambio de
contexto y cambio de proceso.?
Qu debe hacer el SO con las diferentes estructuras de
datos ?
Qu sucesos provocan un cambio de proceso bajo su
control para llevar a cabo un cambio de proceso?
40

Control de procesos: Cambio de procesos (Process Switch)


sobre el procesador

Qu eventos provocan el cambio de proceso?


Un cambio de proceso puede suceder en cualquier instante en el
que el SO gana el control de la CPU.
En primer lugar, se van a tener en cuenta las interrupciones del
sistema.
Se pueden distinguir dos clases de interrupciones del sistema:
1ra.: Originada por algn tipo de suceso que es
externo e independiente del proceso que se est
ejecutando, como la finalizacin de una E/S.
2da.: Oiginada por una condicin de error o
excepcin generada dentro del proceso que se est
ejecutando, por ej. un intento ilegal de acceso a un archivo.
41

Control de procesos: Cambio de procesos (Process Switch)


sobre el procesador por interrupciones

Qu eventos provocan el cambio de proceso?


1er.Tipo de Interrupcin:
Una interrupcin comn, el control se transfiere primero al gestor
de interrupciones, quien lleva a cabo algunas tareas bsicas
y, despus, se salta a la rutina del SO que se ocupa del tipo de
interrupcin que se ha producido.
Algunos ejemplos de estas interrupciones son:
Interrupcin de reloj:
Interrupcin de E/S:
Falta de memoria:
2do.Tipo de Interrupcin:
El sistema operativo determina si el error es fatal.
Excepciones (Trap).

42

Control de procesos: Cambio de procesos (Process Switch)


sobre
el procesador
Interrupcin
de reloj:por
Un interrupciones
reloj es un dispositivo que genera interrupciones
peridicamente. Ante una interrupcin de este tipo, un sistema operativo de tiempo
compartido, entre otras cosas, determina si el proceso en ejecucin ha alcanzado
el mximo tiempo de ejecucin que se le concedi.
Si es as, el proceso pasar a estado listo, y se asignar la CPU a otro proceso.
Interrupcin de E/S: El SO determina exactamente qu accin de E/S ha ocurrido.
Si se trata de un evento o suceso por el que esperaban uno o ms procesos, entonces
el SO traslada todos los procesos bloqueados en dicho evento al estado listo, y
determina (segn la poltica de planificacin):
1.-Si
reanuda la ejecucin del proceso interrumpido, o
2.-Pasa a
otro de mayor prioridad.
Falta de memoria: Un proceso hace una referencia a una direccin que no se
encuentra en memoria y que debe traerse de memoria secundaria.
Despus de hacer la solicitud de E/S para traer esa o esas direcciones de memoria, el
SO lleva a cabo un cambio de contexto para reanudar la ejecucin de otro
proceso;
El proceso que cometi la falta de memoria se pasa al estado bloqueado.
Despus de que las direcciones aludidas se carguen en memoria, dicho proceso 43
se

Control de procesos: Cambio de procesos (Process Switch)


sobre el procesador por Excepciones
2do.Tipo de Interrupcin: Excepciones (Trap). El SO determina si el error es fatal.
Si lo es, el proceso que se estaba ejecutando es eliminado, y se produce un cambio de
proceso.
Si no es fatal, la accin del SO depender de la naturaleza del error y del diseo del
SO.
Se puede hacer un cambio de proceso o, simplemente, reanudar el mismo proceso que
se estaba ejecutando.
Finalmente, el SO puede activarse mediante una llamada al sistema desde el
programa que se est ejecutando. Por ejemplo, est ejecutndose un proceso de
usuario y se llega a una instruccin que solicita una operacin de E/S, tal como
abrir un archivo.
Esta llamada provoca la transferencia a una rutina que forma parte del cdigo del
SO.
Por lo general el uso de una llamada al sistema hace que el proceso de usuario pase al
estado bloqueado
44

Control de procesos: Cambio de procesos sobre el procesador


C) Cambio de contexto:
Si existe una interrupcin pendiente es necesario:
Salvar el contexto (PC, registros del procesador, informacin de la pila)
del programa en ejecucin.
Poner en el PC la direccin del programa de tratamiento de la interrupcin,
que suele constar de unas pocas tareas bsicas.
Una pregunta que puede plantearse es: qu es lo que constituye el contexto que se
debe salvar?
Respuesta: Se debe incluir informacin que pueda ser necesaria para reanudar el
programa interrumpido. Entonces, se debe guardar la parte del PCB del proceso
denominada informacin de estado del procesador. Esto incluye al PC, otros
registros del procesador y la informacin de la pila.
Se tiene que hacer algo ms? Ello depender de lo que ocurra a continuacin.
La rutina de tratamiento de la interrupcin es normalmente un programa corto que
lleva a cabo unas pocas tareas bsicas relacionadas con una interrupcin.
Por ejemplo, se marca el indicador que seala la presencia de una interrupcin, puede
enviar un acuse de recibo a la entidad que produjo la interrupcin (como un mdulo
de E/S) y puede hacer algunas tareas bsicas relacionadas con los efectos del
suceso que caus la interrupcin. Por ejemplo, si la interrupcin est relacionada
con un suceso de E/S, el gestor de interrupciones comprobar condiciones de error.
Si se ha producido un error, la rutina de tratamiento puede enviar una seal al
45
proceso que solicit originalmente la operacin de E/S.

Control de procesos: Cambio de procesos sobre el procesador


C) Cambio de contexto:
Hay que hacer algo ms?
Pues depende de si la interrupcin va a venir seguida de un cambio de proceso o no.
La ocurrencia de una interrupcin no siempre causa el cambio de proceso.
Es posible que despus de que el gestor de interrupciones se haya ejecutado, el
proceso que estaba ejecutndose reanude su ejecucin.
En tal caso, tan slo hay que guardar la informacin de estado del procesador y
restaurarla para que pueda reanudarse correctamente el proceso interrumpido
(estas funciones son realizadas en hardware).
Por tanto, el cambio de contexto es un concepto distinto al cambio de un proceso.
Puede ocurrir un cambio de contexto sin cambiar el estado del proceso que est
actualmente en estado de ejecucin.
En tal caso, salvar el contexto y restaurarlo posteriormente involucra un pequeo
costo extra.
Sin embargo, si el proceso que estaba ejecutndose tiene que pasar a otro estado
(listo o bloqueado), el SO tiene que llevar a cabo cambios substanciales en su
entorno (contexto ).
46

Los pasos involucrados en un cambio completo de proceso son los siguientes:


1.Salvar el contexto del procesador, incluyendo el contador de programa y otros
registros.
2.Actualizar el PCB que estaba en estado de ejecucin. Esto implica cambiar el estado
del proceso a alguno de los otros estados(listo, bloqueado, suspendido_listo).
Tambin se tienen que actualizar otros campos, como uno en el que se guarde la razn
por la que se abandona el estado de ejecucin y otros con informacin de contabilidad.
3.Mover el PCB a la cola apropiada
(listos, bloqueados por el suceso i, suspendido_listo).
4.Seleccionar otro proceso para ejecucin (tema de Planificacin de Procesos).
5.Actualizar el PCB seleccionado. Cambiar, por ejemplo, su estado a en ejecucin.
6.Actualizar las estructuras de datos de gestin de la memoria. Esto puede hacer falta
dependiendo de cmo se gestione la traduccin de direcciones (tema de Adm.de
memoria).
7. Restaurar el contexto del procesador a aqul que exista en el momento en el que el
proceso seleccionado dej por ltima vez el estado de en ejecucin, cargando los
valores previos del contador de programa y de otros registros.
As pues, el cambio de proceso, que implica un cambio de contexto, requiere un
esfuerzo considerablemente superior al de un cambio de contexto.
47

EJECUCION DEL SO
Ncleo fuera de todo Proceso
Ejecucin dentro de los Procesos Usuarios
SO basado en procesos

EJECUCION DEL SO
Cada funcin del SO tambin ejecuta como procesos.
a) Ncleo fuera del proceso de usuario
Un enfoque bastante tradicional y habitual en SO mas antiguos.
El kernel del SO ejecuta fuera de cualquier proceso
El cdigo del SO se ejecuta como una entidad separada que opera
en modo privilegiado

P1

P2

..

Pn

NUCLEO
48

b) Ejecucin dentro de los procesos de usuario


Es comn en los SOs de maquinas pequeas (PC, estaciones de trabajo)
Ejecuta todo el SW del SO en el contexto de un proceso de usuario
El proceso ejecuta en Modo Privilegiado cuando el cdigo del SO esta
ejecutando
El enfoque es que el SO es una coleccin de rutinas que el usuario llama para
llevar a cabo diferentes funciones son ejecutadas dentro del entorno de
proceso usuario.

P1

Func.
SO

Pn

P2

Func.
SO

Func.
SO

....
Funciones de cambio de Proceso

La pila del ncleo se utiliza para gestionar las llamadas y los retornos, mientras que el
proceso est en el modo Kernel, el cdigo de los datos y del SO est en el espacio de
direcciones compartidas y son compartidas por todos los procesos de usuario.
Informa
cin del
Proceso
(PID)

Informac.
de
Estado
del
Procesador

PCB

Informac.
de Control
del
Proceso

Pila del
Usuario

Espacio de
direccionamiento
privado del usuario
(Programa + Datos)

Pila del
Ncleo

Espacio de
Direccionamiento
compartido
(Heap)

Espacio de direccionamiento en memoria de un proceso

49

Imagen de un Proceso: el SO se ejecuta dentro del proceso de Usuario.

c) S.O. basado en procesos


Es interpretar al SO como una coleccin de procesos
del sistema.
Las funciones del ncleo se organizan en procesos
separados.
Puede haber una pequea cantidad de cdigo del
Kernel ejecutar en modo Kernel y no en modo user.
til en un entorno de multiprocesador o de varias
computadoras

P1

P2 .. Pn

OS1

OS2 ..

OSk

Funciones de cambio de Proceso


50

Tipos de Procesos
Procesos disjuntos.

Tambin llamados independientes.


Son aquellos que slo tienen variables locales, o comparten variables globales sin
modificarlas. La interseccin de su PCB es vaca.

Procesos Concurrentes.
Tambin llamados procesos paralelos cuando pueden usar simultneamente un
recurso. Si el recurso es modificado entonces es crtico y se usa mutua
exclusin para sincronizar su uso.
Tambin se denominan procesos concurrentes cuando sus ejecuciones se
superponen en el tiempo.
Existen razones para la ejecucin concurrente, se debe a:
Informacin compartida.
Acelerar los clculos.
Modularidad
Comodidad

Para que todo esto se cumpla sin problemas se requiere que exista la
cooperacin entre procesos, y se necesita un mecanismo para la
sincronizacin y comunicacin
Otros:
Procesos reentrantes.
Procesos Interactuantes.
Procesos reutilizables.
Procesos pesados.

51

Hilo o Hebra (Threads)


Es una unidad elemental de uso de CPU. Es una parte o seccin de
un proceso que tiene sus propios registros, pila y PC.
Posee un Contador de Programa (Program Counter), un juego de
Registros de CPU (Register Set) y una Pila (Stack), Texto o Cdigo
ejecutable y comparte la memoria con todos aquellos hilos que
forman parte de un proceso
En muchos sentidos son como pequeos miniprocesos.
Puesto que cada hilo tiene acceso a cada direccin virtual
(comparten un mismo espacio de direccionamiento), un hilo puede
leer, escribir o limpiar la pila de otro hilo.

No existe proteccin entre los hilos debido a que es imposible


y no es necesario, ya que generalmente cooperan entre s la
mayora de las veces. Aparte del espacio de direcciones,
comparten el mismo conjunto de archivos abiertos, procesos
hijos, relojes, seales, etc.
52

Hilo o Hebra (Threads)


P ro c e s o

P r o c e s o s lig e r o s

P ro c e s o

P r o c e s o s lig e r o s

B lo q u e a d o p o r c o m u n ic a c i n
B lo q u e a d o p o r a c c e s o a d is c o
A c tiv o

53

54

Hilo o Hebra (Threads): Estructura de un proceso en Windows NT


P ro c e s o
C d ig o
D a to s
R e c u r s o s ( fic h e r o s , ...)
E n to rn o d e l p ro c e s o
T h re a d 1
R e g is tr o s
P ila

......

T h re a d n
R e g is tr o s
P ila

55

Hilos y Procesos

56

Ventajas con respecto a los procesos :


Se nota en el desempeo del sistema dado que:
Toma menos tiempo crearlos y eliminarlos (ya que se
crean dentro del contexto de un proceso).
Por otro lado toma menos tiempo realizar el cambio de
contexto para procesar un nuevo Thread:
Comparten un mismo espacio de memoria y datos entre s
debido a que forman parte de un mismo proceso.
Implementacin de hilos ( Threads )
Los hilos pueden ser implementados en tres niveles por la
forma en que son generados y tratados:
Nivel usuario (ULT User Level Thread)
Nivel kernel (KLT Kernel Level Thread)
Combinacin de ULT/KLT
57
Nivel de Proceso (PLT Process Level Thread)

Hilos a Nivel de Usuario (ULT):


Cualquier aplicacin puede ser programada para
ser multithreaded mediante el uso de threads
library (paquete de rutinas para ULT en el Compilador).
Las bibliotecas contienen cdigo para crear y
destruir hilos, pasar mensajes y datos entre hilos,
ejecucin planificada de hilos y para guardar y
restablecer contextos de hilos.
Entonces la generacin de los ULT se hace en el
momento de compilacin y no se requiere la
intervencin del Kernel, este ni se entera de la
existencia de los hilos.
Tambin llamados Hilos estticos por algunos
autores.
58

Ventajas y Desventajas de los ULT


Ventajas:
El cambio de hilo no requiere el modo Kernel, porque todas las
estructuras de datos estn dentro del espacio usuario.
El proceso no cambia al modo Kernel para manejar el hilo.
El algoritmo de planificacin puede ser adaptado sin molestar
la planificacin del SO.
ULT puede correr en cualquier SO.
Es muy rpido en la ejecucin
Desventajas:
En un SO tpico, la mayora de los System Call son
bloqueantes. Cuando un hilo ejecuta un System Call no slo se
bloquea ese hilo, sino que tambin se bloquean todos los hilos
del proceso.
En una estrategia pura de ULT, una aplicacin multithreaded no
puede tomar ventaja del multiprocesamiento. Un Kernel asigna
un proceso slo a un procesador por vez.
59

Hilos a nivel de Kernel (KLT):

Todo el trabajo de manejo de hilos es realizado por el Kernel.


No hay cdigo de manejo de hilo en el rea de aplicacin.
Cualquier aplicacin puede ser programada para ser multithreaded.
Todos los hilos dentro de una aplicacin son soportados dentro de
un solo proceso.
El Kernel mantiene la informacin de contexto para el proceso e
individualmente para los hilos dentro del proceso.
Tambin llamados Hilos dinmicos.

Ventajas:
Simultneamente el Kernel puede planificar mltiples hilos del
mismo proceso en mltiples procesadores.
Si un hilo de un proceso se bloquea, el Kernel puede planificar otro
hilo del mismo proceso.
Las rutinas mismas del Kernel pueden ser multithreaded.

Desventaja:
La transferencia de control de un hilo a otro dentro del mismo
proceso le requiere al Kernel un cambio de modo.
60

Combinacin
de ULT/KLT
Ejemplo:
el SO SOLARIS
Sun.
Mltiples hilos dentro de una misma aplicacin pueden
correr en paralelo en mltiples procesadores y un System
Call bloqueante no necesariamente bloquea todo el proceso.
La tcnica llamada jacketing convierte un System Call
bloqueante en uno no bloqueante.

Hilos a nivel de Proceso.


Otra solucin es crear los hilos por el proceso en el
momento de su ejecucin.
Es la peor solucin dado que es muy lento.

Como observacin importante los Threads creados por las bibliotecas


son unos 30 veces mas rpidos que los soportados por el Kernel y unas
300 veces con respecto a los del proceso. Obviamente que la mayora
de las soluciones solo usan ULT y KLT ( o la combinacin de ambos)
para su implementacin.
61

Tiempo de latencia en operaciones de Threads.


Operacin

ULT

KLT

PLT

Null Fork

34

948

11.300

Signal Wait

37

441

1.840

Tabla tomada de una publicacin de la ACM[1] en que las


unidades de tiempo estn en s (Micro segundo = millonsimo
de segundo).
[1] Anderson T., Versad B., Lazowska E., and Levy H. Scheduler Activations: Efective Kernel support for the User-Level
Management of Paralellism ACM Transactions on computer Systems, Febrero de 1992.
ACM son las siglas Association for Computer Machinery de Estados Unidos .

62

Relacin entre hilos y procesos.


Hilos : Procesos

Descripcin

Ejemplo

1:1

Cada hilo es un nico


proceso con su propio
espacio y recursos

La mayora de las
implementaciones y
clones UNIX

Un proceso define su
espacio
y
recursos.
Mltiples hilos pueden
ser creados y ejecutados
dentro de un proceso.

WinNT,
Solaris,OS/2,
MACH
Ra, Emerald

1:M

Un hilo puede pasar del


entorno un proceso a
otro. Esto le permite al
hilo ser fcilmente
movido entre distintos
sistemas.

M:M

Combina atributos de
M:1 y casos de 1:M

TRIX

M:1

63

La creacin de los Threads


System calls: Create thread()
Bibliotecas especiales dentro del compilador
Crea un Bloque de control:
TID:( Thread IDentifier)

ID (valor nico de identificacin)

Status

4 Estados no compartido: Ready, Running, Blocked y Exit

Pointers

Punteros a otros threads

Thread context
Estado de salida

Conjunto de registros y ciertos datos que definen la ejecucin


Exit status, que indica la razn por la cual se elimina al thread

Prioridad
Suspension count

Veces que pas por el estado suspendido

64

La ejecucin de los Threads


Son ejecutados
Cambian de estado:
Los servicios para la ejecucin de los threads son: Open thread(), Query thread
information(), Get context(), Set Context(), Suspend(), Resume(), etc.

Estado de los Threads:


EJECUTAN
DO RUNNING

TERMINAD
O - FINISH

Short term scheduler (Kernel).


Listo: Al crearse un nuevo thread se agenda para una futura
ejecucin en una cola de este estado.
Bloqueado: Espera que finalice un evento encolado.

LISTO SPAWN
BLOQUEADO
- BLOCKED

Ejecutando: Cuando el kernel selecciona un thread y realiza


un switch para poder hacer que este se ejecute. La ejecucin se
realiza hasta que se bloquea o termina.
Terminado: Cuando a thread completa su ejecucin, se elimina
su contexto y su stack asociado.

65

Uso de los Threads.


Los hilos se inventaron para permitir la combinacin del
paralelismo con la ejecucin secuencial y el bloqueo de
las llamadas al sistema.
Existen 3 formas (Modelos) de organizar un proceso de
muchos hilos en un Servidor:
Estructura Servidor Trabajador
Estructura En Equipo
Estructura Entubamiento (Pipeline)
66

Estructura Servidor Trabajador


Job

Hilos Trabajadores
dormidos

Un hilo en el servidor lee las solicitudes de

Hilo Trabajador
despertado
BUFFER o CACH

Examina stas y elige a un hilo trabajador

BUZN del SISTEMA

trabajo en un buzn del sistema


inactivo y le enva la solicitud. El servidor
despierta entonces al trabajador dormido.

HILO SELECTOR

El hilo verifica si puede satisfacer la solicitud

SERVIDOR

desde el bloque cach compartido


Hay 3 variantes de este modelo:
Modelo
Hilos
Servidor de un solo hilo
Mquina de estado finito

Caractersticas
Paralelismo, llamadas al sistema bloqueantes
Sin paralelismo, llamadas al sistema bloqueantes.
Paralelismo, llamadas al sistema no bloqueantes

67

Estructura en Equipo.
Job

Multihilos

Procesador
Estructura en Equipo

Todos los hilos son iguales y cada uno obtiene y


procesa sus propias solicitudes.
Cuando un hilo no puede manejar un trabajo por ser
hilos especializados se puede utilizar una cola de
trabajo.
Esto implica que cada hilo verifique primero la cola de
trabajo antes de mirar el buzn del sistema.

Estructura de Entubamiento (Pipeline).


El primer hilo genera ciertos datos y los
transfiere al siguiente para su procesamiento.

Job

Los datos pasan de hilo en hilo y en cada


etapa se lleva a cabo cierto procesamiento.
Procesador
Estructura en Pipeline

Esta puede ser una buena opcin para el


modelo productor/consumidor, no as para los
servidores de archivos
68

Problemas y Soluciones con Variables Globales (Threads)


El cdigo de un hilo consta al igual que un proceso de varios procedimientos o
funciones, pudiendo tener variables locales, globales y variables del procedimiento.
De stas, las globales producen problemas, ya que el valor de una variable global
puesto por un hilo que se duerme puede ser modificado por otro, creando as una
incoherencia cuando se despierta.
Las soluciones que se presentan son:
Prohibir las variables globales: esto presenta conflictos con el software ya
existente, como por ejemplo Unix.
Asignarle a cada hilo sus propias variables globales particulares. Esto
introduce un nuevo nivel de visibilidad, ya que las variables son visibles a
todos los procedimientos de un hilo adems de las variables visibles a un
procedimiento especfico y las visibles a todo el programa. Esta alternativa
tiene el inconveniente de no ser posible de implementar en la mayora de los
lenguajes de programacin. Una forma de hacerlo es asignar un bloque de
memoria a las variables globales y transferirlas a cada procedimiento como
un parmetro adicional.
Nuevos procedimientos en bibliotecas para crear, leer y escribir estas
variables. La creacin de una variable global implicara la asignacin de un
puntero en un espacio de almacenamiento dedicado a ese hilo de forma que
solo l tiene acceso a la variable global definida.
69

Llamadas del sistema para Threads

Los siguientes System Calls son ejemplos para el manejo


de los hilos o threads:
Llamadas de manejo de Threads: Create, Exit, Join,
Detach
Llamadas de Sincronizacin (Manejo de regiones criticas):
Mutex_init, Mutex_destroy, Mutex_lock, Mutex_trylock,
Mutex_unlock
Llamadas de Condicin Variables (usados para el bloqueo
de recursos): Cond_init, Cond_destroy, Cond_wait,
Cond_signal, Cond_broadcast
Llamadas de Scheduling (administran las prioridades de
los hilos): Setscheduler, Getscheduler, Setprio, Getprio
Llamadas de Eliminacin: Cancel, Set_cancel
70

El Concepto de Fiber (Fibra)


Cuando se utilizan ULT ( User Level Threads) para proveer ms
flexibilidad por parte de las aplicaciones dichos threads pueden ser
nicos o descomponerse en un conjunto de fibras que ejecutan un
porcin ms pequea.
Una fibra es una unidad de ejecucin que debe ser agendada
(Schedule ) por la aplicacin ( programa del usuario ).
Las fibras corren en el contexto de los threads que las agendan.
Cada thread puede agendar muchas fibras.
En general las fibras no presentan ventajas sobre una aplicacin
multithreading bien diseada.
Sin embargo el uso de las fibras puede hacer ms flexibles a las
aplicaciones que fueron pensadas para agendar sus propios
threads.
71

El Concepto de Fiber (2)


Cada thread puede convertirse en una fibra o en un
conjunto de fibras las cuales se ejecutan
secuencialmente cuando se comienza a ejecutar el
thread.
En s es otra forma de organizacin al momento del
procesamiento.
La idea es dividir las partes de ejecucin que funcionen,
de alguna manera, por separado.
El concepto de Fiber es una operacin dentro de un
Thread.
Se pueden tener mltiples Dispatching Units (Fibers)
dentro de un Thread, cada una compartiendo los recursos
del Thread.
Si una Fibra es bloqueada, las dems pueden seguir
ejecutndose sin problemas
72

El Concepto de Fiber (3)


Cuando el proceso muere, mueren todas Threads y las
Fibras que existieran dentro de l.
Las fibras presentan diferente informacin que los
threads: registran en su stack, solo un conjunto de
registros y datos provistos durante su creacin.
Hay dos formas de ejecucin de las fibras:
Uno es nonpreemtive en la cual cada thread es
ejecutado totalmente antes de abandonar el estado
running, es decir que todas sus fibras creadas se ejecutan
secuencialmente hasta terminar.
La otra manera es la preemptive que hace que se pueda
parar la ejecucin de un thread sin haberse procesado
todas las fibras en la que fue dividido.

73

System Calls para Fibers


ConvertThreadToFiber :Antes de comenzar con la
ejecucin de un thread se debe llamar a esta funcin la cual
crea un rea en la que se van a guardar todos los datos de la
fibra y hace que el thread seleccionado pase a ser ahora la
fibra a ejecutarse.
CreateFiber: A su vez cada fibra va creando nuevas fibras
con esta funcin
SwitchToFiber se usa para ejecutar la Fibra.
DeleteFiber: Se usa para eliminarla.
De esta manera el ciclo contina hasta finalizar la ejecucin.
Los nombres de las funciones varan de un SO a otro. Estos
pertenecen al WinNT en sus distintas versiones.
74

Fin del Mdulo 2.

75

Você também pode gostar