ilike

http://octavio-razo.blogspot.com/

sábado, 25 de junio de 2011

¿Qué es un sistema en tiempo real?.
El Diccionario Oxford de computación dice:

Cualquier sistema en el que el tiempo en el que se produce la salida es significativo. El intervalo entre el tiempo de entrada y el de salida debe ser lo suficientemente pequeño para una temporalidad aceptable.

Un sistema en tiempo real es la expresada por Donald Gillies1:
"A real‐time system is one in which the correctness of the computations not
only depends upon the logical correctness of the computation but also upon
the time at which the result is produced.
If the timing constraints of the system are not met, system failure is said to
have occurred."
que traducida al español sería:
Un sistema de tiempo real (STR) es aquel en cual los resultados son correctos, y no sólo depende
de si la lógica e implementación de los programas computacionales son correctos, sino también el
tiempo en el cual se producen dichos resultados.
Si no se verifican las restricciones de tiempo, se dice que se ha producido un fallo en el sistema.
1

(Actividad 4, parte 2)


Diferencias entre S.O. Convencionales y S.O. de Tiempo Real


Características
S.O. en Tiempo Real
S.O. Convencional
Uso
Uso específico en área de trabajo industrial es decir más complejo (control industrial, conmutación telefónica, control de vuelo, simulaciones en tiempo real., aplicaciones militares, etc)
Uso de oficina u hogar, entorno mas agradable y simple para tareas de contabilidad y similares
Determinismo.
Si
No
Valoración de tiempo
Si
No
Tiempo de respuesta
Prioridad Rápida
Prioridad Normal
Restricción de tiempo
Si
No
Objetivo
Es proporcionar rápidos tiempos de respuesta.
Permite que los recursos de la computadora se usen de la manera más eficiente posible
Evolucionar
Si
Si
Recuperación de errores
Si
Si (conservar la máxima capacidad y los máximos datos posibles en caso de fallos)
Control del usuario
Si
No
Multiusuario
No
Si
Multitarea
Si
No
Planificación
Por prioridad
Secuencial
Gestión de memoria
Menos exigente que tiempo compartido.  
Los procesos ocupan más.
Gestión de archivos
se orienta más a velocidad de acceso
Se orienta más a la utilización eficiente del recurso
Ejemplos
VxWorks, Solaris, Lyns OS y Spectra.
Windows 98, Windows Me, Windows Vista, Windows Seven, Linux Ubuntu, Linux Xubuntu


  

Lenguajes de Programacion en tiempo real



Los programas creados para la programacion exclusiva en tiempo real, son dos, Ada y Occam, los cuales presento un pequeño resumen a continuacion.

Ada                                                                                       
Es un lenguaje de programación orientado a objetos y fuertemente tipado de forma estática que fue diseñado por Jean Ichbiah de CII Honeywell Bull por encargo del Departamento de Defensa de los Estados Unidos. Es un lenguaje multipropósito, orientado a objetos y concurrente, pudiendo llegar desde la facilidad de Pascal hasta la flexibilidad de C++.
Fue diseñado con la seguridad en mente y con una filosofía orientada a la reducción de errores comunes y difíciles de descubrir. Para ello se basa en un tipado muy fuerte y en chequeos en tiempo de ejecución (desactivables en beneficio del rendimiento). La sincronización de tareas se realiza mediante la primitiva rendezvous.
Ada se usa principalmente en entornos en los que se necesita una gran seguridad y fiabilidad como la defensa, la aeronáutica (Boeing o Airbus), la gestión del tráfico aéreo (como Indraen España) y la industria aeroespacial entre otros.
Uno de sus compiladores muy usado es GNAT, originalmente desarrollado por la Universidad de Nueva York bajo patrocinio del DoD. Está basado en la tecnología de GCC y es software libre. Pero existen otros compiladores comerciales.

Características

  • La sintaxis, inspirada en Pascal, es bastante legible incluso para personas que no conozcan el lenguaje. Es un lenguaje que no escatima en la longitud de las palabras clave, en la filosofía de que un programa se escribe una vez, se modifica decenas de veces y se lee miles de veces (legibilidad es más importante que rapidez de escritura).
  • Es indiferente el uso de mayúsculas y minúsculas en los identificadores y palabras claves, es decir es un lenguaje case-insensitive.
  • En Ada, todo el programa es un único procedimiento, que puede contener subprogramas (procedimientos o funciones).
  • Cada sentencia se cierra con end qué_cerramos. Es un modo de evitar errores y facilitar la lectura. No es necesario hacerlo en el caso de subprogramas, aunque todos los manuales lo aconsejan y casi todos los programadores de Ada lo hacen.
  • El operador de asignación es :=, el de igualdad =. A los programadores de C y similares les puede confundir este rasgo inspirado en Pascal.
  • Se distingue entre "procedimientos"  y "funciones" .

