Proyecto Sistemas Operativos

Sistemas Operativos en Tiempo Real   RTOS


Los Sistemas Operativos de tiempo real son aquellos en los cuales no tiene importancia el usuario, sino los procesos. Por lo general, están subutilizados sus recursos con la finalidad de prestar atención a los procesos en el momento que lo requieran. se utilizan en entornos donde son procesados un gran número de sucesos o eventos


Aplicaciones:
Control de trenes.
Telecomunicaciones.
Sistemas de fabricación integrada.
Producción y distribución de energía eléctrica.
Control de edificios.
Sistemas multimedia.

Algunos ejemplos de Sistemas Operativos de tiempo real son: VxWorks, Solaris, Lyns OS y Spectra. 
Características
Se dan en entornos en donde deben ser aceptados y procesados gran cantidad de sucesos, la mayoría externos al sistema computacional, en breve tiempo o dentro de ciertos plazos.
Se utilizan en control industrial, conmutación telefónica, control de vuelo, simulaciones en tiempo real., aplicaciones militares, etc.
Objetivo es proporcionar rápidos tiempos de respuesta.
Procesa ráfagas de miles de interrupciones por segundo sin perder un solo suceso.
Proceso se activa tras ocurrencia de suceso, mediante interrupción.
Proceso de mayor prioridad expropia recursos.
Por tanto generalmente se utiliza planificación expropiativa basada en prioridades.
Gestión de memoria menos exigente que tiempo compartido, usualmente procesos son residentes permanentes en memoria.
Población de procesos estática en gran medida.
Poco movimiento de programas entre almacenamiento secundario y memoria.
Gestión de archivos se orienta más a velocidad de acceso que a utilización eficiente del recurso.


Adelanto I  de Proyecto


Basado en lo anterior, desarrollare el proyecto de este semestre en la asignatura SO enfocado en este tipo de sistemas operativos, ya que ofrecen una mayor eficiencia al momento de realizar tareas complejas, esto debido a las exigentes caracteristicas que los conforman.
Sin embargo aun no he definido el tipo en especial que tomare para el estudio, es decir, no se si debo tomar uno en especifico (ejemplo: control de aviación, control de semáforos o telecomunicaciones), o tomar alguno de los subsistemas (ejemplo: sistema de control o controlado), supongo que en la investigación que estoy llevando a cabo encontrare diferencias y mayores definiciones para definitivamente tomar algún tipo. 


Por ahora dejo algunas referencias bilbliograficas que me han servido de ayuda y que espero también les sean útiles.






Adelanto II  de Proyecto


CLASIFICACIÓN DE LOS RTOS

Sistemas Rígidos de tiempo real (Críticos)
En este tipo de sistemas el incumplimiento de requisitos temporales supone un fallo grave del sistema.
Sistemas Flexibles de tiempo real (No críticos)
En los cuales un incumplimiento esporádico de los requisitos temporales no condiciona al sistema.



Lo fundamental en este tipo de sistemas es la estructura dinámica de tareas de tiempo crítico: Se podrá introducir una nueva tarea crítica siempre y cuando el sistema no se encuentre sobrecargado, para que esta nueva tarea que intentamos insertar no afecte a las demás tareas críticas ya existentes, sin embargo, una tarea no crítica siempre podrá ser añadida, pues solo basta la ralentización de su procesamiento para no afectar a las tareas críticas ya existentes.
En aplicaciones de tiempo real lo importante es realizar sus tareas justo en el momento adecuado, ni antes ni después, es decir, en instantes fijos y predeterminados (Determinismo).



Programación


