miércoles, 25 de agosto de 2010

SORT, POSIX Y STR

El SORT.

¿Qué es el SORT?

Las computadoras pierden gran cantidad de tiempo al ordenar las cosas y el SORT es el programa que más recursos consume de la computadora.

El SORT se puede definir como:

Un algortimo de ordenación ó Programa estándar para ordenar los registros de un fichero, una base de datos, etc.
Además de que es un programa para ordenar ficheros como anteriormente lo mencione, el SORT se encuentra en todo Sistema Operativo.

El Funcionamiento del SORT sigue el proceso que a continuación se presenta:


  • Toma uno o varios ficheros como entrada.

  • El fichero lo clasifica por las claves que se le indican (o por el contenido de registros sino se especifica nada) de forma ascendente o descendente.

  • Y además en algunos sistemas como MVS (Multiple Virtual Storage), el propio programa sirve para hacer tratamientos a los ficheros: unificar ficheros, dividirlo en varios, extraer registro... un programa muy completo y se usa bastante.
En la vida real se clasifican cosas continuamente, bien para ordenarlas de cara a su almacenamiento, bien para separarlos por tamaños, tipos u otra característica.

Pues igual cuando usamos una computadora, continuamente estamos clasificando cosas, o el Sistema Operativo lo hace por nosotros, incluso cuando no nos damos cuenta. Cada vez que en el explorador de ficheros de nuestro sistema Operativo damos click en las cabeceras para ver los ficheros ordenados por fecha, o por nombre, o lo que sea, el Sistema invoca internamente al SORT.

Además todas las Bases de Datos, para poder acceder a la información solicitada, requieren tener la información previamente ordenada.

Cada vez que se requiere recuperar información de una base de datos o un fichero, para por ejemplo, presentarla en pantalla, casi siempre se requiere clasificarla (seguramente mediante la conocida claúsula ORDER BY), por que los humanos siempre esperamos encontrar la información en cierto oreden.

Todo fichero que se envíe a un lugar debe estar ordenado. Los procesos Batch que toda empresa realiza (la liquidación de cuentas, la factiración, etc) suelen requerir clasificar una y otra vez los ficheros intermedios. Un sistema Operativo necesita para funiconar ordenar toda (que es bastante) la información.

En definitiva, para que los sistemas informáticos funcionen como es debido, se requiere que la información este clasificada siempre y ordeanr registros de un fichero o de una Base de Datos es un proceso no muy complicado de entender pero que consume una enorme cantidad de recursos de la máquina.



EL POSIX.

¿Qué es el POSIX?

También llamado interfaz portable del Sistema Operativo.

Es el nombre colectivo de una familia de relacionado estándares especificado por IEEE (Instituto de los Ingenieros Electrónicos Eléctricos) para definir interfaz de programación de uso (API), junto con las interfaces de la cáscara y de las utilidades para el software compatible con variantes del UNIX Sistema Operativo, aunque el estándar puede aplicarse a culaquier Sistema Operativo.

Descripción del POSIX:

Las especificaciones de POSIX para las interfaces del usuario y de software a Sistema Operativo se codifican en 17 documentos separados. El usuario estandardizado línea de comando e interfaz scripting fueron basados en cáscara de korn. Muchos programas servicios y utilidades user-level incluyendo awk, eco, ed también fueron estandardizados, junto con servicios requeridos del programa-nivel incluyen básico entrada-salida (Archivo, Terminal, Red) servicios. POSIX también define un estándar el roscar biblioteca API que es apoyada por la mayoría de los sistemas operativos modernos.

La documentación de POSIX se divide en 3 porciones:


  • Núcleo APIs de POSIX (que incluyen las extenciones para POSIX.1, los servicios en tiempo real, hilos de rosca interconectan, las extenciones en timepo real, interfaz de la seguridad, acceso del archivo de la red y las comunicaciones del proceso a proceso de la red).

  • Comandos y utilidades de POSIX (con extenciones de la portabilidad del usuario, correcciones y extenciones, utilidades de la protección y del control y utilidades del sistema de hornada).

  • Prueba de la conformidad de POSIX.



STR

¿Qué es un Sistema de Tiempo Real (STR)?


En la mayoría de los casos cuando una computadora interactúa con un proceso real (mundo físico) es necesario que las acciones de control se efectúen dentro de unos intervalos de tiempo bien definidos, con objeto de que el estado del sistema controlado, que tiene su dinámica propia, no evolucione hacia valores incorrectos o indeseables.

Para ello no basta que el funcionamiento del sistema de control sea correcto desde un punto de vista lógico, es decir, que el cálculo de las salidas del sistema a partir de sus entradas y de su estado interno sea correcto, sino que además debe ser correcto desde un punto de vista temporal. De nada sirve realizar la acción si se hace demasiado tarde o demasiado pronto. Por tanto, el tiempo en que se ejecutan las acciones del sistema es relevante; ésta característica difiere totalmente de lo que es habitual en otros tipos de sistemas informáticos y justifica la denominación de Sistemas de Tiempo Real (STR).

Una definición que presentan Alan Burns y Andy Wellings de STR es la siguiente: “Un sistema en Tiempo Real es cualquier sistema donde el tiempo en que se produce su salida es significante. Esto es debido a que generalmente la entrada corresponde a algún instante del mundo físico y la salida tiene relación con ese mismo instante. El retrazo transcurrido entre la entrada y la salida debe ser lo suficientemente pequeño para considerarse una respuesta puntual” [BW97].