Occam 

Es un lenguaje de programación imperativo y estructurado (al igual que Pascal). Poco conocido y Con muy pero muy poca informacion en la red. Fue desarrollado por David May en Inmos Limited, Bristol, Inglaterra, para desarrollar software para su línea de procesadores Transputers, existiendo también implementaciones para otras plataformas.

Es un lenguaje de procesamiento en paralelo; se basa en el álgebra de procesos CSP (Communicating Sequential Processes) y comparte muchas de sus características. Lleva el nombre de William of Ockham famoso por ser el creador de la navaja de Occam.

Occam incorpora soporte para grano muy fino, facilidad para usar hilos y el apoyo sin fisuras de los entornos multi-procesador. Puede ser utilizado en sistemas de memoria compartida o distribuida, y sus fuertes fundamentos en CSP lo hace una excelente opción cuando se requieren pruebas formales de corrección.

Actualmente el Occam esta tambien como aplicación en el lenguaje Java.

lunes, 20 de junio de 2011

Acciones atómicas y Transacciones Atómicas

 Acciones atómicas 
Definiciones.

Una acción es atómica si los procesos que la realizan no saben de la existencia de ningún otro proceso activo, y ningún otro proceso activo tiene constancia de las actividades de los procesos durante el tiempo en el que están realizando la acción.
Una acción es atómica  si los procesos que la realizan no se comunican con otros procesos mientras se está realizando la acción.
Una acción es atómica  si los procesos que la realizan no pueden detectar ningún cambio de estado salvo aquellos realizados por ellos mismos, y si no revelan sus cambios de estado hasta 
que la acción se haya completado.
Las acciones son atómicas si, en lo que respecta a otros procesos, pueden ser consideradas indivisibles e instantáneas, de forma que los efectos sobre el sistema sean como si estuvieran entrelazadas y no en concurrencia.
Presentacion Informatica 3; 2009- Ing Estela D'Angostino
dsi.fceia.unr.edu.ar/downloads/Concurrencia-2010a(1).ppt



Transacciones Atómicas

Como el programador debe enfrentarse directamente con los detalles de:
  • La exclusión mutua.
  • El manejo de las regiones críticas.
  • La prevención de bloqueos.
  • La recuperación de fallas.
Se precisan técnicas de abstracción de mayor nivel que:
  • Oculten estos aspectos técnicos.
  • Permitan a los programadores concentrarse en los algoritmos y la forma en que los procesos trabajan juntos en paralelo.
Tal abstracción la llamaremos transacción atómica, transacción o acción atómica.
La principal propiedad de la transacción atómica es el “todo o nada”:
  • se hace todo lo que se tenía que hacer como una unidad o no se hace nada.
Ejemplo:
    • Un cliente llama al Banco mediante una PC con un módem para:
      • Retirar dinero de una cuenta.
      • Depositar el dinero en otra cuenta.
    • La operación tiene dos etapas.
    • Si la conexión telefónica falla luego de la primer etapa pero antes de la segunda:
      • Habrá un retiro pero no un depósito.
    • La solución consiste en agrupar las dos operaciones en una transacción atómica:
      • Las dos operaciones terminarían o no terminaría ninguna.
      • Se debe regresar al estado inicial si la transacción no puede concluir.

Protocolo de Techo de Prioridad Inmediata - Expocición


Definición de protocolo: 

En informática, un protocolo es un conjunto de reglas usadas por computadoras para comunicarse unas con otras a través de una red. Puede ser definido como las reglas que dominan la sintaxis, semántica y sincronización de la comunicación.

A su más bajo nivel, un protocolo define el comportamiento de una conexión de hardware.


Protocolo de techo de prioridad:


Este protocolo designa como techo de prioridad de un recurso a la máxima prioridad de las tareas que lo usan. El protocolo consiste en que la prioridad de una tarea sea dinámica y que su valor sea el máximo entre su prioridad básica y las prioridades de las tareas a las que bloquea. 

Entonces, una tarea solo puede usar un recurso si su prioridad dinámica es mayor que el techo de todos los recursos en uso por otras tareas. 

Características

  • Cada tarea tiene prioridad estática por defecto. 
  • Cada tarea tiene una prioridad dinámica. 

  • Cada recurso tiene un valor techo estático. 

  • Una tarea solo puede bloquear un recurso si su prioridad dinámica supera el techo de prioridad de todos los recursos ya bloqueados por otras tareas.