Вы находитесь на странице: 1из 3

Programacin

En los diseos tpicos, una tarea tiene tres estados: ejecucin, preparada y
bloqueada. La mayora de las tareas estn bloqueadas casi todo el tiempo.
Solamente se ejecuta una tarea por UCP. La lista de tareas preparadas suele ser
corta, de dos o tres tareas como mucho.
El problema principal es disear el programador. Usualmente, la estructura de los
datos de la lista de tareas preparadas en el programador est diseada para que
cada bsqueda, insercin y eliminacin necesiten interrupciones de cierre
solamente durante un perodo muy pequeo, cuando se buscan partes de la lista
muy definidas.
Esto significa que otras tareas pueden operar en la lista asincrnicamente,
mientras que se busca. Una buena programacin tpica es una lista conectada
bidireccional de tareas preparadas, ordenadas por orden de prioridad. Hay que
tener en cuenta que no es rpido de buscar sino determinista. La mayora de las
listas de tareas preparadas slo tienen dos o tres entradas, por lo que una
bsqueda secuencial es usualmente la ms rpida, porque requiere muy poco
tiempo de instalacin.
El tiempo de respuesta crtico es el tiempo que necesita para poner en la cola una
nueva tarea preparada y restaurar el estado de la tarea de ms alta prioridad.
En un sistema operativo en tiempo real bien diseado, preparar una
nueva tarea necesita de 3 a 20 instrucciones por cada entrada en la cola y la
restauracin de la tarea preparada de mxima prioridad de 5 a 30 instrucciones.
En un procesador 68000 20MHz, los tiempos de cambio de tarea son de 20
microsegundos con dos tareas preparadas.
Cientos de UCP MIP ARM pueden cambiar en unos pocos microsegundos.
Comunicacin entre Tareas[
Las diferentes tareas de un sistema no pueden utilizar los mismos datos o
componentes fsicos al mismo tiempo. Hay dos mtodos para tratar este problema.
Uno de los mtodos utiliza semforos. En general, el semforo binario puede estar
cerrado o abierto. Cuando est cerrado hay una cola de tareas esperando la
apertura del semforo.
Los problemas con los diseos de semforos son bien conocidos: inversin de
prioridades y puntos muertos (deadlocks).

En la inversin de prioridades, una tarea de mucha prioridad espera porque otra


tarea de baja prioridad tiene un semforo. Si una tarea de prioridad intermedia
impide la ejecucin de la tarea de menor prioridad, la de ms alta prioridad nunca
llega a ejecutarse. Una solucin tpica sera otorgar a la tarea que tiene el
semforo la prioridad de la tarea ms prioritaria de las que estn esperando dicho
semforo. Esto se denomina algoritmo de herencia bsica de prioridad.
En un punto muerto, dos tareas (T1,T2) pretenden adquirir dos semforos (semA,
semB) en orden inverso. En este caso si T1 adquiere semA y T2 adquiere semB
cuando intenten adquirir el segundo semforo no podrn hacerlo ya que lo tiene la
otra tarea. De esta forma entran en un punto muerto del que ninguna de las dos
tareas puede salir sin intervencin externa. Esto se resuelve normalmente
mediante un diseo por ej. obligando a adquirir los semforos en un orden
concreto.
La otra solucin es que las tareas se manden mensajes entre ellas. Esto tiene los
mismos problemas: La inversin de prioridades tiene lugar cuando una tarea est
tratando un mensaje de baja prioridad, e ignora un mensaje de ms alta prioridad
en su correo. Los puntos muertos ocurren cuando dos tareas realizan envos
bloqueantes (se quedan en la funcin de envo esperando a que el receptor reciba
el mensaje). Si T1 manda un mensaje de forma bloqueante a T2 y T2 manda un
mensaje de igual forma a T1 ninguna de las dos tareas saldr de la funcin de
envo quedando ambas bloqueadas ya que no podrn llegar a la funcin de
recepcin. Puede resolverse reordenando envos y recepciones o empleando
envos no bloqueantes o temporizados.
Aunque su comportamiento en tiempo real es algo ms difcil de analizar que los
sistemas de semforos, los sistemas basados en mensajes normalmente son ms
sencillos de desarrollar que los sistemas de semforo.
Interrupciones[
Las interrupciones son la forma ms comn de pasar informacin desde el mundo
exterior al programa y son, por naturaleza, impredecibles. En un sistema de
tiempo real estas interrupciones pueden informar diferentes eventos como la
presencia de nueva informacin en un puerto de comunicaciones, de una nueva
muestra de audio en un equipo de sonido o de un nuevo cuadro de imagen en una
videograbadora digital.
Para que el programa cumpla con su cometido de ser tiempo real es necesario
que el sistema atienda la interrupcin y procese la informacin obtenida antes de
que se presente la siguiente interrupcin. Como el microprocesador normalmente

solo puede atender una interrupcin a la vez, es necesario que los controladores
de tiempo real se ejecuten en el menor tiempo posible. Esto se logra no
procesando la seal dentro de la interrupcin, sino enviando un mensaje a una
tarea o solucionando un semforo que est siendo esperado por una tarea. El
programador se encarga de activar la tarea y esta se encarga de adquirir la
informacin y completar el procesamiento de la misma.
El tiempo que transcurre entre la generacin de la interrupcin y el momento en el
cual esta es atendida se llama latencia de interrupcin. El inverso de
esta latencia es unafrecuencia llamada frecuencia de saturacin, si las seales
que estn siendo procesadas tienen una frecuencia mayor a la de saturacin, el
sistema ser fsicamente incapaz de procesarlas. En todo caso la mayor
frecuencia que puede procesarse es mucho menor que la frecuencia de saturacin
y depende de las operaciones que deban realizarse sobre la informacin recibida.

Вам также может понравиться