u Las hebras o threads son procesos concurrentes ligeros
– se ejecutan en el mismo espacio de memoria
– se pueden realizar de forma eficiente (contexto ligero)
u El núcleo de tiempo real proporciona la funcionalidad
necesaria
– creación y terminación de hebras
– planificación del procesador
– sincronización (exclusión mutua y condiciones)
– gestión básica de interrupciones
u El núcleo (kernel) de tiempo real se encarga de la
creación, terminación y el multiplexado de los procesos
u Puede tomar varias formas:
– Núcleo desarrollado como parte de la aplicación
– Núcleo incluido en el entorno de ejecución del lenguaje
– Núcleo de un sistema operativo de tiempo real
– Núcleo microprogramado
– el padre debe esperar la iniciación de los hijos antes de seguir
– el general, también debe esperar que terminen los hijos antes de
terminar
u En sistemas de tiempo real a menudo se usa una
estructura de procesos estática
– sólo se crean procesos al comenzar la ejecución del sistema
– sólo se crean procesos desde el proceso inicial
– los procesos no terminan nunca
u Los procesos de un sistema de tiempo real pueden ser
independientes unos de otros
– no se comunican entre sí
– no se sincronizan de ninguna manera
…pero es más frecuente que haya interacciones
– cooperar para un fin común
– competir por la utilización de recursos.
u En este caso es necesario realizar operaciones de
comunicación y sincronización entre procesos
– dos procesos se comunican cuando hay una transferencia de
información de uno a otro
– dos procesos están sincronizados cuando hay restricciones en el
u En un sistema monoprocesador, la forma más directa de
comunicación entre dos o más procesos consiste en
compartir datos
– un proceso escribe una variable compartida, el otro la lee
u Sin embargo, el acceso incontrolado a variables comunes
puede producir resultados anómalos
– se dice que hay una condición de carrera cuando el resultado de la
ejecución depende del orden en que se intercalan las instrucciones
de dos o más procesos
– se trata de una situación anómala que hay que evitar
u Un segmento de código en el que un proceso accede a
una variable compartida se llama sección crítica
– las secciones críticas se deben ejecutar de forma atómica
– para ello se usa sincronización por exclusión mutua
» si un proceso está en una sección crítica, ningún otro proceso puede
entrar en otra sección crítica que acceda a la misma variable
u La exclusión mutua debe cumplir algunas condiciones
adicionales
– progreso: la selección del proceso que entra en la sección crítica
no se puede aplazar indefinidamente.
– espera acotada: cuando un proceso espera para entra en su
región crítica, el número de veces que entran otros procesos en
sus respectivas secciones críticas está acotado
20/03/07
Sistemas multiprogramados
11
Sincronización condicional
u Cuando una acción de un proceso solo se puede ejecutar
si otro proceso está en determinado estado o ha
ejecutado ciertas acciones, hace falta un tipo de
sincronización denominada sincronización condicional
Ejemplo: Productor y consumidor con tampón limitado
A
:productor
:Buffer
A
:consumidor
Put
Get
» no se debe hacer Put cuando el tampón está lleno.
» no se debe hacer Get cuando el tampón está vacío
» además, hay exclusión mutua en el acceso al tampón
type Buffer is tagged limited private;
procedure Put(B: in out Buffer; X: in Item);
procedure Get(B: in out Buffer; X: out Item);
private
...
type Buffer is
record
...
Mutex : Semaphore := 1; -- exclusión mutua
Full : Semaphore := 0; -- elementos ocupados
Empty : Semaphore := Size; -- elementos libres
end record;
u Un monitor es un módulo cuyas operaciones se ejecutan
en exclusión mutua
– el compilador produce el código de bajo nivel necesario
u La sincronización condicional se obtiene con
variables de condición
– dos operaciones primitivas: signal y wait
» wait suspende el proceso de forma incondicional y lo pone en una
cola asociada a la condición que espera
» signal reanuda el primer proceso que espera en la señal
» no hay memoria: si no espera nadie, la señal se pierde
– un proceso que espera una condición libera el monitor
Comentarios de: Sistemas multiprogramados (0)
No hay comentarios