Como ya sabemos en  los diseños más comunes de programación cada tarea tiene tres estados:
1.  Listo
2. Ejecución
3. Bloqueado
Aunque la mayoría de las tareas están bloqueadas casi todo el tiempo. Sólo se ejecuta una tarea por CPU y la lista de las tareas suele ser muy corta, de dos o tres tareas como mucho.
Normalmente la estructura de los datos de la lista de tareas del programador es diseñada para que necesiten interrupciones de tiempo solamente durante períodos de tiempo muy cortos, cuando se busca una parte de la lista muy específica.
Esto último da lugar a que otras tareas de la lista puedan ser ejecutadas independientemente del tiempo de interrupción de alguna otra tarea, son asíncronas.
Un ejemplo de buena programación es una lista conectada de tareas ordenadas por prioridad. Como la mayoría de las listas de tareas solo disponen de dos o tres comandos, una búsqueda secuencial siempre va a ser la respuesta más rápida, puesto que necesita de un tiempo de ejecución menor que el resto de programaciones.
El tiempo que se necesita para poner en cola una nueva tarea y reconfigurar el estado de la tarea con la prioridad más alta se llama “tiempo de respuesta crítico”.
Preparar una nueva tarea precisa de 3 a 20 instrucciones por cada entrada en la cola y restaurar la tarea de prioridad máxima necesita de 5 a 30 instrucciones.


Sistema de interacción entre tareas


El primero es el sistema de semáforos, en el cual, cuando un semáforo estaba cerrado había una cola de instrucciones esperando la apertura de éste. No obstante surgieron dos problemas a este modelo: “inversión de propiedades” y “puntos muertos”. En estos  puntos muertos se da el caso en el que dos tareas tienen dos semáforos pero en orden inverso. Esto se resuelve normalmente mediante un diseño cuidadoso, realizando colas o quitando semáforos, que pasan el control de un semáforo a la tarea de más alta prioridad en determinadas condiciones.
→ El otro tipo de interacción entre tareas es que se manden mensajes entre ellas. No obstante se sigue teniendo el mismo problema de inversión de prioridades que tiene lugar cuando una tarea está funcionando en un mensaje de baja prioridad, e ignora un mensaje de más alta prioridad en su correo. Los puntos muertos ocurren cuando dos tareas esperan a que la otra responda.


Está comprobado que el sistema de mensajes entre tareas da mucho mejores resultados y mejor rendimiento que el sistema de semáforos para sistemas en tiempo real.


Interrupciones.
En este tipo de sistemas, las interrupciones son la forma más común de aportar información del exterior del programa. En un sistema de tiempo real, una interrupción puede significar desde la existencia de nueva información en un puerto de comunicaciones hasta una muestra de audio-video obtenida por una Webcam.

Para que el sistema este acorde con su nombre y que sea en tiempo real, debe procesar una interrupción obtenida antes de que se cumpla la siguiente. Como el microprocesador normalmente solo puede atender una interrupción a la vez, es necesario que los controladores de tiempo real se ejecuten en el menor tiempo posible. Esto se logra no procesando la señal dentro de la interrupción, sino enviando un mensaje a una tarea o solucionando un semáforo que está siendo esperado por una tarea. El programador se encarga de activar la tarea y esta se encarga de adquirir la información y completar el procesamiento de la misma.
El tiempo que transcurre entre la generación de la interrupción y el momento en el cual esta es atendida se llama latencia de interrupción. El inverso de esta latencia es una frecuencia llamada frecuencia de saturación, si las señales que están siendo procesadas tienen una frecuencia mayor a la de saturación, el sistema será físicamente incapaz de procesarlas. En todo caso la mayor frecuencia que puede procesarse es mucho menor que la frecuencia de saturación y depende de las operaciones que deban realizarse sobre la información recibida.



ARQUITECTURA
























BIBLIOGRAFIA


http://www-gti.det.uvigo.es/~pedro/pub/sodtr/


http://html.rincondelvago.com/sistemas-operativos-en-tiempo-real.html


http://compartiendotuconocimiento.blogspot.com/2009/09/sistemas-operativos-de-tiempo-real.html




2 comentarios:

  1. NOTA: Sino les gusta la música de fondo, por favor me dicen y la quito pero no la cambio.

    ResponderBorrar
  2. En realidad el avance del primer corte es muy pobre, debe mejorar mucho si quiere tener un buen proyecto al finalizar el semestre

    ResponderBorrar