sistemas operativos 2
-
Upload
nancy-barletta -
Category
Documents
-
view
16 -
download
6
description
Transcript of sistemas operativos 2
1
De Programas a Procesos
Corresponde a:
•Módulo 2 de Notas Sobre Sistemas Operativos (Manual del alumno)
•Capítulos 3, y 4 de STALLINGS
•Capítulos 4 de SILBERSCHATZ
Carlos NEETZEL [email protected]
Tema: Conceptos Fundamentales de los Sistemas Operativos
2
Tema: De Programas a ProcesosDE PROGRAMA A PROCESOS
PROCESOS
FIBERS
THREADSPROCESOS LIVIANOS
CONCEPTO DE TASK
CICLO DE VIDA DE UN PROCESO
RECURSOS DE UN PROCESO
LA REPRESENTACIÓN DE LOS PROCESOS
DISJUNTOSCONCURRENTESINTERACTUANTESREUTILIZABLESREENTRANTES
VARIABLES GLOBALES
VARIABLES LOCALES
TIPOS PROCESOS
CONCEPTO DE PROCESO PESADO
3
Procesos, Threads, Fibers
• Objetivos
Estudiar como un programa es llevado a ejecución. Entender el concepto de Proceso, ambiente de ejecución y cambio de contexto.
Comprender el concepto de Hilo y Fibra de un proceso.
4
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 Instrucción es una unidad de Ejecución que dura un tiempo finito y se ejecuta sobre un procesador (es indivisible, no se descompone ni se interrumpe y se dice que ejecuta atómicamente).
Cada instrucción determina:• Un conjunto de Operaciones sucesivas• Un conjunto de vías de datos involucrados en las operaciones
Las OPERACIONES son las Reglas para manipular los datos, por ejemplo:
• 'Una vez iniciada una operación debe terminar en un tiempo finito' o• " La salida de una operación es una función independiente del tiempo
(siempre que se apliquen los mismos datos a la entrada dará la misma salida)"
5
Pasos en la Ejecución de un Programa
(1) Compilador(2) Link-editor (3) Loader + S.O
PRGFUENTE 1 PRG
OBJETO 2 PRGEJECUTABLE 3
PRG en
PCB
Primer paso Segundo Paso Tercer Paso
ProcesadorImagen del
Proceso
Cuarto Paso
DireccionesSimbólicas
IdentificadoresÚnicos
DireccionesRelativas al origen
Especio de Nombrespara el Programa
ejecución
ProcesadorLógico quetraduce alfuente
Resuelve lasreferencias nosatisfechas porel compilador
Deja un Archivoen Lenguaje Ejecu-table y Desplazamien-tos relativos al origen
Proceso
Pila del Proceso
guarda Copia y carga
Es el área de memoria donde se ejecuta el proceso
6
Definiciones• Espacio de nombres de un programa: Conjunto de nombres sobre
el cual el programa puede actuar directamente (relación 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 información que define los recursos accesibles por dicho proceso, así como su modo de acceso. Puede evolucionar dinámicamente durante su ejecución.
• El espacio de nombres del proceso y del procesador no coinciden, en general el primero es un subconjunto del segundo.
7
Read (B) Se pueden ejecutar en paralelo
Read (A)
C = A + B
READ (A)READ (B)C = (A) + (B)
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
Diferencias de Conceptos:
PROGRAMA PROCESOEs una entidad pasiva. Es su Código o Texto y sus datos.
Es una entidad activa. Es un programa en ejecución más su PC (program Counter), registros y variables
Es un conjunto de instrucciones. Es un conjunto de instrucciones más su contexto de ejecución descrito en su PCB.
8
La ejecución significa que se suceden los procesos del usuario mezclados con las llamadas al sistema (System Calls) conmutándose el contexto de ejecución en cada cambio.
Usuario (User): Es aquel que somete un trabajo (Job) a un sistema de cómputos.
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): Sucesión de operaciones que se ejecutan secuencialmente en el tiempo (luego se ampliará este concepto).
HILO (thread): es una parte o sección de un proceso (registros, pila y PCB propio), y comparten la memoria con todos los hilos que forman parte del mismo proceso.
JOB STEPS Creado por el S.O.
Job STEPS
Especificado y creado por el User
(dir. simbólicas)
S.O. etc.
Direcciones simbólicas (mc)
JOBUSER
CPU OperacionesProceso
Espacio de Direccionamiento
Process
PGR Data STACK Heap I/O
PROCESADORES
Process
Process
ProcessConceptos de Trabajo, Proceso e Hilo
9
• Los Sistemas Operativos antiguos sólo permitían ejecutar un programa a la vez. Este programa obtenía el control completo del Sistema.
• Las Sistemas Operativos actuales permiten la ejecución concurrentes de múltiples programas cargados en Memoria. Nace el concepto de PROCESOS.
• Un proceso es una porción de un programa en ejecución. Es la unidad de trabajo de un SO moderno.
• Un SO se puede ver como conjunto de procesos: – Los procesos del SO ejecutan código del Sistema– Los procesos del Usuarios ejecutan código del User.
• Todos los procesos se ejecutan en forma pseudo-concurrente, 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.
Introducción a los ProcesosIntroducción a los Procesos
10
Proceso = porción programa en ejecución + PCBEs la imagen de un programa en ejecución (en Memoria y usando la CPU).Tiene:
•Código Ejecutable •Datos•Pila (stack)•Registros Temporales•PC (program Counter): es usado para conmutar la CPU entre los distintos programas en ejecución.
Si dos o màs procesos forman parte de un mismoprograma, se consideran secuencias separadas deejecución y que pueden cooperar entre ellos.
MEMORIA CENTRAL (MC)
prg 1
prg 2 prg 3
PCB 1 PCB 2 PCB 3
CPU Un solo procesador se Multiplexa entre los Procesos
Introducción a los ProcesosIntroducción a los Procesos
11
Cambio de Contexto de Ejecución
PROCESO P0 SISTEMA OPERATIVO PROCESO P1 Interrupción o llamada al sistema
guardar estado y contexto del P1
volver a cargar contexto y estado de P0 Interrupción o llamada al sistema
Referencias: Ejecutando Inactivo
guardar estado y el contexto del PCB
volver a cargar contexto y estado de PCB1
perteneciente al P0 en el stack Interrupción o
llamada al sistema
Conmutación de la CPU entre Procesos La CPU puede cambiar de un proceso a otro cuando ejecuta varios procesos (P0 y P1) sobre una CPU (Multiprogramación).
12
PCB Estructura de Datos de un Proceso
PID (Identificador del Proceso) (Estado: New, Ready, Running, Wait, Halt, etc.) STATUS
Pointer (Puntero) (al próximo PCB)
Área de Pointers (Punteros a otros procesos parientes) (Padre, Hijos, Dueño, grupo, etc.) CPU DATA:
REGISTROS: Program Counter,Acumulador, Flags, RI, data pointer, segment pointer, index pointer etc. etc.
(Se deben salvar ante una Interrupción o un System Call)
Memory Management: Limites, RB, RL, Tablas de Paginas o Segmentos, etc
(Información para la administración de la Memoria Central)
FILE Management: Descriptores, Directorios, Path, Parámetros de llamada, protección, etc.
(Inf. para la administración de los Archivos)
I/O Mangement: Status, Path, etc. + (Inf. sobre los dispositivos y su uso)
ACCOUNT Información estadistica y contable sobre los recursos para la administración.
Privilegios: Modos de ejecución, prioridades, protecciones, etc
(Área de Pointers a Threads)
PCB Estructura de Datos de un Proceso
13
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 ejecución 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 actualización o consulta.
Si su implementación es estática se podría desembocar en que el espacio reservado para PCB’s se termine.
Su ejecución es dinámica y se puede implementar a la Tabla PCB como un encadenamiento de PCB’s en una estructura tipo cola
El Bloque Control de Proceso (PCB, Vector de Estado o Descriptor del El Bloque Control de Proceso (PCB, Vector de Estado o Descriptor del Proceso)Proceso)
14
PROCESOS
PCB representa físicamente a todos los Procesos
( Cada uno Distinto) Se copia una imagen del PCB sobre CPU
Procesador (Ejecuta instruc- ciones en Lenguaje de máquina)
KERNEL + S.O. ( Entorno que
permite la existencia de distintos procesos)
MÁQUINA VIRTUAL Capaz de Ejecutar los Procesos del User
Una Estructura de Datos homogenea por cada Proceso
Estructura de datos que
P1
P2
Pn
Máquina Virtual: En la ejecución de cada proceso queda cableado en forma virtual todos los recursos necesarios para su ejecución. El S.O. controla la correspondencia dinámica de los Recursos de la Máquina Virtual y los físicos del sistema.
Representación de los procesos sobre el procesador
Máquina Virtual: El SO, a través del Kernel, crea esa máquina virtual que permite la ejecución de los procesos sobre un procesador (Hardware cableado para cada instrucción del programa en ejecución) haciendo una abstracción de la complejidad del procesamiento.
15
Estado de los procesosLos 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. Están fuera de la Memoria Central (Área Swap del Disco). • Suspendidos (Suspend): SUSPENDIDO-LISTO y
SUSPENDIDO-BLOQUEADO.
16
Nuevo o New (create): El proceso está siendo creado.Listo (ready): El Proceso espera que se le asigne el procesador.Ejecutando (running): Se están ejecutando las Instrucciones del proceso.Esperando (blocked): El Proceso está esperando que suceda algún 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.
listo ejecutando
esperando
create
initiate kill
Bloqued signal
Fin de ejecución
S.O.
New
Estado de los procesos
17
CREACION y DESTRUCCIÒN de PROCESOSLos procesos en un SO pueden ejecutarse concurrentemente y deben ser creados y eliminados dinámicamente. Para esto, se deben proveer SYSTEM CALL que permitan:
CREAR PROCESOS DESTRUIR PROCESOS TERMINAR PROCESOSCrear un Proceso Significa:
Se hace mediante system call.Darle un nombre (referencias unívocas) 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 ejecución).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 HIJOSCada uno de estos procesos, pueden a su vez crear nuevos procesos.De esta forma se crea una JERARQUIA DE PROCESOSComo cada proceso necesita recursos, éstos los pueden obtener directamente del SO, o compartir recursos con su Padre.Existen dos tipos de creación:
Jerárquica: Cada proceso que se crea es hijo del proceso creador y hereda el entorno de ejecución de su padre. No Jerárquica: cada proceso creado por otro proceso se ejecuta independientemente de su creador en un entorno diferente.
18
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 ejecución: 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.
Razones para crear un proceso:
19
Una vez que el SO decide por alguna razón 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.
Tareas del S.O. en la creación de un proceso
20
CREACION de PROCESOS
Cuando se crea un nuevo proceso existen dos alternativas:
El PADRE continua ejecutándose 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 través del teclado) e interpreta la orden, y lo pasa al SO (kernel) para su ejecución.
Mecanismo del shell para ejecutar la orden: crea un proceso HIJO a través 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 nùmero entero
El system call fork crea un nuevo proceso, duplicando el espacio de direcciones del Padre
Después de la ejecución de fork( ), ambos procesos ejecutan concurrentemente el nuevo código.
fork()
Exec()
Exit()
Wait()
Proceso Padre
Proceso Hijo
Ejecución de la Orden
Shell
Shell
21
¿Cuál es la diferencia entre ambos procesos?
El system call fork entrega un código de retorno diferente para el padre.
El código de retorno para:1. HIJO: es el valor cero,2. PADRE: es el PID del Hijo
i=fork(); 0 si es Proceso_Hijoi= PID_Hijo si es Proceso_Padre
i=fork()
i=25 Pid=13i=0 Pid=25
Pid=13
Padre
HijoPadre
22
¿De qué sirve sacar una copia de un proceso? El system call exec se usa después 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 ejecución. El espacio antiguo se destruye. El Padre puede esperar que los hijos terminen mediante el
system call wait
23
Descendencia de un procesoSupongamos 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 instrucción y pide al SO que lo elimine
Cuando esto ocurre, todos sus recursos son devueltos al SO.
¿Cuándo un proceso termina? •Se ejecutó la ultima instrucción.•El proceso decide terminar.•Un proceso decide matar a otro.•Un proceso Padre puede matar a sus Hijos.
Descendencia y muerte de un proceso
24
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 (Terminación 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 señal}
printf (“PID Hijo = %d \ n”, hijo) ;exit (hijo) ;
}
TERMINACION de PROCESOS
25
• FIN NORMAL (Proceso completado)• ERROR DE PROTECCIÓN (Fin anormal) • POR INTERVENCIÓN DE UN OPERADOR O POR EL S.O.• VIOLACIONES de ACCESO A ÁREAS DE MEMORIA.• FALLA DE E/S.• SE PRODUCE UNA EXCEPCIÓN (TRAP) EN LA EJECUCIÓN• ERROR DE DATOS• POR REQUERIMIENTO DE UN PROCESO PARIENTE• MUERTE O FINALIZACIÓN DE UN PROCESO PARIENTE• ERROR ARITMÉTICO• NO DISPONIBILIDAD DE MEMORIA• LIMITE DE TIEMPO EXCEDIDO EN EJECUCIÓN.• NECESIDAD DE RECURSOS NO DISPONIBLES• DESALOJO EN EL USO DEL PROCESADOR
Causales de muerte de un proceso
26
Cuando un proceso muere ocurren los siguientes pasos:
1. Desaparece el PCB2. Recursos comunes son liberados3. Recursos locales son destruidos Cuando un proceso termina (muere) también deben
terminar sus hijos (normal o anormalmente). Esto se conoce como terminación en cascada.
Con la muerte de un proceso, el S.O. debe proveer un servicio de acuerdo al tipo de finalización.
Tareas del S.O. en la muerte de un proceso
27
Transiciones de Estado de un proceso
Todo proceso durante su existencia cambia de estado varias veces.
Cada cambio de estado se llama Transición de Estado:
• Comienzo de la ejecución. • Paso a estado listo o preparado• Paso a estado de ejecución. • Paso a estado bloqueado. • Activación. • Paso a estado suspendido -bloqueado • Paso a estado suspendido - listo.
28
Modelo de proceso de 2 estados
ExitEnter
Pause
Dispach
Not Running Running
Exit
Pause
Procesador (Running)
Wait QueueEnter Dispach
Not Running
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 razón. 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 transición inversa
29
Modelo de 3 estados:
1ro en la cola de LISTOS
PID ESTADOA RUNNING
B READYC BLOCKED
D READYE BLOCKED
PCBT
BLOQUEADO
EJECUTANDO
LISTO
Los procesos van a estar en uno de estos tres estados:
• Ejecutando.• Listo para la ejecución.• Bloqueados por alguna razón.
30
Modelo de Cinco EstadosRunning: 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 algún evento (fin de operación de E/S)New: El proceso recién 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.
Salida
Admitido
Planificador despacha
NUEVO
LISTO EJECUTANDO
BLOQUEADO
TERMINADO
Interrumpido
Evento o E/Sespera
Evento o E/SCompletado
Null
31
Modelo de Seis Estados
Evento o E/SCompletado
Activado
Suspendido
Interrumpido por time out Abandono
Admitido
Planificador despacha
NEW
READY RUNNING
BLOCKED
EXIT
Evento o E/Sespera
SUSPEND
El concepto de swapping trae nuevos conceptos de los estados existentes:• Listo (Ready): El proceso está en Memoria Central y listo para su ejecución.• 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 ejecución cuando se lo traiga a Memoria Central.
32
Suspendido
Admitido
Suspendido
Activado
Activado
READY/SUSPEND
Evento o E/SCompletado
Suspendido
Interrumpido por time out Abandono
Admitido
Planificador despacha
NEW
READY RUNNING
BLOCKED
EXIT
Evento o E/Sespera
BLOCKED/SUSPEND
Modelo de 7 estados
33
Modelo de 9 estados (UNIX).
Return
Evento o E/Sespera
Retorno al Usuario
Interrumpido por time out
No AdmitidoPor insuficiente Memoria
Preempt (Expropiado)
Swap out Interrupción por System Calls
Swap in
Evento o E/SCompletado
Suspendido
AdmitidoSuficiente Memoria
Planificador despacha
Created
READY Kernel RUNNING
BLOCKED in Memory
Abandono
ZOMBI
BLOCKED/SUSPEND
USER RUNNING
READY/SUSPEND
34
Se denomina conmutación o cambio de contexto al mecanismo mediante el cual el sistema almacena la información del proceso que se está ejecutando y recupera la información del proceso que ejecutará enseguida.
Cambio de contexto de ejecución
Interrupción o Llamada al
sistema
PROCESO A PROCESO B
E J E C U C I ÓN
E J E C U C I ÓN
I N A C T I V O
I N A C T I V O
I N A C T I V O
E J E C U C I ÓN
I N A C T I V O
I N A C T I V O
I N A C T I V O
EJ ECUTA EL S.O. GUARDAR PCB del PROCESO B REPONE EL PCB del A en la CPU
EJ ECUTA EL S.O. GUARDA PCB del PROCESO A REPONE EL PCB del B en la CPU
SISTEMA OPERATIVO
Overhead Interrupción o Llamada al
sistema
35
Los Sistemas Operativos actuales poseen una serie de funciones cuyo objetivo es el de la manipulación 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 ejecución de un proceso. • Despertar un proceso. • Prioridades.
Las Operaciones sobre un proceso
Todos estos son System Calls.
36
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 información:
• La asignación de memoria central a los procesos.• La asignación de memoria secundaria a los procesos.• Atributos de protección de segmentos de memoria central o virtual.• Cualquier información 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 formación sobre
la existencia de los archivos, su posición en la memoria secundaria, su estado actual y otros atributos.
Tablas del sistema sobre los procesos.
37
Estructuras de control de procesosa)Ubicación de los procesos: (Programa, Datos,
Stack. etc.) – Pointers a Tablasb) Atributos del proceso:• Identificación del proceso. • Información de estado del proceso• Información de control del proceso.c) El bloque de control (PCB)
Control de Procesos
a) Modos de ejecución: (Modo dual del procesador) .b) Cambio de procesos sobre el procesadorc) Cambio de contexto
38
a) Modo de Ejecución• Hace falta distinguir entre el modo de ejecución del
procesador que se asocia con el SO y el modo usuario que se asocia con los programas del usuario.
• Ciertas instrucciones de máquina pueden ejecutarse sólo en modo privilegiado o Kernel.
• Entre éstas están la lectura o modificación de registros de control, instrucciones primitivas de E/S e instrucciones relativas a la gestión 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 núcleo.
39
La razón por la que se usan dos modos:Es necesario proteger al SO y a las estructuras de datos importantes, tales como los PCB’s, de las inferencias de los programas de usuario.
En el modo núcleo o privilegiado, el software tiene control completo del procesador y de todas las instrucciones, registros y memoria.
Surgen dos preguntas: ¿Cómo conoce el procesador en qué modo va a ejecutar?, ¿Cómo se cambia de modo?
Respuestas: Hay un bit en la PSW ( palabra de estado del procesador), que indica el modo de ejecución. El bit se cambia como respuesta a ciertos sucesos tales como una llamada al sistema y, así, se cambia de modo.
a) Modo de Ejecución
40
Control de procesos: Cambio de procesos (Process Switch) sobre el procesador
•Motivado por una interrupción•A primera vista, la función 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 ejecución y pasa el control a dicho proceso. •Sin embargo, surgen diversas cuestiones de diseño:
•¿Qué se debe hacer una distinción 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?
41
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 algún tipo de suceso que es
externo e independiente del proceso que se está ejecutando, como la finalización de una E/S.
• 2da.: Oiginada por una condición de error o excepción generada dentro del proceso que se está ejecutando, por ej. un intento ilegal de acceso a un archivo.
42
Control de procesos: Cambio de procesos (Process Switch) sobre el procesador por interrupcionesControl de procesos: Cambio de procesos (Process Switch) sobre el procesador por interrupciones
¿Qué eventos provocan el cambio de proceso?
1er.Tipo de Interrupción:Una interrupción común, el control se transfiere primero al gestor
de interrupciones, quien lleva a cabo algunas tareas básicas y, después, se salta a la rutina del SO que se ocupa del tipo de interrupción que se ha producido.
Algunos ejemplos de estas interrupciones son: • Interrupción de reloj:• Interrupción de E/S: • Falta de memoria:
2do.Tipo de Interrupción: El sistema operativo determina si el error es fatal.• Excepciones (Trap).
43
Control de procesos: Cambio de procesos (Process Switch) sobre el procesador por interrupcionesInterrupción de reloj: Un reloj es un dispositivo que genera interrupciones
periódicamente. Ante una interrupción de este tipo, un sistema operativo de tiempo compartido, entre otras cosas, determina si el proceso en ejecución ha alcanzado el máximo tiempo de ejecución que se le concedió.
Si es así, el proceso pasará a estado listo, y se asignará la CPU a otro proceso.
Interrupción de E/S: El SO determina exactamente qué acción de E/S ha ocurrido. Si se trata de un evento o suceso por el que esperaban uno o más procesos, entonces
el SO traslada todos los procesos bloqueados en dicho evento al estado listo, y determina (según la política de planificación):
1.-Si reanuda la ejecución del proceso interrumpido, o 2.-Pasa a otro de mayor prioridad.
Falta de memoria: Un proceso hace una referencia a una dirección que no se encuentra en memoria y que debe traerse de memoria secundaria.
Después 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 ejecución de otro proceso; El proceso que cometió la falta de memoria se pasa al estado bloqueado.
Después de que las direcciones aludidas se carguen en memoria, dicho proceso se pondrá en estado listo.
44
Control de procesos: Cambio de procesos (Process Switch) sobre el procesador por Excepciones
2do.Tipo de Interrupción: 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 acción del SO dependerá de la naturaleza del error y del diseño 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á ejecutándose un proceso de usuario y se llega a una instrucción que solicita una operación de E/S, tal como abrir un archivo. Esta llamada provoca la transferencia a una rutina que forma parte del código del SO.
Por lo general el uso de una llamada al sistema hace que el proceso de usuario pase al estado bloqueado
45
Control de procesos: Cambio de procesos sobre el procesador• C) Cambio de contexto:Si existe una interrupción pendiente es necesario:
Salvar el contexto (PC, registros del procesador, información de la pila) del programa en ejecución.
Poner en el PC la dirección del programa de tratamiento de la interrupción, que suele constar de unas pocas tareas básicas.
Una pregunta que puede plantearse es: ¿qué es lo que constituye el contexto que se debe salvar?
Respuesta: Se debe incluir información que pueda ser necesaria para reanudar el programa interrumpido. Entonces, se debe guardar la parte del PCB del proceso denominada información de estado del procesador. Esto incluye al PC, otros registros del procesador y la información de la pila.
¿Se tiene que hacer algo más? Ello dependerá de lo que ocurra a continuación. La rutina de tratamiento de la interrupción es normalmente un programa corto que
lleva a cabo unas pocas tareas básicas relacionadas con una interrupción. Por ejemplo, se marca el indicador que señala la presencia de una interrupción, puede
enviar un acuse de recibo a la entidad que produjo la interrupción (como un módulo de E/S) y puede hacer algunas tareas básicas relacionadas con los efectos del suceso que causó la interrupción. Por ejemplo, si la interrupción 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 señal al proceso que solicitó originalmente la operación de E/S.
46
Control de procesos: Cambio de procesos sobre el procesador
• C) Cambio de contexto: ¿Hay que hacer algo más? Pues depende de si la interrupción va a venir seguida de un cambio de proceso o no. La ocurrencia de una interrupción no siempre causa el cambio de proceso. Es posible que después de que el gestor de interrupciones se haya ejecutado, el
proceso que estaba ejecutándose reanude su ejecución. En tal caso, tan sólo hay que guardar la información 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 ejecución.
En tal caso, salvar el contexto y restaurarlo posteriormente involucra un pequeño costo extra.
Sin embargo, si el proceso que estaba ejecutándose tiene que pasar a otro estado (listo o bloqueado), el SO tiene que llevar a cabo cambios substanciales en su entorno (contexto ).
47
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 ejecución. Esto implica cambiar el estado del proceso a alguno de los otros estados(listo, bloqueado, suspendido_listo). También se tienen que actualizar otros campos, como uno en el que se guarde la razón por la que se abandona el estado de ejecución y otros con información de contabilidad.
3.Mover el PCB a la cola apropiada (listos, bloqueados por el suceso i, suspendido_listo).
4.Seleccionar otro proceso para ejecución (tema de Planificación de Procesos).
5.Actualizar el PCB seleccionado. Cambiar, por ejemplo, su estado a ‘en ejecución’.
6.Actualizar las estructuras de datos de gestión de la memoria. Esto puede hacer falta dependiendo de cómo se gestione la traducción de direcciones (tema de Adm.de memoria).
7. Restaurar el contexto del procesador a aquél que existía en el momento en el que el proceso seleccionado dejó por última vez el estado de en ejecución, 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.
48
EJECUCION DEL SO• Núcleo fuera de todo Proceso• Ejecución dentro de los Procesos Usuarios• SO basado en procesos
• EJECUCION DEL SO Cada función del SO también ejecuta como procesos.
a) Núcleo 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 código del SO se ejecuta como una entidad separada que opera
en modo privilegiado
NUCLEO
P1 P2 Pn……..
49
b) Ejecución dentro de los procesos de usuarioEs común en los SO’s de maquinas pequeñas (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 código del SO esta ejecutando
El enfoque es que el SO es una colección de rutinas que el usuario llama para llevar a cabo diferentes funciones son ejecutadas dentro del entorno de proceso usuario.
Funciones de cambio de Proceso
Func.SO
Func.SO
Func.SO……....
P1 P2 Pn
La pila del núcleo se utiliza para gestionar las llamadas y los retornos, mientras que el proceso esté en el “modo Kernel”, el código de los datos y del SO está en el espacio de direcciones compartidas y son compartidas por todos los procesos de usuario.
PCB
Información del Proceso
(PID)
Informac. de Estado del Procesador
Informac. de Control del Proceso
Pila del Usuario
Espacio de direccionamiento
privado del usuario (Programa + Datos)
Pila del Nùcleo
Espacio de Direccionamiento
compartido(Heap)
Imagen de un Proceso: el SO se ejecuta dentro del proceso de Usuario.
Espacio de direccionamiento en memoria de un proceso
50
c) S.O. basado en procesos•Es interpretar al SO como una colección de procesos del sistema. •Las funciones del núcleo se organizan en procesos separados. •Puede haber una pequeña cantidad de código del Kernel ejecutará en modo Kernel y no en modo user.•Útil en un entorno de multiprocesador o de varias computadoras
Funciones de cambio de Proceso
P1 P2 Pn….. OS1 OS2 ….. OSk
51
Tipos de Procesos• Procesos disjuntos. También llamados independientes. Son aquellos que sólo tienen variables locales, o comparten variables globales sin modificarlas. La intersección de su PCB es vacía.
• Procesos Concurrentes.También llamados procesos paralelos cuando pueden usar simultáneamente un recurso. Si el recurso es modificado entonces es crítico y se usa mutua exclusión para sincronizar su uso.También se denominan procesos concurrentes cuando sus ejecuciones se superponen en el tiempo. Existen razones para la ejecución concurrente, se debe a:
•Información compartida.•Acelerar los cálculos.•Modularidad•ComodidadPara que todo esto se cumpla sin problemas se requiere que exista la cooperación entre procesos, y se necesita un mecanismo para la sincronización y comunicación
Otros:Procesos reentrantes.Procesos Interactuantes.Procesos reutilizables.Procesos pesados.Procesos Livianos (Threads).
52
Hilo o Hebra (Threads) • Es una unidad elemental de uso de CPU. Es una parte o sección 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 Código ejecutable y comparte la memoria con todos aquellos hilos que forman parte de un proceso
• En muchos sentidos son como pequeños miniprocesos. • Puesto que cada hilo tiene acceso a cada dirección virtual
(comparten un mismo espacio de direccionamiento), un hilo puede leer, escribir o limpiar la pila de otro hilo.
• No existe protección entre los hilos debido a que es imposible y no es necesario, ya que generalmente cooperan entre sí la mayoría de las veces. Aparte del espacio de direcciones, comparten el mismo conjunto de archivos abiertos, procesos hijos, relojes, señales, etc.
53
Hilo o Hebra (Threads) Proceso
Procesos ligeros
Proceso
Procesos ligeros
ActivoBloqueado por acceso a disco
Bloqueado por comunicación
54
55
Hilo o Hebra (Threads): Estructura de un proceso en Windows NT
Thread 1R egistros
P ila
Entorno del proceso
R ecursos (ficheros, ...)
D atos
C ódigo
Proceso
Thread nR egistros
P ila
......
56
Hilos y Procesos
57
Ventajas con respecto a los procesos : • Se nota en el desempeño 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.
Implementación 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)• Combinación de ULT/KLT • Nivel de Proceso (PLT – Process Level Thread)
58
Hilos a Nivel de Usuario (ULT): • Cualquier aplicación puede ser programada para
ser multithreaded mediante el uso de threads library (paquete de rutinas para ULT en el Compilador).
• Las bibliotecas contienen código para crear y destruir hilos, pasar mensajes y datos entre hilos, ejecución planificada de hilos y para guardar y restablecer contextos de hilos.
• Entonces la generación de los ULT se hace en el momento de compilación y no se requiere la intervención del Kernel, este ni se entera de la existencia de los hilos.
• También llamados Hilos estáticos por algunos autores.
59
Ventajas:• El cambio de hilo no requiere el modo Kernel, porque todas las
estructuras de datos están dentro del espacio usuario.• El proceso no cambia al modo Kernel para manejar el hilo.• El algoritmo de planificación puede ser adaptado sin molestar
la planificación del SO.• ULT puede correr en cualquier SO.• Es muy rápido en la ejecuciónDesventajas:• En un SO típico, la mayoría de los System Call son
bloqueantes. Cuando un hilo ejecuta un System Call no sólo se bloquea ese hilo, sino que también se bloquean todos los hilos del proceso.
• En una estrategia pura de ULT, una aplicación multithreaded no puede tomar ventaja del multiprocesamiento. Un Kernel asigna un proceso sólo a un procesador por vez.
Ventajas y Desventajas de los ULT
60
• Todo el trabajo de manejo de hilos es realizado por el Kernel. • No hay código de manejo de hilo en el área de aplicación. • Cualquier aplicación puede ser programada para ser multithreaded.• Todos los hilos dentro de una aplicación son soportados dentro de
un solo proceso. • El Kernel mantiene la información de contexto para el proceso e
individualmente para los hilos dentro del proceso.• También llamados Hilos dinámicos.Ventajas:• Simultáneamente el Kernel puede planificar múltiples hilos del mismo
proceso en múltiples 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.
Hilos a nivel de Kernel (KLT):
61
• Ejemplo: el SO SOLARIS Sun.• Múltiples hilos dentro de una misma aplicación pueden
correr en paralelo en múltiples procesadores y un System Call bloqueante no necesariamente bloquea todo el proceso.
• La técnica llamada jacketing convierte un System Call bloqueante en uno no bloqueante.
• Hilos a nivel de Proceso.• Otra solución es crear los hilos por el proceso en el
momento de su ejecución. • Es la peor solución dado que es muy lento.
• Como observación importante los Threads creados por las bibliotecas son unos 30 veces mas rápidos que los soportados por el Kernel y unas 300 veces con respecto a los del proceso. Obviamente que la mayoría de las soluciones solo usan ULT y KLT ( o la combinación de ambos) para su implementación.
Combinación de ULT/KLT
62
Tiempo de latencia en operaciones de Threads.
Operación ULT KLT PLT
Null Fork 34 948 11.300
Signal Wait 37 441 1.840
Tabla tomada de una publicación de la ACM[1] en que las unidades de tiempo están en s (Micro segundo = millonésimo 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.
63
Relación entre hilos y procesos.Hilos : Procesos Descripción Ejemplo
1:1Cada hilo es un único proceso con su propio espacio y recursos
La mayoría de las implementaciones y clones UNIX
M:1Un proceso define su espacio y recursos. Múltiples hilos pueden ser creados y ejecutados dentro de un proceso.
WinNT, Solaris,OS/2,MACH
1:M
Un hilo puede pasar del entorno un proceso a otro. Esto le permite al hilo ser fácilmente movido entre distintos sistemas.
Ra, Emerald
M:M Combina atributos de M:1 y casos de 1:M
TRIX
64
La creación de los Threads• System calls: Create thread() • Bibliotecas especiales dentro del compilador•Crea un Bloque de control:
TID:( Thread IDentifier)
Status
Pointers
Thread context
Estado de salida Prioridad
Suspension count
ID (valor único de identificación)
Conjunto de registros y ciertos datos que definen la ejecución
4 Estados no compartido: Ready, Running, Blocked y Exit
Punteros a otros threads
Exit status, que indica la razón por la cual se elimina al thread
Veces que pasó por el estado suspendido
65
La ejecución de los Threads• Son ejecutados• Cambian de estado:• Los servicios para la ejecución de los threads son: Open thread(), Query thread information(), Get context(), Set Context(), Suspend(), Resume(), etc.
Estado de los Threads:
BLOQUEADO - BLOCKED
TERMINADO - FINISH
LISTO - SPAWN
EJECUTANDO - RUNNING
•Short term scheduler (Kernel). •Listo: Al crearse un nuevo thread se agenda para una futura ejecución en una cola de este estado.
•Bloqueado: Espera que finalice un evento encolado.
•Ejecutando: Cuando el kernel selecciona un thread y realiza un “switch” para poder hacer que este se ejecute. La ejecución se realiza hasta que se bloquea o termina.
•Terminado: Cuando a thread completa su ejecución, se elimina su contexto y su stack asociado.
66
Uso de los Threads.•Los hilos se inventaron para permitir la combinación del paralelismo con la ejecución 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)
67
Job
BUFFER o CACHÉ
BUZÓN del SISTEMA
HILO SELECTOR
Hilos Trabajadoresdormidos
Hilo Trabajadordespertado
Un hilo en el servidor lee las solicitudes de trabajo en un buzón del sistema
Examina éstas y elige a un hilo trabajador inactivo y le envía la solicitud. El servidor despierta entonces al trabajador dormido.
El hilo verifica si puede satisfacer la solicitud desde el bloque caché compartido
Estructura Servidor Trabajador
SERVIDOR
•Hay 3 variantes de este modelo:
Modelo CaracterísticasHilos Paralelismo, llamadas al sistema bloqueantesServidor de un solo hilo Sin paralelismo, llamadas al sistema bloqueantes.Máquina de estado finito Paralelismo, llamadas al sistema no bloqueantes
68
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 buzón del sistema.
Job
Multihilos
Estructura en EquipoProcesador
Job
•El primer hilo genera ciertos datos y los transfiere al siguiente para su procesamiento.
•Los datos pasan de hilo en hilo y en cada etapa se lleva a cabo cierto procesamiento.
•Esta puede ser una buena opción para el modelo productor/consumidor, no así para los servidores de archivos
Estructura de Entubamiento (Pipeline).
Estructura en Pipeline
Procesador
69
• El código 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 además de las variables visibles a un procedimiento específico y las visibles a todo el programa. Esta alternativa tiene el inconveniente de no ser posible de implementar en la mayoría de los lenguajes de programación. Una forma de hacerlo es asignar un bloque de memoria a las variables globales y transferirlas a cada procedimiento como un parámetro adicional.
Nuevos procedimientos en bibliotecas para crear, leer y escribir estas variables. La creación de una variable global implicaría la asignación de un puntero en un espacio de almacenamiento dedicado a ese hilo de forma que solo él tiene acceso a la variable global definida.
Problemas y Soluciones con Variables Globales (Threads)
70
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 Sincronización (Manejo de regiones criticas): Mutex_init, Mutex_destroy, Mutex_lock, Mutex_trylock, Mutex_unlock
Llamadas de Condición 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 Eliminación: Cancel, Set_cancel
Llamadas del sistema para Threads
71
El Concepto de Fiber (Fibra) • Cuando se utilizan ULT ( User Level Threads) para proveer más
flexibilidad por parte de las aplicaciones dichos threads pueden ser únicos o descomponerse en un conjunto de fibras que ejecutan un porción más pequeña.
• Una fibra es una unidad de ejecución que debe ser agendada (Schedule ) por la aplicación ( 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 aplicación
multithreading bien diseñada. • Sin embargo el uso de las fibras puede hacer más flexibles a las
aplicaciones que fueron pensadas para agendar sus propios threads.
72
• 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 organización al momento del procesamiento.
• La idea es dividir las partes de ejecución que funcionen, de alguna manera, por separado.
• El concepto de Fiber es una operación dentro de un Thread.
• Se pueden tener múltiples Dispatching Units (Fibers) dentro de un Thread, cada una compartiendo los recursos del Thread.
• Si una Fibra es bloqueada, las demás pueden seguir ejecutándose sin problemas
El Concepto de Fiber (2)
73
• Cuando el proceso muere, mueren todas Threads y las Fibras que existieran dentro de él.
• Las fibras presentan diferente información que los threads: registran en su stack, solo un conjunto de registros y datos provistos durante su creación.
• Hay dos formas de ejecución 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 ejecución de un thread sin haberse procesado todas las fibras en la que fue dividido.
El Concepto de Fiber (3)
74
ConvertThreadToFiber :Antes de comenzar con la ejecución de un thread se debe llamar a esta función 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 función SwitchToFiber se usa para ejecutar la Fibra.DeleteFiber: Se usa para eliminarla.
De esta manera el ciclo continúa hasta finalizar la ejecución. Los nombres de las funciones varían de un SO a otro. Estos pertenecen al WinNT en sus distintas versiones.
System Calls para Fibers
75
Fin del Módulo 2.