Por otro lado, se tiende a confundir los sistemas rápidos con los STRs, ya que en general se tiene la idea de que si un sistema produce una salida cuasi inmediata al ser estimulado, se trata de un STR; pero un STR debe ser capaz de terminar sus tareas en un tiempo especificado (y no necesariamente rápido). De hecho la diferencia entre un STR y otro sistema cualquiera, es poco visible si no se tienen los conceptos claros como la definición anterior. Puede verse que en ésta definición nunca se utilizó la palabra “rápido” para definir STR. Un sistema rápido produce su salida sin considerar las restricciones de tiempo del ambiente con que interactúa, para esa clase de sistemas no es importante el tiempo en el cual los datos llegan al sistema o el tiempo al cual la salida es producida, únicamente interesa la rapidez de cómputo, ejemplo de este tipo de sistemas son las simulaciones o los compiladores [Lop00].

Sistemas de Tiempo Real Diferente de Sistema Rápido


. ¿Existen Sistemas de Tiempo Real en México?


En nuestro país hay instituciones muy importantes por los servicios que prestan, algunas de éstas son [Gue99]:



- Compañía de Luz y Fuerza del Centro (CLyFC).



Es el organismo que atiende el servicio de distribución y comercialización de energía eléctrica en la zona central del país. Para prestar este servicio es necesario contar con un sistema de supervisión en Tiempo Real a través del Centro de Operación y Control (COC), desde donde es posible monitorear las fallas remotas en las subestaciones de potencia de ésta institución.



- Comisión Federal de Electricidad (CFE).



La Comisión Federal de Electricidad es la encargada de la generación, transmisión, distribución y comercialización de energía eléctrica en México. Cuenta con una capacidad productiva aproximada de más de 31,600 MW. Para brindar un buen servicio se utiliza un sistema de monitoreo y control ubicado en el Centro Nacional de Control de la Energía (CENACE), donde se supervisa y controla en Tiempo Real gran parte del sistema de transmisión eléctrica nacional.



- Sistema de Transporte Colectivo “Metro” (STC).



El sistema de Transporte Colectivo Metro diariamente transporta mas de cuatro millones de pasajeros. Esto no es una tarea fácil, y para lograr un tránsito fluido, eficiente y sin demoras, es necesario un sistema de señalización de tráfico, que está instalado en el Puesto de Control Central (PCC), donde se realiza el monitoreo en Tiempo Real de los trenes en cada una de las líneas.





Figura 2. Los STR están presentes en el Metro, en CLyFC y CFE entre otros.



Pero, ¿qué tienen que ver los STR con las instituciones anteriores?. Estas instituciones cuentan con equipos computarizados que tienen dos aspectos en común: a) Tienen contacto con el mundo físico a través de sensores mediante los cuales se recogen datos del mundo físico y actuadores (ver figura 3) con los que se envía la información procesada para la manipulación de éste [But97]. Por ejemplo, las computadoras de CLyFC y CFE trabajan con subestaciones eléctricas, mientras que los sistemas del Metro trabajan con trenes. b) El mundo físico dicta restricciones de tiempo que deben ser cumplidas; en las subestaciones eléctricas se deben respetar los tiempos de disparo de los interruptores de potencia antes de que una falla destruya el sistema eléctrico o se quede sin energía una zona más amplia de la prevista. En el metro se supervisan los trayectos de los trenes de una estación a otra, de tal manera que todos ellos se sincronicen para evitar demoras o posibles accidentes.






Figura. Diagrama de bloques de un sistema de Tiempo Real genérico.



Conclusiones.

Los Sistemas de Tiempo Real son parte importante de nuestra vida diaria, gracias a ellos tenemos energía eléctrica, transportes, y muchos productos y servicios que nos hacen la vida más fácil. Los STR son imprescindibles en la sociedad, tanto que paradójicamente no nos damos cuenta de que están aquí presentes.

Muchas veces hablamos de SRT y sistemas rápidos en forma indiferente, e inclusive creemos que un sistema donde la salida se obtiene al instante respecto a la entrada es un STR, pensamos que cuanto más veloz es una computadora es mejor, sin importar el uso que se le dé Un STR es un sistema a la medida, mandado a hacer y no puede ser general, éste depende del mundo físico con el que va a interactuar y las restricciones que el mundo va a imponer.



Los STR son un área de estudio dentro de las ciencias de la computación, existen universidades y centros de investigación que destinan laboratorios exclusivos para su estudio alrededor del mundo, uno de ellos es el Laboratorio de Sistemas de Tiempo Real del Centro de Investigación en Computación donde colaboran los autores de este documento.


martes, 10 de agosto de 2010

Programación de Sistemas

Tema 1.Programación de Sistemas


Definición de Sistema: Es un conjunto o disposición de elementos que están organizados para cumplir una meta predefinida al procesar información.

Elementos del Sistema:

  • Software: Son programas de computadora, estructuras de datos y documentación que sirven para ser efectivo el método, procedimiento o control lógico que se requiere.

  • Hardware: Son los dispositivos electrónicos que proporcionan capacidad de cálculo, dispositivos de interconexión (conmutadores de red, dispositivos de telecomunicaciones) que permiten el flujo de datos, y dispositivos electromecánicos (como sensores, motores, bombas) que proporcionan una función externa, del mundo real.

  • Personas: son los usuarios y operadores del Hardware y Software.


Sistema de Aplicación: Automatización de Procesos.

Es el uso de sistemas o elementos computarizados para controlar procesos sustituyendo a operadores humanos.
Es la sustitución de procedimientos manuales por sistemas de cómputo.

Sistema Empotrado:

Con este sistema se implementan y controlan características y funciones para un usuario y para el sistema mismo, es decir, son sistemas con medios físicos donde programas la función o el proceso.

Sistema Científico: Son los sistemas de alto nivel, como una calculadora, la simulación de sistemas ( con programas como Matlab o Scilab) y otras y otras aplicaciones interactivas.