sistemas operativos 2

75
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] ema: Conceptos Fundamentales de los Sistemas Operativos

Upload: nancy-barletta

Post on 06-Jul-2016

15 views

Category:

Documents


6 download

DESCRIPTION

definiciones de Programas a Procesos

TRANSCRIPT

Page 1: 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

Page 2: sistemas operativos 2

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

Page 3: sistemas operativos 2

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.

Page 4: sistemas operativos 2

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)"

Page 5: sistemas operativos 2

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

Page 6: sistemas operativos 2

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.

Page 7: sistemas operativos 2

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.

Page 8: sistemas operativos 2

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

Page 9: sistemas operativos 2

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

Page 10: sistemas operativos 2

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

Page 11: sistemas operativos 2

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).

Page 12: sistemas operativos 2

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

Page 13: sistemas operativos 2

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)

Page 14: sistemas operativos 2

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.

Page 15: sistemas operativos 2

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.

Page 16: sistemas operativos 2

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

Page 17: sistemas operativos 2

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.

Page 18: sistemas operativos 2

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:

Page 19: sistemas operativos 2

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

Page 20: sistemas operativos 2

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

Page 21: sistemas operativos 2

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

Page 22: sistemas operativos 2

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

Page 23: sistemas operativos 2

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

Page 24: sistemas operativos 2

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

Page 25: sistemas operativos 2

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

Page 26: sistemas operativos 2

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

Page 27: sistemas operativos 2

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.

Page 28: sistemas operativos 2

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

Page 29: sistemas operativos 2

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.

Page 30: sistemas operativos 2

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

Page 31: sistemas operativos 2

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.

Page 32: sistemas operativos 2

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

Page 33: sistemas operativos 2

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

Page 34: sistemas operativos 2

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

Page 35: sistemas operativos 2

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.

Page 36: sistemas operativos 2

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.

Page 37: sistemas operativos 2

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

Page 38: sistemas operativos 2

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.

Page 39: sistemas operativos 2

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

Page 40: sistemas operativos 2

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?

Page 41: sistemas operativos 2

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.

Page 42: sistemas operativos 2

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).

Page 43: sistemas operativos 2

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.

Page 44: sistemas operativos 2

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

Page 45: sistemas operativos 2

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.

Page 46: sistemas operativos 2

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 ).

Page 47: sistemas operativos 2

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.

Page 48: sistemas operativos 2

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……..

Page 49: sistemas operativos 2

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

Page 50: sistemas operativos 2

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

Page 51: sistemas operativos 2

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).

Page 52: sistemas operativos 2

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.

Page 53: sistemas operativos 2

53

Hilo o Hebra (Threads) Proceso

Procesos ligeros

Proceso

Procesos ligeros

ActivoBloqueado por acceso a disco

Bloqueado por comunicación

Page 54: sistemas operativos 2

54

Page 55: sistemas operativos 2

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

......

Page 56: sistemas operativos 2

56

Hilos y Procesos

Page 57: sistemas operativos 2

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)

Page 58: sistemas operativos 2

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.

Page 59: sistemas operativos 2

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

Page 60: sistemas operativos 2

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):

Page 61: sistemas operativos 2

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

Page 62: sistemas operativos 2

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.

Page 63: sistemas operativos 2

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

Page 64: sistemas operativos 2

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

Page 65: sistemas operativos 2

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.

Page 66: sistemas operativos 2

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)

Page 67: sistemas operativos 2

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

Page 68: sistemas operativos 2

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

Page 69: sistemas operativos 2

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)

Page 70: sistemas operativos 2

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

Page 71: sistemas operativos 2

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.

Page 72: sistemas operativos 2

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)

Page 73: sistemas operativos 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)

Page 74: sistemas operativos 2

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

Page 75: sistemas operativos 2

75

Fin del Módulo 2.