SISTEMAS OPERATIVOS EMBEBIDOS, CE Y TIEMPO REAL PRESENTADO A: CARLOS GOMEZ PRESENTADO POR: BRIGETH CEBALLOS 908514 BEATRIZ SERNA 908558 UNIVERSIDAD NACIONAL DE COLOMBIA SEDE MANIZALES SISTEMAS OPERATIVOS 23 DE OCTUBRE DEL 2012 0 INDICE INTRODUCCION………………………………………………………...........2 MARCO TEORICO………………………………………………………….....3 CUERPO………………………………………………………………………..4 Introducción……………………………………………………………...4 Historia y evolución...……………………………………………………5 Presentación………………………………………………………………16 Estructura y Componentes del sistema………………………………...17 Plataformas sobre las que trabaja………………………………………18 Proceso de instalación…………………………………………………...23 Gestión de procesos y del procesador……………………………….....25 Gestión de memoria……………………………………………………….27 Gestión de memoria auxiliar……………………………………………...28 Gestión de entrada y salida……………………………………………....31 Gestión de comunicaciones y seguridad……………………………….31 Soporte a tiempo real……………………………………………………..34 Soporte para la nube e integración a ella (cloud computing)……….35 Análisis comparativo con Linux y Windows XP………………………...38 Estadísticas de utilización a nivel mundial……………………………...39 Otros aspectos……………………………………………………….........43 RESUMEN………………………………………………………………………..45 CONCLUSIONES………………………………………………………………..50 OBSERVACIONES……………………………………………………………....51 BIBLIOGRAFIA…………………………………………………………………...52 1 INTRODUCCION Un sistema operativo embebido es aquel que está integrado en los circuitos de los dispositivos electrónicos, entre estos dispositivos encontramos electrodomésticos, teléfonos móviles, radios, televisores, automóviles, lectores de códigos de barras, equipos médicos, asistentes digitales personales (PDA), etc. Estos sistemas suelen tener algunas características de los sistemas de tiempo real los cuales han sido desarrollados con el fin de con el fin de garantizar el cumplimiento de forma adecuada de las tareas teniendo en cuenta las restricciones de tiempo lo que hace necesario que el sistema sea determinista; pero los sistema operativo embebido tienen limitaciones de tamaño, memoria y consumo de electricidad que los hace especiales; y no suelen ser visibles. Windows CE es otro ejemplo de sistema operativo embebido el cual es un integrante de la familia Windows que tiene un objetivo especial, proveer un moderno sistema operativo de plataforma cruzada, multihilado y de tamaño pequeño. Cuando se habla de tamaño, se refiere a la cantidad de memoria y de almacenamiento necesario para albergar al sistema. Ha sido notable la importancia y el aumento de la utilidad de los sistemas operativos embebidos, pues hoy en día estamos rodeados de todo tipo de aparatos electrónicos y este tipo de sistema operativo es el más común en muchos de ellos puesto que están limitados a un número fijo y escaso de tareas. El objetivo de esta compilación bibliográfica es el poder definir distintas etapas y componentes que integran los sistemas operativos embebidos y que le han permitido lograr un mejor rendimiento de todos los componentes electrónicos en el cumplimiento de sus funciones. Se comprende la historia, evolución y visión general de los sistemas operativos embebidos, ce y de tiempo real, conceptos del funcionamiento interno, gestión de procesos, de memoria, comunicación y seguridad, también se presentan estadísticas para medir las tendencias de uso de estos en el mercado actual. Conocer el funcionamiento y los detalles de este tipo de sistemas es importante para tener una visión como desarrollador que finalmente es uno de los objetivos de la carrera de Administración de Sistemas Informáticos reconociendo que 2 cualquier desarrollo va a necesitar estar sobre un sistema operativo particular de acuerdo a las actividades que realice el mismo. MARCO TEORICO Como parte de la investigación a realizar sobre los sistemas operativos embebidos es necesario tener una base de conocimiento que responda a incógnitas singulares como lo son: ¿Qué son sistemas operativos embebidos?, ¿Qué características presentan?, ¿Cómo se comportan? y otros interrogantes; cuyas respuestas las mostraremos a continuación. Un sistema operativo embebido es aquel que ha sido creado para un sistema embebido, es decir, un sistema de computación limitado a un número fijo y escaso de tareas. Aquí no entran, evidentemente, los ordenadores personales ni los móviles, tabletas o dispositivos avanzados que conocemos. Una peculiaridad de los sistemas embebidos es que son un todo con las aplicaciones que ejecutan, lo que quiere decir que en muchos casos no es posible instalar en ellos ningún tipo de software adicional. Un uso muy común de los sistemas embebidos es en los sistemas de tiempo real, entendiéndose por sistemas en tiempo real a aquellos sistemas en los que el control del tiempo es vital para el correcto funcionamiento. Los sistemas en tiempo real necesitan realizar ciertas operaciones o cálculos en un límite de tiempo. Donde ese límite de tiempo resulta crucial. Algunas de las características de estos sistemas es que son dependientes. Dentro del concepto de dependencia surgen otros como confiabilidad, mantenimiento, seguridad y disposición. Estos aplican para sistemas embebidos que funcionan en fábricas o plantas industriales que corren durante todo el día. También, los sistemas embebidos tienen que ser eficientes, tanto en el consumo de energía como el código que ocupan para funcionar, esto se debe a la limitada capacidad de memoria de almacenamiento que poseen. 3 INTRODUCCION En la cotidianidad nos encontramos con miles de herramientas como el microondas, el auto, el ascensor, el equipo de audio, el avión los cuales son controlados por computadoras que normalmente no poseen una pantalla, un teclado o disco rígido, y no responden a lo que comúnmente denominamos PC. Pero realmente nunca nos detenemos para preguntarnos como logra desarrollar todas sus funciones, la pregunta que podría surgir ¿es que acaso son inteligentes?, pues no es así simplemente son sistemas de computación limitado a un número fijo y escaso de tareas. Descartando, evidentemente, los ordenadores personales ni los móviles, tablets o dispositivos avanzados que conocemos; que tienen integrado un sistema operativo embebido y de tiempo real que les permite desarrollar las actividades repetitivas y sencillas, para las que fueron diseñados estos electrodomésticos. Una particularidad de los sistemas embebidos es que son un todo con las aplicaciones que ejecutan, lo que quiere decir que en muchos casos no es posible instalar en ellos ningún tipo de software adicional. Windows CE es otro ejemplo de sistema operativo embebido el cual es un integrante de la familia Windows que tiene un objetivo especial, proveer un moderno sistema operativo de plataforma cruzada, multihilado y de tamaño pequeño. Cuando se habla de tamaño, se refiere a la cantidad de memoria y de almacenamiento necesario para albergar al sistema. 4 HISTORIA SISTEMAS OPERATIVOS EMBEBIDOS Y TIEMPO REAL A finales de los 40's el uso de computadoras estaba restringido a aquellas empresas o instituciones que podían pagar su alto precio, y no existían los sistemas operativos. En su lugar, el programador debía tener un conocimiento y contacto profundo con el hardware, y en el infortunado caso de que su programa fallara, debía examinar los valores de los registros y paneles de luces indicadoras del estado de la computadora para determinar la causa del fallo y poder corregir su programa, además de enfrentarse nuevamente a los procedimientos de apartar tiempo del sistema y poner a punto los compiladores, ligadores, etc; para volver a correr su programa, es decir, enfrentaba el problema del procesamiento serial (serial processing). La importancia de los sistemas operativos nace históricamente desde los 50's, cuando se hizo evidente que el operar una computadora por medio de tableros enchufables en la primera generación y luego por medio del trabajo en lote en la segunda generación se podía mejorar notoriamente, pues el operador realizaba siempre una secuencia de pasos repetitivos, lo cual es una de las características contempladas en la definición de lo que es un programa. Es decir, se comenzó a ver que las tareas mismas del operador podían plasmarse en un programa, el cual a través del tiempo y por su enorme complejidad se le llamó "Sistema Operativo". Así, tenemos entre los primeros sistemas operativos al Fortran Monitor System (FMS) e IBSYS. Posteriormente, en la tercera generación de computadoras nace uno de los primeros sistemas operativos con la filosofía de administrar una familia de computadoras: el OS/360 de IBM. Fue este un proyecto tan novedoso y ambicioso que enfrentó por primera vez una serie de problemas conflictivos debido a que anteriormente las computadoras eran creadas para dos propósitos en general: el comercial y el científico. Así, al tratar de crear un solo sistema operativo para computadoras que podían dedicarse a un propósito, al otro o ambos, puso en evidencia la problemática del trabajo en equipos de análisis, diseño e implantación de sistemas grandes. El resultado fue un sistema del cual uno de sus mismos diseñadores patentizó su opinión en la portada de un libro: una horda de bestias prehistóricas atascadas en un foso de brea. Surge también en la tercera generación de computadoras el concepto de la multiprogramación, porque debido al alto costo de las computadoras era necesario idear un esquema de trabajo que mantuviese a la unidad central de procesamiento más tiempo ocupada, así como el encolado (spooling) de trabajos para su lectura hacia los lugares libres de memoria o la escritura de resultados. Sin embargo, se 5 puede afirmar que los sistemas durante la tercera generación siguieron siendo básicamente sistemas de lote. En la cuarta generación la electrónica avanza hacia la integración a gran escala, pudiendo crear circuitos con miles de transistores en un centímetro cuadrado de silicón y ya es posible hablar de las computadoras personales y las estaciones de trabajo. Surgen los conceptos de interfaces amigables intentando así atraer al público en general al uso de las computadoras como herramientas cotidianas. Se hacen populares el MS-DOS y UNIX en estas máquinas. También es común encontrar clones de computadoras personales y una multitud de empresas pequeñas ensamblándolas por todo el mundo. Para mediados de los 80's, comienza el auge de las redes de computadoras y la necesidad de sistemas operativos en red y sistemas operativos distribuidos. La red mundial Internet se va haciendo accesible a toda clase de instituciones y se comienzan a dar muchas soluciones (y problemas) al querer hacer convivir recursos residentes en computadoras con sistemas operativos diferentes. Para los 90's el paradigma de la programación orientada a objetos cobra auge, así como el manejo de objetos desde los sistemas operativos. Las aplicaciones intentan crearse para ser ejecutadas en una plataforma específica y poder ver sus resultados en la pantalla o monitor de otra diferente (por ejemplo, ejecutar una simulación en una máquina con UNIX y ver los resultados en otra con DOS). Los niveles de interacción se van haciendo cada vez más profundos. En los últimos 10 años el mundo de las comunicaciones ha cambiado drásticamente. A partir del año 1993 con el surgimiento de la WWW, una buena parte de la población del mundo tuvo acceso a una red de datos global que durante mucho tiempo fue de uso exclusivo de la comunidad académica universitaria y del departamento de defensa de los Estados Unidos de América. Este acercamiento masivo hacia esta red de redes conocida como Internet, trajo consigo muchas ventajas, la más importante de estas es sin duda la posibilidad de achicar las distancias. La World Wide Web, permitió a los usuarios de la red acceder de manera simple a una gran cantidad de información e incluso de una manera sencilla colocar la propia información al alcance de todos los demás usuarios. El navegado se volvió una herramienta de uso cotidiano en el hogar. Con el tiempo Internet permitió realizar tareas que hace 10 años demandarían días u horas en unos pocos minutos y dio origen a nuevas ideas. La posibilidad de actuar a distancia usando a Internet como medio para poder realizar operaciones de control o mantenimiento también empezó a cobrar vigencia. Y es sobre esto lo que versa una parte importante de este trabajo, que toma como punto de partida la posibilidad y el alcance de usar a Internet como un medio de fácil acceso para permitir el control y el mantenimiento de dispositivos electrónicos. Por ejemplo usando un simple navegador se puede tener un panorama completo y en tiempo 6 real del estado de una planta industrial, una finca o el sistema de seguridad de una vivienda, y esto puede ser controlado desde cualquier parte del mundo que tenga una conexión a Internet disponible. Los Sistemas Operativos Embebidos y de Tiempo Real surgen a finales de 70’s y 80’s. Los sistemas embebidos se encuentran disponibles a cada momento de nuestra vida. El horno microondas, el auto, el ascensor, el equipo de audio, el avión son controlados por computadoras que normalmente no poseen una pantalla, un teclado o disco rígido, y no responden a lo que comúnmente denominamos PC. EVOLUCIÓN SISTEMAS OPERATIVOS EMBEBIDOS Y TIEMPO REAL 1981: QMX primer SO de microkernel para PCs, soportado por la PC de IBM. 1982: QMX primer SO para PCs que soportó un disco rígido (5MB Davong). 1983: QMX primer SO para PCs que corre en una 80286 en modo protegido. 1984: QMX uno de los primeros en ofrecer procesamiento distribuido transparente para PCs. 1985: QMX primer SO de tiempo real que corrió en la primera 80386 de Compaq. 1990: QMX primer microkernel de SO de tiempo real certificado por POSIX. 1992: QMX primer SO de tiempo real para trabajar en red con tolerancia a fallos (FLEETTM). 1993: El primer relase de NetBSD (la versión 0.8) vio el mundo el 20 de Abril de 1993. 1994: QMX primer sistema de microkernel con ventanas embebible (el Photon microGUI). 1995: Nació OpenBSD a raíz de la expulsión de Theo de Raadt del grupo de desarrollo de NetBSD. 1996: QMX primer microkernel basado en POSIX para sistemas profundamente embebidos (QNX/Neutrino). 1996: Windows CE 1.0: lanzado comercialmente en este año y su código fuente fue escrito desde 7 cero, Parcialmente compatible con el Windows tradicional pues soporta una parte de la famosa API Win32. Independiente del hardware pues es compatible con las arquitecturas más comunes de 32 bits. 1997: QMX primer buscador de escritorio para la web de sistemas embebidos (Voyager TM). 1997: Windows CE 2.0 Basado en la versión predecesora 1.0 vio la luz en 1997. Se añadió soporte para procesadores Intel y AMD Soporta pantallas con resolución de 24 bits, conexión de red LAN Soporte de tecnología ActiveX Incorpora la máquina virtual java. Soporte parcial MFC (Microsoft Foundatin Classes, una librería de clases en C++ para programación bajo Windows, incluida en MS. Visual C++) Conectividad USB e infrarrojos. Soporte FAT e impresión. 1998: primero en ajustar un OS, GUI, browser, servidor, marcador, TCP/IP, y más dentro de un disco de 1.44M (1.44M Disco de Demostración) 2000: Primero en ofrecer un host y plataforma gráfica para los diseñadores de OS embebidos 2000: WindowsCE 3.0, esta versión salió al mercado en este año con el fin de competir con el sistema operativo de PALM, incorporación de las interrupciones con prioridades, mayor eficiencia en la gestión de threats y en las comunicaciones entre procesos, mayor capacidad de almacenamiento, es la base del sistema operativo PocketPC 2002, que se podía encontrar entonces en algunas PDA y teléfonos. 2002: Windows CE 4.0: Sistema operativo mucho más robusto y eficiente a nivel multiproceso que la anterior versión. Mayor grado de comunicación y sincronización con el sistema Windows tradicional. De él nació en Junio del 2003 la conocida versión Windows Mobile 2003. Prácticamente fue un cambio de nombre y unas aplicaciones añadidas. 2003: Se lanza Microsoft Windows CE .Net 4.0 2004: Microsoft publica a Windows CE .Net 4.2 a principios de año. Se lanza Windows XP Embedded. 2005: Windows CE 5.0: Penúltima versión de este sistema operativo lanzado en Mayo. Mejora del software ofimático y multimedia. Mejoras en el stack bluetooth. De él nació la versión Windows Mobile 5.0 disponible en multitud de teléfonos móviles y PDAs. 2007: Windows CE 6.0: Última versión de este sistema operativo lanzado a principios del año. Un 30% superior en prestaciones a su predecesor Windows CE 5.0. Es posible acceder mediante API a un I/O en un ciclo de 100us. Los mayores cambios se encuentran en el Kernel. La arquitectura 8 del sistema operativo ha sido completamente revisada. Cada proceso es capaz de direccionar 2GB (antes 32Mb). El nº de procesos simultáneos ha aumentado de 32 a 32.000. HISTORIA DE WINDOWS CE EMBEBIDO El sistema operativo ce se creó a partir de los sistemas operativos ya existentes de la familia Microsoft como Windows 9x, Windows NT, que sistemas ya creados los cuales se dedicaban a la compatibilidad con las aplicaciones con los Hardware existentes en cual pretendida integrar multitareas. Ya que lo Windows NT quería era convertirse en el sistema operativo predilecto de las empresas. Sin embargo Windows CE pretendía es: proveer un moderno sistema operativo de plataforma cruzada, multihilado y de tamaño pequeño. Esta última característica es la principal diferencia con Windows 95 y Windows NT. Cuando se habla de tamaño, se refiere a la cantidad de memoria y de almacenamiento necesario para albergar al sistema operativo. En un principio cuando se desarrollaba Windows CE se le dio el nombre de pegasus conjuntamente se estaba desarrollando un nuevo dispositivo el cual tendría como sistema operativo el Windows CE, a este dispositivo se le llamo Handheld PC (HPC) o PC de bolsillo. Esta fue una de las primeras plataformas en aceptar el uso de Windows CE Otro dispositivo conocido es: la Palm-size PC o "PC del porte de la palma" que es más pequeño que el anterior que no tiene teclado sino que se tiene un reconocimiento de un sistema de tacto y un panel de entrada que aparece en la pantalla. Estos dispositivos cuentan con baterías para obtener poder y duran 20 horas con mucho uso o con poco uso pueden durar una semana, como una regla general se dice que los dispositivos que usan Windows CE tienen baterías con vida más corta. A diferencia de los Windows 9x o NT el sistema operativo Windows CE no necesita ser reiniciado cada vez que el usuario desee utilizarlo, de hecho se pueden configurar las máquinas para que cuando el usuario le haga una entrada al sistema el dispositivo se active. Estos dispositivos solo venían en una pequeña tarjeta que se inserta en un HPC o en un Palm-size PC. 9 Tomaremos como ejemplo HPC para mirar cual es el hardware que necesita el cual nos permitirá conocer cómo funciona este sistema operativo. Este dispositivo el cual se le implemento el Windows CE fue uno de los primeros, las tendencias y las tecnologías han cambiado Un PC de Bolsillo o HPC casi siempre se compone de una pantalla de 480x240 o 640x240 en escala de gris, acompañada de un pequeño teclado. En vez de mouse, el dispositivo tiene un panel de contacto que cubre la pantalla. Todo HPC incluye un puerto serial y un puerto infrarrojo de 115 Kbps. Los sistemas tienen un slot PCMCIA o un slot de mini tarjeta. La configuración de la memoria física es muy interesante en un HPC. Un PC de bolsillo típico tiene 4 MB ó 8 MB de memoria ROM y 2 MB ó 4 MB de RAM. La memoria ROM contiene al sistema operativo y a la suite de aplicaciones de bolsillo que se venden con Windows CE (Word y Excel), a los que se les ha bautizado como Pocket Word y Pocket Excel (Word de Bolsillo y Excel de Bolsillo). Sin embargo, y debido a la naturaleza de la memoria ROM las aplicaciones no pueden sólo ejecutarse en ROM, las aplicaciones no sólo leen de memoria, sino que también escriben. Por lo tanto se puede concluir que en la memoria ROM residen las instrucciones y valores de sólo lectura mientras que algo de RAM debe utilizarse para los valores que las aplicaciones deseen escribir en algún momento. La memoria RAM necesaria para el sistema operativo mismo es de cerca de 500 KB, y las aplicaciones en realidad no ocupan mucho. Por ejemplo una instancia de Pocket Word utiliza solamente 16 K de RAM cuando se carga. La memoria RAM se divide en dos partes, una para la RAM del sistema utilizada por el sistema operativo y las aplicaciones, y la otra parte, denominada almacén de objeto, para el almacenamiento de datos. Los archivos que se guardan en el almacén de objeto, no son guardados tal cual son, sino que son comprimidos en un radio 2:1. Los HPCs no tiene unidades de disco flexibles, ni discos duros, sin embargo se soporta SRAM y Tarjetas de PC Flash ATRA en dispositivos con slots PC Card. Rompiendo con la tradición, los HPC actualmente no utilizan procesadores Intel o compatibles con Intel. En cambio, los HPC actualmente soportan el uso de procesadores RISC: El Hitachi SH3, el NEC VR4101 y el Phillips 3910 (los dos últimos compatibles con el procesador MIPS). Debido a que los procesadores NEC y Phillips utilizan un subconjunto común de las instrucciones MIPS, se puede decir que desde el punto de vista software, solamente se soportan dos CPUs: MIPS y SH3. Windows CE 1.00 y 1.01 fueron el primer paso en la creación de un sistema operativo Windows cuyo objetivo no era un PC. Si bien, mucha gente piensa que CE significa "Compact Edition", la verdad es que ese nombre puede engañar al programador y al usuario, porque al decir Edición Compacta suena a "subconjunto de Windows", y en realidad Windows CE fue escrito desde cero, a diferencia por 10 ejemplo de Windows 95 que fue escrito basado en Windows 3.x. Como se ha dicho, la primera versión de Windows CE se embarcó con los HPC. Windows CE Windows CE fue el primer paso en la creación de un sistema operativo cuyo objetivo no era un PC. Mucha personas piensan que CE significa “Compact Edition”, la verdad este nombre puede engañar al programador y al usuario, porque al decir edición compacta suena como una parte pequeña de Windows, pero en realidad Windows CE fue escrito desde cero, a diferencia por ejemplo de Windows 95 que fue escrito basado en Windows 3.x. como se dijo anteriormente la primera versión de Windows CE se embarcó con los HPC. EVOLUCION DE WINDOWS CE La evolución de Windows CE el cual se inició muy básicamente fue incrementando a medida que los usuarios fueron necesitando muchas más aplicaciones en sus dispositivos. Conoceremos un poco de la evolución de Windows CE (versiones) Windows CE 1.0. Código fuente fue escrito desde cero y fue lanzado comercialmente en el año 1996. Parcialmente compatible con el Windows tradicional pues soporta una parte de la famosa API Win32. Independiente del hardware pues es compatible con las arquitecturas más comunes de de 32 bits. Windows CE 2.0 Basado en la versión predecesora 1.0 vió la luz en 1997. Se añadió soporte para procesadores Intel y AMD Soporta pantallas con resolución de 24 bits Conexión de red LAN Soporte de tecnología ActiveX Incorpora la máquina virtual java. Soporte parcial MFC (Microsoft Foundatin Classes, una librería de clases en C++ para programación bajo Windows, incluida en MS. Visual C++) Conectividad USB e infrarrojos Soporte FAT e impresión Windows CE 3.0 Esta versión salió al mercado en el año 2000 con el fin de competir con el sistema operativo de PALM. Incorporación de las interrupciones con prioridades. Mayor eficiencia en la gestión de threats y en las comunicaciones entre procesos Mayor capacidad de almacenamiento. Es la base del sistema operativo PocketPC 2002, que se podía encontrar entonces en algunas PDA y teléfonos. 11 Windows CE 4.0 Esta nueva versión del sistema operativo apareció en Marzo del año 2002 Sistema operativo mucho más robusto y eficiente a nivel multiproceso que la anterior versión. Mayor grado de comunicación y sincronización con el sistema Windows tradicional. De el nació en Junio del 2003 la conocida versión Windows Mobile 2003. Prácticamente fue un cambio de nombre y unas aplicaciones añadidas. Windows CE 5.0 Penúltima versión de este sistema operativo lanzado en Mayo del año 2005. Mejora del software ofimático y multimedia. Mejoras en el stack bluetooth De él nació la versión Windows Mobile 5.0 disponible en multitud de teléfonos móviles y PDAs. Windows CE 6.0 Última versión de este sistema operativo lanzado a principios de este año. Un 30% superior en prestaciones a su predecesor Windows CE 5.0 Es posible acceder mediante API a un I/O en un ciclo de 100us Los mayores cambios se encuentran en el Kernel. La arquitectura del sistema operativo ha sido completamente revisada. Cada proceso es capaz de direccionar 2GB (antes 32Mb) El nº de procesos simultáneos han aumentado de 32 a 32.000 ARQUITECTURA DE WINDOWS CE CARACTERÍSTICAS GENERALES SISTEMAS OPERATIVOS EMBEBIDOS Los sistemas embebidos y los de tiempo real son tecnologías inmersas en el diario vivir y generalmente no se identifican fáciles y tampoco se definen los sistemas operativos que hacen posible su manipulación y que a la vez administran los recursos de dichos dispositivos para maximizar el desempeño. Un sistema operativo embebido es aquel que está integrado en los circuitos de los dispositivos electrónicos, entre estos dispositivos se encuentra electrodomésticos, teléfonos móviles, radios, televisores, automóviles, lectores de códigos de barras, equipos médicos, asistentes digitales personales (PDA), etc. 12 Estos sistemas suelen tener algunas características de los sistemas de tiempo real pero también tienen limitaciones de tamaño, memoria y consumo de electricidad que los hace especiales y no suelen ser visibles. Algunas características son: Fiabilidad y seguridad: Un fallo en un sistema de control puede hacer que el sistema controlado se comporte de forma peligrosa o antieconómica. Es importante asegurar que si el sistema de control falla lo haga de forma que el sistema controlado quede en un estado seguro, hay que tener en cuenta los posibles fallos o excepciones en el diseño Eficiencia: Gran parte de los sistemas de control deben responder con gran rapidez a los cambios en el sistema controlado Interacción con dispositivos físicos: Los sistemas empotrados interaccionan con su entorno mediante diversos tipos de dispositivos que normalmente no son convencionales (teclados, impresoras): convertidores A/D y D/A, pwm, entradas y salidas digitales paralelo y serie, (interfases con sensores, actuadores, periféricos especiales). Los componentes del software que controlan el funcionamiento de estos dispositivos son, en general, dependientes del sistema concreto. Robustez: Embarcados en sistemas con movimiento o que pueden ser transportados, sujetos a vibraciones e incluso impactos (coches, robots, instrumentación portátil). No siempre trabajan en condiciones óptimas de temperatura, humedad, y limpieza. Entre las plataformas de los sistemas operativos embebidos tenemos: QNX es un sistema operativo embebido desarrollado por QNX Software Systems Ltd, para aplicaciones de dispositivos electrónicos, telecomunicaciones, sistemas automotrices, etc.; que necesitan una gran confiabilidad, desempeño, funcionalidades específicas, y una escalabilidad masiva. Linux embebido es un sistema Linux típico del cual se han removido programas de utilidad, herramientas, y otros servicios del sistema que no son necesarios en un ambiente embebido. Linux para los dispositivos embebidos comenzó con el soporte del kernel y el compilador para los microprocesadores más populares de 32 bits: x86, ARM, PowerPC, MIPS y SH. Y luego continuó con la aparición de 13 diferentes distribuciones de Linux con soporte para características específicas de los sistemas embebidos. Windows XP para sistemas embebidos. Aunque Microsoft ha mantenido a los fabricantes de sistemas operativos alternativos a Windows contra la pared en lo que se refiere a equipos de sobremesa, su posición en la batalla por la supremacía en el terreno de los sistemas operativos para dispositivos que no fueran PC era vulnerable. De ahí que Microsoft da un paso más en este sector, lanzando la versión para dispositivos embebidos en la Conferencia para desarrolladores de este tipo de sistemas que se celebra en Las Vegas. Esta decisión parece ir en consonancia con las predicciones que apuntan a una progresiva inclusión de microprocesadores en casi cualquier tipo de aparatos (frigoríficos, coches, etc). DOS está estrechamente ligado al progresivo desarrollo de los microprocesadores de arquitectura x86 de Intel. Y es que es un sistema operativo que hay que conocer porque sigue estando en vigor gracias a su estabilidad ya que se desarrollaba en paralelo con la tecnología de Intel e IBM y porque es un sistema operativo muy simple, monousuario y monotarea. En otras palabras, DOS sólo ejecuta un programa cada vez Java para sistemas embebidos. La tecnología Java es cada vez más utilizada en sistemas embebidos avanzados, debido a sus capacidades inherentes de soporte de red, optimización de dispositivos y procesado de datos. La mayoría de las características de la plataforma Java SE pueden ser ahora empleadas para el desarrollo embebido, gracias a la capacidad cada vez mayor del nuevo hardware disponible en el mercado. SISTEMAS OPERATIVOS CE Windows CE fue introducido en un conjunto de productos de PC de mano en el año 1996, pero posteriormente se transformo en un sistema operativo embebido altamente configurable. Entre sus ventajas se encuentran que incluye un subconjunto del API Win32 enfocado a los servicios que comúnmente se necesitan, así como una optimización en el consumo de energía. En este sistema cuando se habla de tamaño, se refiere a la cantidad de memoria y de almacenamiento necesario para albergar al sistema. 14 Mientras se desarrollaba Windows CE se le dio el nombre de Pegasus y junto a él se estaba diseñando un nuevo dispositivo que lo tendría más tarde como sistema operativo. A este dispositivo se le llamó Handheld PC (HPC) o PC de bolsillo. CE, adicionando un conjunto completo de herramientas de desarrollo para la construcción de productos de diseño sofisticados, con aplicaciones poderosas para rodar en el hardware más actual. Es un sistema operacional vigoroso, en tiempo real, para el desarrollo ágil de dispositivos de última generación conectados, inteligente y compacto. Éste incluye el software necesario para crear dispositivos basados en el Windows Características •Windows CE da un soporte bastante completo a las características más avanzadas que encontramos en computadores empotrados, tanto de los procesadores como de otros elementos hardware. •Es muy modular •La API de Windows CE está pensada para facilitar la portabilidad con los sistemas operativos Windows para SSPG. Plataforma Windows CE soporta más de 160 modelos de procesadores, pertenecientes a 5 tipos de arquitecturas distintas: ARM, MIPS, PowerPC, SH y x86 (modo protegido). Son procesadores con una serie de características esenciales para este SO: La cantidad de memoria necesaria para almacenar el sistema operativo depende de los módulos y funciones que necesite la plataforma. La versión mínima del SO, que incluye el kernel y sistema de ficheros (servicios que veremos en la siguiente sección), ocupa unos 200 KB si se compila para un x86 en versión Release (400 KB en versión Debug). Una configuración con el máximo número de módulos puede llegar casi a los 30 MB en una compilación en modo debug para procesadores de la familia MIPS. 15 SISTEMAS OPERATIVOS TIEMPO REAL Un proceso o tarea de tiempo real es el que se ejecuta en conexión con algún proceso, función o conjunto de sucesos externos al sistema informático y que debe cumplir uno o más plazos para interactuar en forma correcta y eficiente con el entorno exterior. Características •Pequeño tamaño (con una mínima funcionalidad asociada) • Cambios de contexto rápidos • Capacidad para responder rápidamente a interrupciones externas • Multitarea con herramientas de comunicación entre procesos, como semáforos y señales • Uso de archivos secuenciales para almacenar datos a alta velocidad • Planificación expropiativa basada en prioridades • Reducción de los intervalos en los que están deshabilitadas las interrupciones • Alarmas especiales y temporizadores PRESENTACIÓN SISTEMAS OPERATIVOS EMBEBIDOS Se entiende por sistemas embebidos a una combinación de hardware y software de computadora, sumado tal vez a algunas piezas mecánicas o de otro tipo, diseñado para tener una función específica. Es común el uso de estos dispositivos pero pocos se dan cuenta que hay un procesador y un programa ejecutándose que les permite funcionar. Esto ofrece un contraste con la computadora personal, que si bien también está formada por una combinación de hardware y software más algunas piezas mecánicas (discos rígidos, por ejemplo). Sin embargo la computadora personal no es diseñada para un uso específico. Si no que es posible darle muchos usos diferentes. Muchas veces un sistema embebido es un componente de un sistema mucho más grande, como por ejemplo los sistemas de frenos o el sistema de inyección de combustible, en automóviles actuales son sistemas embebidos. Esta combinación de software y hardware puede ser reemplazada en muchos casos por un circuito integrado que realice la misma tarea. Pero una de las ventajas de los sistemas embebidos es su flexibilidad. Ya que a la hora de realizar alguna modificación resulta mucho más sencillo modificar una línea de código al software del sistema embebido que reemplazar todo el circuito integrado. 16 Un uso muy común de los sistemas embebidos es en los sistemas de tiempo real, entendiéndose por sistemas en tiempo real a aquellos sistemas en los que el control del tiempo es vital para el correcto funcionamiento. Los sistemas en tiempo real necesitan realizar ciertas operaciones o cálculos en un límite de tiempo. Donde ese límite de tiempo resulta crucial. Un ejemplo claro de un sistema de tiempo real es el control de tráfico aéreo. ESTRUCTURA DE UN SISTEMA EMBEBIDO Las principales características de un sistema embebido son el bajo costo y consumo de potencia. Dado que muchos sistemas embebidos son concebidos para ser producidos en miles o millones de unidades, el costo por unidad es un aspecto importante a tener en cuenta en la etapa de diseño. Generalmente, los sistemas embebidos emplean procesadores muy básicos, relativamente lentos y memorias pequeñas para minimizar los costos. En estos sistemas la velocidad no solo está dada por la velocidad del reloj del procesador, sino que el total la arquitectura se simplifica con el fin de reducir costos. Normalmente, un sistema embebido emplea periféricos controlados por interfaces seriales sincrónicas, las cuales son muchas veces más lentas que los periféricos empleados en un PC. Los sistemas embebidos deberán reaccionar a estímulos provenientes del ambiente, respondiendo con fuertes restricciones de tiempo en muchos casos, por lo tanto, un sistema se dice que trabaja en tiempo real si la información después de la adquisición y tratamiento es todavía vigente. Es decir, que en el caso de una información que llega de forma periódica, los tiempos de adquisición y tratamiento deben ser inferiores al período de actualización de dicha información. Un sistema embebido puede o no ser de tiempo de real dependiendo de los requerimientos específicos de la aplicación que se quiere implementar. Los programas en estos sistemas se ejecutan minimizando los tiempos muertos y enfrentando fuertes limitaciones de hardware, ya que usualmente no tienen discos duros, ni teclados o monitores, una memoria flash reemplaza los discos y algunos botones y una pantalla LCD normalmente reemplazan los dispositivos de interfaz. El software que controla un dispositivo de hardware, por ejemplo en una memoria ROM, Flash o un circuito integrado se conoce como Firmware. Típicamente la programación en estos dispositivos se realiza en lenguaje ensamblador o en 17 lenguaje C, actualmente se han desarrollado algunas máquinas virtuales y otros compiladores que permiten el diseño de programas más complejos. COMPONENTES DE UN SISTEMA EMBEBIDO Un sistema embebido en principio estaría formando por un microprocesador y un software que se ejecute sobre este. Sin embargo este software necesitara sin duda un lugar donde poder guardarse para luego ser ejecutado por el procesador. Esto podría tomar la forma de memoria RAM o ROM, todo sistema embebido necesitara en alguna medida una cierta cantidad de memoria, la cual puede incluso encontrarse dentro del mismo chip del procesador. Además de esto normalmente un sistema embebido contara con una serie de salidas y entradas necesarias para comunicarse con el mundo exterior. Debido a que las tareas realizadas por sistemas embebidos son de relativa sencillez, los procesadores comúnmente usados cuentan con registros de 8 o 16 bits. En su memoria solo reside el programa destinado a gobernar una aplicación determinada. Sus líneas de entrada/salida soportan el conexionado de los sensores y actuadores del dispositivo a controlar y todos los recursos complementarios disponibles tienen como única finalidad atender a sus requerimientos. Estas son las únicas características que tienen en común los sistemas embebidos, todo lo demás será totalmente diferente para cada sistema embebido en particular debido a la inmensa diversidad de aplicaciones disponibles. PLATAFORMAS SOBRE LAS QUE TRABAJAN LOS SISTEMAS OPERATIVOS EMBEBIDOS Linux en sistemas embebidos Linux está presente en muchas partes. Quizá aún nohaya ganado la batalla en los ordenadores personales, pero definitivamente es el númer uno en el área de los sistemas embebidos. Sin saberlo, nos rodean miles de dispositivos que funcionan con Linux Al contrario de lo que pueda parecer, Embedded Linux no es una versión reducida de Linux. El calificativo «embebido » realmente hace referencia a la funcionalidad de la aplicación, no a la funcionalidad de Linux.La fiabilidad de Linux es consecuencia directa de esta filosofía que lleva implícita la aportación altruista de miles de programadores de todo el mundo observando el código, 18 mejorándolo, cambiándolo y probándolo en miles de configuraciones posibles del sistema. Linux para los dispositivos embebidos comenzó con el soporte del kernel y el compilador para los microprocesadores más populares de 32 bits: x86, ARM, PowerPC, MIPS y SH. Y luego continuó con la aparición de diferentes distribuciones de Linux con soporte para características específicas de los sistemas embebidos. Gracias a la disponibilidad del código fuente, a la ausencia de ‘royalties’ y al soporte de los micros y tecnologías modernas, Linux está actualmente atacando de forma feroz el mercado de los RTOS. 13 Uno de los cambios fundamentales en Linux es la inclusión del proyecto uClinux en el kernel principal. El proyecto uClinux (que puede pronunciarse como "u-cé-linux" [en inglés "you-see-Linux"], aunque en rigor debe escribirse con la letra griega "mu") significa Linux para Microcontroladores. Esta variante de Linux ha sido un pila fundamental para su aceptación en el mercado embebido, y su inclusión en la versión oficial debería aumentar aún más el desarrollo en este campo. Al contrario que las variantes de Linux a las que estamos acostumbrados, en los sistemas embebidos no tenemos todas las capacidades del kernel, debido a limitaciones de hardware. La principal diferencia en estas variantes es la ausencia de MMU (memory management unit o "unidad de gestión de memoria" - lo que hace que un sistema operativo pueda trabajar en modo protegido) integrada en el procesador. Aunque suelen ser sistemas Linux multitarea, no tienen protección de memoria ni otras características asociadas. (Sin protección de memoria, es posible que un proceso aventurero lea los datos de otros procesos, o incluso que los haga colgarse.) Esto reduce su utilidad en un sistema multiusuario, pero los hace ideales para una agenda electrónica (PDA) de bajo coste o un dispositivo dedicado. Es difícil exagerar la importancia de este cambio de arquitectura en Linux 2.6: hasta el momento, todas las versiones seguían afectadas (por más remotamente que fuera) por las limitaciones inherentes al trabajo inicial de Linus en su Intel 80386. Hay varias líneas nuevas de procesadores embebidos con soporte en Linux 2.6, incluyendo la serie Hitachi H8/300, el procesador NEC v850, y la línea de procesadores embebidos m68k diseñada por Motorola. Éstos últimos son los más familiares para el usuario corriente de Linux, ya que están en el corazón de las agendas Palm Pilot desde el principio (la Palm 1000). Otros modelos, con nombres tan sugerentes como DragonBall o ColdFire, son utilizados en sistemas y placas de evaluación fabricadas por Motorola, Lineo, Arcturus, y otras empresas. Por desgracia, la v2.6 todavía no permite usar otros procesadores m68k más antiguos sin MMU (como los procesadores 68000 utilizados en los primeros Macintosh), pero es bastante probable que surjan proyectos amateur para incluir 19 éstos sistemas y otros parecidos. Aunque no sea parte de la inclusión de uClinux (al disponer de MMU), esta nueva revisión puede usarse también en los procesadores de Axis Communications, la serie ETRAX CRIS (Code Reduced Instruction Set, o "Conjunto Reducido de Instrucciones de Código"). (Hay que señalar que la inclusión de este procesador llegó durante el ciclo de mantenimiento del kernel 2.4 -- bastante después de que saliera la versión 2.4.0.) Es un procesador embebido usado sobre todo en equipamiento de redes. El kernel no incluye todavía soporte para variantes sin MMU, pero varios proyectos externos están ya trabajando en ello. Además de soporte para hardware, hay también mejoras importantes resultantes de la integración de sistemas embebidos en el kernel principal. Mientras que la mayoría de ellas no son visibles, la robustez general del sistema operativo se ve mejorada por cambios como la capacidad de construir un sistema completo sin soporte de swap. Windows XP para sistemas embebidos Aunque Microsoft ha mantenido a los fabricantes de sistemas operativos alternativos a Windows contra la pared en lo que se refiere a equipos de sobremesa, su posición en la batalla por la supremacía en el terreno de los sistemas operativos para dispositivos que no fueran PC era vulnerable. De ahí que Microsoft da un paso más en este sector, lanzando la versión para dispositivos embebidos en la Conferencia para desarrolladores de este tipo de sistemas que se celebra en Las Vegas. Esta decisión parece ir en consonancia con las predicciones que apuntan a una progresiva inclusión de microprocesadores en casi cualquier tipo de aparatos (frigoríficos, coches, etc). Además, con esta iniciativa Microsoft hace frente a la competencia surgida por parte, por ejemplo, de Linux que, según muchos analistas, permite reducir costes, ya que no carga el precio de los royalties. También existe la opción de utilizar un sistema propietario como los desarrollados por la compañía Wind River Systems cuyo punto fuerte es su gran capacidad para trabajar en tiempo real, su alta resistencia a fallos y la posibilidad de procesar comandos de forma inmediata. Sería el caso, por ejemplo, de aparatos médicos que deben ser muy fiables y rápidos. 20 DOS en sistemas embebidos Al ritmo que marcha la informática, cualquiera diría que el DOS es un sistema operativo antiquísimo, ya superado en gran medida por otros sistemas operativos de escritorio como Windows y Linux y, en cierta forma, prácticamente olvidado. Como si fuera algo de otro mundo. Sin embargo, hace tan sólo diez años casi cualquier ordenador funcionaba con este sistema. El DOS está estrechamente ligado al progresivo desarrollo de los microprocesadores de arquitectura x86 de Intel. Y es que es un sistema operativo que hay que conocer porque sigue estando en vigor gracias a su estabilidad. ¿Qué por qué es tan estable? Pues porque se desarrollaba en paralelo con la tecnología de Intel e IBM y porque es un sistema operativo muy simple, monousuario y monotarea. En otras palabras, DOS sólo ejecuta un programa cada vez. Es obvio, que para un ordenador personal el DOS resulta bastante inútil. Pero ¿y para un dispositivo electrónico? La mayoría de ellos sólo tienen que realizar una tarea de forma repetitiva... Además de su reducido tamaño y de los escasos recursos que necesita, por ejemplo ROM-DOS posee algunas características que marcan la diferencia de forma significativa: RXE (Relocatable Executable): En DOS, los programas se cargan en RAM antes de proceder a su ejecución. La tecnología RXE permite convertir un programa estándar en un programa que se puede ejecutar directamente desde ROM. ROM-DOS BUILD Utility: Permite añadir y quitar características al sistema operativo, reduciendo así el tamaño final del kernel. Carga dinámica de drivers de dispositivo: ROM-DOSTM tiene la capacidad de detectar el hardware y cargar drivers de dispositivo de forma dinámica, lo que le permite auto configurarse según el entorno. Entre otros aparatos, este sistema operativo podemos encontrarlo en: • Cámaras digitales • Dispositivos de captura de datos • Cajeros automáticos • Dispositivos GPS 21 Java para sistemas embebidos Sun Microsystems, Inc., creadora y máxima defensora de la tecnología Java, amplia su oferta para el mercado de desarrollo embebido con el lanzamiento de dos nuevas ediciones de Java Platform Standard Edition (Java SE). Se trata de una versión "headless" con un tamaño reducido que emplea menos de 23 Mb de espacio de almacenamiento, y de una versión para usuarios de PowerPC. La tecnología Java es cada vez más utilizada en sistemas embebidos avanzados, debido a sus capacidades inherentes de soporte de red, optimización de dispositivos y procesado de datos. La mayoría de las características de la plataforma Java SE pueden ser ahora empleadas para el desarrollo embebido, gracias a la capacidad cada vez mayor del nuevo hardware disponible en el mercado. La versión "headless" (sin soporte gráfico) de Java SE requiere sólo 23 Mb de espacio de almacenamiento y es ideal para desarrolladores de software para dispositivos embebidos que quieran aprovechar las sólidas capacidades de red y procesamiento, y el rendimiento de la tecnología Java. Por su parte, la plataforma para PowerPC es una versión estable de Java SE diseñada específicamente para el procesador PowerPC, que actualmente está muy extendido entre desarrolladores de dispositivos embebidos a gran escala (no teléfonos móviles). Hay dos tendencias convergentes en el mercado de dispositivos actuales: una es que la potencia y capacidad de escalar del procesador –según dicta la ley de Moore- hace posible la aparición de plataformas más pequeñas y más potentes para su uso en dispositivos embebidos; y la otra es que más y más dispositivos se están conectando a Internet todos los días. Esto significa que el mercado de dispositivos embebidos está evolucionando rápidamente y quizá está convirtiéndose en el principal entorno informático para este siglo", afirma José Manuel Estrada, arquitecto Java en Sun Java SE ofrece a los desarrolladores de dispositivos embebidos la capacidad para desplegar aplicaciones en múltiples plataformas hardware, y cuenta con características como genéricos, plantillas y compiladores que no están disponibles en ningún otro lenguaje de programación. Java Native Interface (JNI) proporciona a los desarrolladores la capacidad de acceder a sus librerías de código C/C++ directamente, sin necesidad de reescribir código. Además, los desarrolladores pueden acceder a un amplio abanico de código libre y de fuente abierta, así como participar junto a otros desarrolladores de software Java en proyectos en comunidad como NetBeans, Tomcat, Apache, Derby y muchos otros. Es importante señalar que las nuevas versiones de Java SE no restan valor a la plataforma Java Platform Micro Edition (Java ME). La tecnología Java ME sigue 22 siendo una plataforma estándar de primera línea para el desarrollo embebido tradicional en dispositivos con poca memoria y potencia de procesador (tales como teléfonos móviles, PDAs, procesadores embebidos en pequeñas impresoras, copiadoras, etc.). Paralelamente a las dos nuevas versiones de Java SE, Sun también ha anunciado un nuevo servicio de ajuste y pruebas para optimizar el rendimiento de la plataforma Java SE en despliegues embebidos Windows CE es un sistema operativo modular compuesto de varios elementos software. Estos elementos son interfaces compatibles con Win32 y estas interfaces permiten que cada uno de los elementos software puedan integrarse entre sí. Cada elemento comprende varios componentes de nivel más bajo y los diseñadores del sistema tienen la posibilidad de incluir o excluir estos componentes de nivel más bajo según sus necesidades. Es posible que un desarrollador excluya módulos como USER y GDI, obteniendo así un Windows CE sin interfaz de usuario. Esta característica permite ahora, que Windows CE funcione en sistemas empotrados (Embedded Systems) en los cuales todo es controlado mediante memoria ROM y no hay interfaz de usuario, ya que por lo general los sistemas empotrados son automatizaciones donde no hay intervención humana. Windows CE debido a su tamaño, es ideal para realizar trabajo en tiempo real; permite llevar la API Win32 a sistemas automatizados de tiempo real. Comenzando por el fondo, los principales elementos que conforman el sistema operativo son: • La capa de abstracción OEM denominada OAL (OEM Abstraction Layer), que incluye la administración de poder, los drivers de dispositivos y los servicios de las tarjeta de PC (PC Card); • EL Kernel de Windows CE, USER, GDI, sistemas de archivos y bases de datos; • Los protocolos de comunicaciones IRDA y TCP/IP; • Las distintas APIs; • La conectividad remota, Internet Explorer para Windows CE • El shell. • Como se dijo anteriormente un diseñador puede incluir o excluir algunos de estos elementos (por ejemplo, el Internet Explorer) según sus necesidades. PROCESO DE INSTALACIÓN DE UN SISTEMAS OPERATIVOS EMBEBIDOS Los pasos necesarios para la instalación de los sistemas embebidos son: 1. Conocer la arquitectura hardware del dispositivo. 23 2. Configurar el kernel incluyendo los controladores para esos dispositivos y eliminar lo que no sirve. 3. Crear el script de configuración y ejecución de la aplicación embebida. 4. Configurar y compilar la busybox incluyendo la aplicación y el script. 5. Compilar el kernel 6. Prueba de ejecución La arquitectura Para generar el kernel correcto es necesario conocer lo más posible la arquitectura subyacente. Si disponemos del manual o datasheet del dispositivo podemos determinar los controladores necesarios. Si este no es nuestro caso, podemos arrancar con una distribución linux live (Ej. Ubuntu) y determinar que controladores son los necesarios analizando los módulos cargados y el árbol de ficheros generados bajo /sys. Configuración del Kernel El configurar correctamente el kernel es necesario para que tenga una huella pequeña pero con toda la funcionalidad requerida. 1. Seleccionar la arquitectura "más cercana/compatible" . 2. Deshabilitar "Enable loadable modules support", para inscrutar los controladores dentro de la imagen y no depender de módulos externos. 3. Seleccionar el modo apropiativo. Si ese el caso se necesita poca latencia, luego se selecciona el modo Apropiativo "Preemption Model->Preemptible Kernel. Si por el contrario el sistema procesa transacciones a modo de servidor es conveniente usar "No force preemption". Por defecto el kernel usa el término medio, Voluntary Preemption. 4. Reloj. Si la aplicación necesita temporización de alta precisión se debe de activar el temporizador de alta resolución. 5. Dispositivos de bloque. Activar unicamente los controladores SATA/PATA/IDE de el dispositivos. 6. USB. Es habitual habilitar el uso de USB 2.0 y la clase USB HID para poder usar teclados, ratones, etc. Se deshabilita todo lo demás. 7. Sistema de archivos. Seleccionamos el sistema de archivos que necesitemos (recomendable sistema de archivos con Jourling, ej. ext3 o reiserfs). En sistemas con poco disco suele usarse a menudo el JFFS2 como sistemas de archivos para memorias flash. 24 8. Video Linux. Normalmente se deshabilita. 9. sonido Después de seleccionar los controladores necesarios se procede a generar una imagen del kernel "normal". En este caso se debe construir un kernel que después de inicializarse no monte un sistema de archivos dentro de un disco duro (procedimiento normal), sino que monte un sistema de archivos temporal que va comprimido y embebido dentro de la propia imagen del kernel. Para lograr esto se debe especificar un fichero especial que sirve de guía para generar este sistema de archivos. Aplicación embebida El objetivo de generar este kernel es poder correr la aplicación en un sistema embebido. Se debe procurar generar la aplicación teniendo muy en cuenta la arquitectura subyacente y aprovechando todo su potencial. Es recomendable si procede, generar un ejecutable estático e incluir herramientas de depuración remota o diagnósticos (ejecución, estado temperatura, carga de trabajo, logs, etc). Una vez compilado lo agregamos a la lista de construcción de imagen la imagen con la correspondiente entrada "file". El fichero init invocará la aplicación al final de la configuración. Compilación del kernel. Ya que se puede construir la imagen del kernel de forma habitual ("make") o según los requisitos (compilación cruzada), se la podrá implementar en el sistema embebido. GESTIÓN DE PROCESOS Y DEL PROCESADOR SISTEMAS OPERATIVOS EMBEBIDOS Un microprocesador es una implementación en forma de circuito integrado (IC) de la Unidad Central de Proceso CPU de un ordenador. Frecuentemente nos referimos a un microprocesador como simplemente “CPU”, y la parte de un sistema que contiene al microprocesador se denomina subsistema de CPU. Los microprocesadores varían en consumo de potencia, complejidad y coste. Los hay de unos pocos miles de transistores y con coste inferior a 2 euros (en 25 producción masiva) hasta de más de cinco millones de transistores que cuestan más de 600 euros. Los subsistemas de entrada/salida y memoria pueden ser combinados con un subsistema de CPU para formar un ordenador o sistema integrado completo. Estos subsistemas se interconectan mediante los buses de sistema (formados a su vez por el bus de control, el bus de direcciones y el bus de datos). El subsistema de entrada acepta datos del exterior para ser procesados mientras que el subsistema de salida transfiere los resultados hacia el exterior. Lo más habitual es que haya varios subsistemas de entrada y varios de salida. A estos subsistemas se les reconoce habitualmente como periféricos de E/S. El subsistema de memoria almacena las instrucciones que controlan el funcionamiento del sistema. Estas instrucciones comprenden el programa que ejecuta el sistema. La memoria también almacena varios tipos de datos: datos de entrada que aún no han sido procesados, resultados intermedios del procesado y resultados finales en espera de salida al exterior. Es importante darse cuenta de que los subsistemas estructuran a un sistema según funcionalidades. La subdivisión física de un sistema, en términos de circuitos integrados o placas de circuito impreso (PCB) puede y es normalmente diferente. Un solo circuito integrado (IC) puede proporcionar múltiples funciones, tales como memoria y entrada/salida. Un micro controlador (MCU) es un IC que incluye una CPU, memoria y circuitos de E/S. Entre los subsistemas de E/S que incluyen los micro controladores se encuentran los temporizadores, los convertidores analógico a digital (ADC) y digital a analógico (DAC) y los canales de comunicaciones serie. Estos subsistemas de E/S se suelen optimizar para aplicaciones específicas (por ejemplo audio, video, procesos industriales, comunicaciones, etc.). Hay que señalar que las líneas reales de distinción entre microprocesador, micro controlador y microcomputador en un solo chip están difusas, y se denominan en ocasiones de manera indistinta unos y otros. En general, un SE consiste en un sistema con microprocesador cuyo hardware y software están específicamente diseñados y optimizados para resolver un problema concreto eficientemente. Normalmente un SE interactúa continuamente con el entorno para vigilar o controlar algún proceso mediante una serie de sensores. Su hardware se diseña normalmente a nivel de chips, o de interconexión de PCB, buscando la mínima circuitería y el menor tamaño para una 26 aplicación particular. Otra alternativa consiste en el diseño a nivel de PCB consistente en el ensamblado de placas con microprocesadores comerciales GESTIÓN DE MEMORIA DE UN SISTEMAS OPERATIVOS EMBEBIDOS Cualquiera de las funcionalidades de los sistemas embebidos están compuestas de tres aspectos: procesamiento, almacenamiento y comunicación. El procesamiento es la transformación de los datos, el almacenamiento es la retención de los datos para su posterior uso, y la comunicación es la transferencia de los datos. Cada uno de estos aspectos debe ser implementado. Se usan procesadores para el procesamiento, memoria para el almacenamiento, y buses para la comunicación La mayoría de los sistemas operativos modernos convencionales usan memoria virtual paginada, donde la página es la unidad de protección y asignación de la memoria. El uso de procesos y protección de memoria en sistemas embebidos es muy importante; si se utiliza un único espacio de direcciones para todas las aplicaciones, una falla de software de una aplicación puede resultar en la corrupción de la memoria, ocasionando una falla de sistema. La desventaja, sin embargo, es que la protección de memoria requiere que el CPU soporte MMU (Memory Management Unit), lo cual resulta en un CPU más complejo. A diferencia de los sistemas operativos convencionales, la mayoría de los sistemas operativos embebidos están enfocados a un CPU simple, que usualmente no tiene MMU. Además el resto del sistema tiene memoria limitada, poco o ningún espacio en disco; así que usualmente no usan memoria virtual. Por ejemplo, los sistemas Linux embebido y QNX no soportan paginación, esto quiere decir que los datos, texto y pila comparten un espacio contiguo de memoria. Esto implica que no existe protección a nivel de memoria, por ejemplo, la pila podría crecer hasta ocupar el espacio de texto o datos; o un proceso podría leer o escribir datos de otro proceso. Por otro lado, Windows CE tiene un manejo de memoria más elaborado. Soporta parcialmente memoria virtual paginada (esto implica soporte de TLB (Translation Lookaside Buffer) en el CPU; y brinda protección de memoria a nivel de procesos e hilos. 27 Memoria real La memoria real o principal es en donde son ejecutados los programas y procesos de una computadora y es el espacio real que existe en memoria para que se ejecuten los procesos. Por lo general esta memoria es de mayor costo que la memoria secundaria, pero el acceso a la información contenida en ella es de más rápido acceso. Solo la memoria cache es más rápida que la principal, pero su costo es a su vez mayor. GESTIÓN DE MEMORIA AUXILIAR DE UN SISTEMAS OPERATIVOS EMBEBIDOS La memoria auxiliar (llamada también memoria física o memoria externa) que almacena información a largo plazo, incluso después de apagar el equipo. La memoria auxiliar corresponde a los dispositivos magnéticos de almacenamiento como por ejemplo el disco duro, dispositivos ópticos de almacenamiento como los CD-ROM y DVD-ROM, y a las memorias de sólo lectura. SISTEMA DE ARCHIVOS (ZFS). ZFS, es el sistema de archivos dinámico del sistema operativo Solaris. Con 16 millones de millones más de capacidad que los sistemas de archivos 64-bit existentes, ZFS virtualmente es el único sistema de archivos con capacidad de almacenamiento prácticamente ilimitada, lo que hace de Solaris el mejor de la industria para el almacenamiento de datos. Este sistema de archivo ofrece: Administración sencilla: ZFS automatiza y consolida complicados conceptos de almacenamiento, con lo que se reduce la sobrecarga administrativa en un 80 por ciento. Integridad de datos: ZFS protege todos los datos con sumas de comprobación de 64 bits que detectan y corrigen el daño de datos silenciosos. Escalabilidad: 28 ZFS, el primer sistema de archivos de 128 bits, ofrece una capacidad de 16.000 millones de veces superior a la de los sistemas de 32 ó 64-bits. Rendimiento: El modelo transaccional elimina la mayor parte de las restricciones tradicionales sobre la orden de emisión de E/S, con lo que se consiguen increíbles mejoras en el rendimiento. Al tiempo que simplifica en gran medida el trabajo de los administradores del sistema, ZFS ayuda a incrementar los beneficios económicos de una organización. Como ZFS está diseñado sobre conjuntos de almacenamiento virtual (a diferencia de los sistemas de archivos tradicionales que requieren un administrador de volúmenes), la creación y eliminación de sistemas de archivos resultan mucho menos complicadas. ZFS actúa para las aplicaciones como un sistema de archivos POSIX estándar, no se requiere conexión mediante puertos. Pero para los administradores, presenta un modelo de almacenamiento por conjuntos que eliminan el antiguo concepto de volúmenes, así como todos los problemas relacionados con la administración de particiones, el abastecimiento y el tamaño del sistema de archivos. Del conjunto de almacenamiento común de ZFS se pueden extraer miles (incluso millones) de sistemas de archivos y cada uno de ellos consume únicamente la cantidad de espacio que necesita. El ancho de banda de E/S combinado de todos los dispositivos de ese conjunto de almacenamiento está siempre disponible para cada sistema de archivos. Dos de los objetivos de la creación del sistema de archivos ZFS consisten en deshacerse de numerosos conceptos de administración complicados y automatizar muchas tareas administrativas comunes. Por ejemplo, la creación de un conjunto de almacenamiento, el incremento de un conjunto y la adición o eliminación de un sistema de archivos se pueden realizar con un único comando sencillo, en lugar del proceso de varios pasos (format, newfs, edit/etc/vfstab etc.) habitual en los sistemas de archivos y administradores de volúmenes tradicionales. Observemos el siguiente caso: para crear un conjunto, crear tres sistemas de archivos y, a continuación, incrementar el conjunto (5 pasos lógicos) se requieren 5 comandos sencillos de ZFS, frente a los 28 pasos necesarios con un sistema de archivos y administrador de volúmenes tradicionales. 29 Además, estos comandos son de tiempo constante y se completan en unos segundos, mientras que con frecuencia se requieren horas para configurar los sistemas de archivos y volúmenes tradicionales. En el caso mencionado anteriormente, ZFS reduce el tiempo necesario para completar estas tareas de 40 minutos a menos de 10 segundos. La interfaz de la línea de comandos de ZFS simplifica drásticamente la administración. Se orienta a las tareas, por lo que los administradores pueden expresar las tareas que desean llevar a cabo en lugar de tener que memorizar o buscar comandos crípticos. Los datos se pueden dañar de diferentes modos, como por ejemplo un error de sistema o una interrupción del suministro eléctrico inesperada, pero con ZFS se elimina este temor por lo desconocido. ZFS impide el daño a los datos ya que mantiene la coherencia de los mismos en todo momento. Todas las operaciones son transaccionales. De este modo, no sólo se mantiene la coherencia sino también se eliminan todas las restricciones sobre la orden de E/S y se permite que el conjunto de los cambios se realice correctamente o se produzca un error. Todas las operaciones utilizan asimismo la técnica de copia por escritura (copyon-write). Los datos en directo nunca se sobrescriben. ZFS escribe los datos en un nuevo bloque antes de cambiar los punteros de datos y confirmar la escritura. La técnica de copia por escritura ofrece varias ventajas: · · · Estado en disco siempre válido. Copias de seguridad coherente y fiable. Capacidad de deshacer datos hasta un punto en el tiempo conocido. Los administradores ya no tendrán que ejecutar laboriosos procedimientos de recuperación, como por ejemplo fsck, incluso si el sistema se cierra de un modo indebido. Asimismo, ZFS es un sistema de archivos que realiza sumas de comprobación de 64 bits de un extremo a otro en todos los datos para evitar el daño de datos silencioso. Cuando se leen datos, se verifica la suma de comprobación con el fin de garantizar que se devuelven los datos que escribió la aplicación. ZFS puede llevar a cabo la recuperación de datos automática en una configuración reflejada o RAID. Cuando una copia se daña, ZFS lo detecta mediante la suma de comprobación y utiliza otra copia para repararla. 30 GESTIÓN DE ENTRADA Y SALIDA, DISPOSITIVOS QUE SOPORTA UN SISTEMA OPERATIVO EMBEBIDO Una de las principales funciones del sistema operativo es la gestión de los recursos de la computadora y, en concreto, de los dispositivos periféricos. El gestor de Entrada/Salida debe controlar el funcionamiento de todos los dispositivos de Entrada/Salida para alcanzar los siguientes objetivos: Facilitar el manejo de los dispositivos periféricos. Para ello ofrecer una interfaz sencilla, uniforme y fácil de utilizar entre los dispositivos, y gestionar los errores que se pueden producir en el acceso a los mismos. Ofrecer mecanismos de protección que impidan a los usuarios acceder sin control a los dispositivos periféricos. Las rutinas que el sistema emplea para ejecutar operaciones de E/S están diseñadas para eliminar las diferencias entre los dispositivos y los tipos de acceso. No existe distinción entre acceso aleatorio y secuencial, ni hay un tamaño de registro lógico impuesto por el sistema. El sistema mantiene una lista de áreas de almacenamiento temporal (buffers), asignadas a los dispositivos de bloques. El Kernel usa estos buffers con el objeto de reducir el tráfico de E/S. Cuando un programa solicita una transferencia, se busca primero en los buffers internos para ver si el bloque que se requiere ya se encuentra en la memoria principal (como resultado de una operación de lectura anterior). GESTIÓN DE COMUNICACIONES Y SEGURIDAD EN UN SISTEMA OPERATIVO EMBEBIDO Existe un sin número de sistemas embebidos que se pueden conectar a diferentes tipos de redes o Internet para mejorar sus características y desempeño, actualmente cuentan con elementos de hardware embebido, permitiendo que desde artefactos electrodomésticos hasta grandes equipos industriales puedan ser gobernados de forma remota por medio de conexiones a Internet y puedan ser inclusive controlados por medio de teléfonos celulares empleando una combinación de las tecnologías actuales. Es de esta forma, por ejemplo, cómo se pueden cambiar los valores de setpoint de reguladores de temperatura y encender 31 o apagar los electrodomésticos de una casa, haciendo una simple llamada telefónica o accediendo a un sitio Web. Estas características representan una nueva escala de riesgos, ya que no solo es la integridad de la información la que se ve comprometida con estos sistemas, sino al incluir diferentes actores que pueden ser gobernados por un atacante, se pueden generar estragos mucho más graves que la pérdida de información o el cese de un servicio, como sucede normalmente en los incidentes de seguridad. Cambiar la temperatura de un recinto puede ser vital para algunas personas en épocas de invierno o verano. El ataque combinado a varios de estos elementos puede causar sobrecargas a las centrales de energía si se realiza el encendido simultáneo de múltiples elementos en las horas pico de consumo. Adicionalmente se puede realizar monitoreo del estado de dichos elementos y de esta forma se puede determinar los horarios en que una vivienda se encuentra vacía haciéndola vulnerable a robos y demás ataques físicos Por razones de costos, muchos de estos sistemas emplean procesadores sencillos, en los cuales los aspectos de seguridad son relegados a un segundo plano. Existe un compromiso entre el costo y la seguridad que se puede lograr con estos sistemas ya que un poco más de dinero, invertido en la adición de algún tipo de seguridad puede representar gran diferencia para las compañías que ensamblan millones de unidades al año, afectando la competitividad de dichas empresas, pero en contraste con los incidentes de seguridad de los sistemas de información convencionales, recuperar información o restablecer un servicio puede requerir ciertos esfuerzos e inversión, pero revertir una muerte o una lesión física es imposible. En la medida en que las funciones de los dispositivos de hardware embebido se vuelven más complicadas, las herramientas para trabajar con estos se deben mejorar. A menudo la forma para realizar mantenimiento y diagnóstico de estos dispositivos de hardware es conectarlos a una red local o una terminal de programación, lo cual puede generar riesgos adicionales debidos a ingresos no autorizados a la configuración y lectura del estado e historial de diagnósticos del equipo. Existen diferentes métodos de solucionar estos problemas, principalmente controlar el acceso a los equipos es clave. Estas soluciones pueden ser en algunos casos sencillas, y combina diferentes niveles de seguridad, pero pueden traer consigo algunos problemas: 32 Una de las soluciones consiste en la utilización de un esquema de contraseñas con el objeto de tener una barrera de primer nivel a los ingresos no autorizados. Sin embargo, hoy en día se logra muy poco con solo este tipo de protección dado que las contraseñas usualmente viajan por las redes en forma de texto no codificado. Tener diferentes contraseñas para cada equipo también puede ser fuente de problemas, debido a que los usuarios normalmente deben escribirlas, compartirlas con otros usuarios e incluso incluirlas en scripts para ingreso automático, lo cual elimina la protección de acceso accidental. Existen diferentes tipos de protocolos orientados a generar seguridad en dispositivos simples como el SNMP Simple Network Management Protocol, el cual fue diseñado para obtener datos y programar dispositivos simples y es usado normalmente para monitorear nodos conectados a la red. Existen otros protocolos como SSH, SSL, IPSEC, e IKE entre otros, los cuales proporcionan un medio más seguro para establecer comunicación con este tipo de dispositivos. Existen otros métodos más sofisticados, como el Sistema de autenticación Kerberos desarrollado por el MIT el cual se basa en tres principios de seguridad a saber, autenticación, autorización, y sistema de cuentas de usuario. Este es un sistema de autenticación de propósito general, en el cual los usuarios demuestran su identidad para acceder a cada servicio y el sistema decide si el usuario tiene acceso o no a dicho servicio. A medida que los dispositivos electrónicos, desde un PDA hasta un router, pasando por teléfonos celulares y tarjetas inteligentes avanzan tecnológicamente, también avanza la complejidad de los ataques a los que estos se enfrentan El punto de la seguridad en estos dispositivos es lo que más frena la adopción de dichas tecnologías para prácticas de comercio electrónico, según los resultados de encuestas recientes que revela que el 47% de las personas que tienen dispositivos móviles no se animan a este tipo de prácticas por temores concernientes a la seguridad de sus transacciones Siempre que se va a analizar problemas de seguridad en informática se debe tener la confidencialidad, integridad, disponibilidad, autenticación, rastreabilidad y no-repudio. Es por esto que en el mundo de los dispositivos móviles y PDA´s existe una variedad de protocolos y estándares como el WEP del IEEE Estándar 802.11, el WTLS del WAP y el SSL que sirven para 33 protegerlos desde un punto de vista funcional, pero cuando se trata de sistemas embebidos debe tenerse también en cuenta algunos aspectos críticos como: o Muchos sistemas embebidos no tienen la suficiente capacidad de procesamiento para las exigencias de seguridad. o Los dispositivos que operan con baterías como los celulares y PDA’s no tienen la suficiente autonomía de funcionamiento ni los suficientes recursos de memoria para implementar medidas de seguridad. o Los diferentes tipos de ataques que pueden sufrir estos dispositivos como los ataques por software y los ataques físicos entre otros, hacen que los sistemas tengan que ser diseñados de manera que aun cuando alguien tenga acceso a ellos física o lógicamente sigan siendo seguros. Podría asegurarse entonces que la encriptación de los datos no es suficiente por varios motivos, entre ellos el alto costo de procesamiento de los algoritmos de encriptación y el hecho de que los protocolos pueden no ser efectivos en los sistemas embebidos, por ejemplo en un dispositivo que reciba aplicaciones desarrolladas por terceros, cada tercero tendría que conocer ya sea el algoritmo o las llaves con las cuales se realiza la encriptación Algunas soluciones pueden ser: firewalls, detectores de intrusos, aplicaciones en criptografía, antivirus, administración de memoria y dump memory. SOPORTE A TIEMPO REAL EN UN SISTEMAS OPERATIVOS EMBEBIDOS El soporte de red es importante en sistemas embebidos ya que les facilita comunicarse con el mundo exterior, así como su actualización. QNX contiene comunicación de red de bajo nivel en su microkernel; Windows CE posee varias pilas de comunicación a nivel de kernel (IP, PPP, IrDA, etc.). Linux embebido por su parte posee un soporte de red heredado de los ambientes cliente/servidor soportados por Linux, ofreciendo pilas de red y protocolos de Internet. 34 Un sistema embebido complejo puede utilizar un sistema operativo como apoyo para la ejecución de sus programas, sobre todo cuando se requiere la ejecución simultánea de los mismos. Cuando se utiliza un sistema operativo lo más probable es que se tenga que tratar de un sistema operativo de tiempo real (RTOS). Un sistema operativo de tiempo real (SOTR o RTOS -Real Time Operating System en inglés), es un sistema operativo que ha sido desarrollado para aplicaciones de tiempo real. Como tal, se le exige corrección en sus respuestas bajo ciertas restricciones de tiempo. Si no las respeta, se dirá que el sistema ha fallado. Para garantizar el comportamiento correcto en el tiempo requerido se necesita que el sistema sea predecible (determinista). Características Generales No utiliza mucha memoria Cualquier evento en el soporte físico puede hacer que se ejecute una tarea Multi-arquitectura (puertos de código para otro tipo de UCP) Muchos tienen tiempos de respuesta predecibles para eventos electrónicos En la actualidad hay un debate sobre qué es tiempo real. Muchos sistemas operativos de tiempo real tienen un programador y diseños de controladores que minimizan los periodos en los que las interrupciones están deshabilitadas, un número llamado a veces duración de interrupción. Muchos incluyen también formas especiales de gestión de memoria que limitan la posibilidad de fragmentación de la memoria y aseguran un límite superior mínimo para los tiempos de asignación y retirada de la memoria. SOPORTE PARA LA NUBE E INTEGRACION A ELLA (CLOUD COMPUTING) La generalización del termino cloud computing, la popular nube, como paradigma de todo tipo, tanto organizativo como de diseño de sistemas, comporta una interesante reflexión. Si la nube permite a los clientes y usuarios poder obtener funcionalidades a través de servicios de 35 los cuales solo conocen su contrato de servicio pero ignoran el diseño y la localización, ¿para qué leer un documento como el que tiene entre las manos? Muchas veces olvidamos que los servicios han de ser fabricados, y que para eses trabajo, hay que prepararse y hacerlo bien, muy bien, ya que nuestros clientes son en la mayoría de los casos desconocidos y si nuestro producto no es correcto, simplemente nos dejaran. Así pues, por encima de la nube están los usuarios i clientes, tanto finales como los profesionales que reutilizan los servicios, y por debajo, los constructores y suministradores de esos servicios. Esta doble visión, no excluyente ya que los constructores pueden ser a si mismo clientes cuando reutilizan servicios, estará presente en todo el documento que tiene entre manos. El software en la instrumentación virtual El software es el componente más importante de un instrumento virtual. Con la herramienta de software apropiada los ingenieros y científicos pueden crear eficientemente sus propias aplicaciones, diseñando e integrando las rutinas que requiere un proceso específico. También pueden crear las interfaces de usuario que mejor satisfagan el objetivo de la aplicación y de aquéllos que van a interactuar con ellas. Pueden definir cómo y cuándo la aplicación adquiere datos desde el dispositivo, cómo los procesa, manipula y almacena los datos y cómo se presentan los resultados al usuario. Disponiendo de un software poderoso, se puede dotar a los instrumentos con capacidades de inteligencia y de toma de decisiones de manera tal que se adapten cuando las señales medidas varíen inadvertidamente o cuando se requiera mayor o menor potencia de procesamiento. Una importante ventaja que provee el software es la modularidad. Cuando se trata de un gran proyecto, el equipo de trabajo generalmente aborda la tarea dividiéndola en unidades funcionales manejables (metodología top-down). Estas tareas subsidiarias son más manejables y más fáciles de probar dadas las menores dependencias que podrían causar comportamientos inesperados. 36 En este contexto se puede diseñar un instrumento virtual para solucionar cada una de estas tareas subsidiarias y luego reunirlas en un sistema completo para resolver la tarea de mayor envergadura. La facilidad con la cual se puede realizar esta división de tarea depende en mayor medida de la arquitectura subyacente en el software. SOLARIS 11 EXPRESS Esta versión del sistema operativo se puede utilizar sólo para pruebas y desarrollo e incluye capacidades de visualización de redes. Oracle ha lanzado Solaris 11 Express, una versión del sistema operativo Solaris pensada exclusivamente para desarrolladores y que también sirve como un adelanto del lanzamiento de la versión comercial de Solaris 11 para el próximo año 2011. El lanzamiento de Solaris 11 Express se produce unos meses después de que Oracle anunciara que no ofrecerá más soporte al proyecto OpenSolaris, una distribución de código abierto de Solaris, para centrarse en la versión comercial del sistema operativo. Solaris 11 Express, tiene compatibilidad binaria con más de 11.000 aplicaciones desarrolladas por terceros en cerca de 1.000 sistemas SPARC y basados de x86. Principales características distintivas de Solaris 11 Express a) Ha mejorado las características de disponibilidad y ha mejorado el tiempo de inactividad del sistema a la mitad. Además, los tiempos de arranque son sólo ahora de “decenas de segundos”. b) Capacidades de virtualización de red, integración con el portal de soporte online de Oracle y mejoras en el sistema de archivo ZFS. c) Mejoras en la gestión de los datos, ya que ahora se incluyen nuevas características avanzadas de almacenamiento como la deduplicación, cifrado y las mejoras relacionadas con la tecnología ZFS mencionada anteriormente. d) Escalabilidad: La versión actual del sistema operativo puede soportar cientos de threads y unos pocos terabytes de memoria, pero la nueva versión escala hasta miles de threads y cientos de terabytes de memoria. Además, incorporará virtualización y seguridad. 37 e) Cloud Computing, enfocándose en la compatibilidad con nuevo hardware que soportará enormes volúmenes de threads y sistemas de memoria, además de cientos de gigabits de I/O. f) Mejoras en su Administración: El administrador de sistemas de Solaris 11 Express ofrece una serie de cambios en la instalación, parches, reparto de aplicaciones y otras áreas. En su página web, Oracle ofrece una serie de recursos para ayudar con la transición. ANÁLISIS COMPARATIVO CON LINUX Y WINDOWS 7. Windows ce presenta un sistema dividió en 220modulos, cada uno dividido en varios componentes, los cuales son ROMables y comprimibles, ademas soporta cinco procesadores ARM/StrongARM, MIPS, PPC, SuperH, y x86 y un sobconjunto de la API Win 32, en cuanto a conectividad cuenta con el ActiveSync, que es la sincronización activa netre el PC de sobremesa y el dispositivo CE. Y también posse el remote API, un control remoto del dispositivo desde una aplicación en el PC. En cuanto a Linux sabemos que es un sistema libre, cualquiera lo puede usar, modificar y descubrir, es además muy estable y es difícil que se quede colgado, los servidores que lo usan pueden funcionar durante meses sin parar, es extremadamente seguro, tiene varios sistemas de protección y no existe virus para Linux. Ahora bien si hablamos de Windows 7 sabemos que pertenece a Microsoft, única compañía que lo puede modificar, las licencias son demasiado costosas, es poco estable, es común verse obligado a reiniciar el sistema, los servidores no admiten 38 mas allá de un par de semanas sin reiniciar, además de ser muy poco seguro y para el cual existen miles de virus que vulneran el sistema, solo lee y escribe sus propios sistemas de archivos y presenta incompatibilidades entre algunas de sus versiones. La comparación de Microsoft Windows y el sistema operativo de Linux es un tema común de la discusión entre sus usuarios. Windows es el sistema operativo más importante bajo una licencia propietaria de software, mientras que Linux es el sistema operativo más importante bajo una licencia libre de software. Sin embargo, la mayoría de los sitios de distribuciones de Linux también disponen de componentes propietarios (tales como los controladores compilados de blob binario, que proveen los fabricantes de hardware para su instalación normal) En noviembre de 2007, Linux era el sistema operativo del 85% de las supercomputadoras más poderosas (comparado con el 1,2% de Windows.En febrero de 2008, cinco de las diez empresas más confiables proveedoras de internet usaban Linux, mientras que sólo dos usaban Windows. Los defensores de software libre discuten que la fuerza clave de Linux es que respeta lo que ellos consideran para ser las libertades esenciales de usuarios: la libertad de correrlo, Para estudiar y cambiarlo, y para redistribuir copias con o sin cambios. ESTADISTICAS DE UTILIZACION A NIVEL MUNDIAL En el sitio de estadísticas StatCounter se puede apreciar que a enero de 2010, la distribución de uso de sistemas operativos de escritorio, obtenida al contabilizar las visitas a los sitios web que monitorizan: Windows XP es el sistema operativo más extendido en el mundo con un 69.36% de usuarios Le sigue Windows Vista con un 21.78% MacOSX con un 4.32% Windows 7 con un 2.35% y GNU/Linux con un 'pequeño' 0,68% StatCounter Global Stats - Browser, OS, Search Engine including Mobile Market Share 39 Sin embargo, haciendo el análisis por regiones, la cosa varía un poco, y tenemos resultados curiosos, como que en Europa Linux lo usa un 1,06% de los internautas, mientras que en Norteamérica (EE.UU. Canadá y México) el porcentaje es tan bajo que ni siquiera aparece reflejado en las estadísticas. Por países igualmente resulta llamativo por ejemplo que mientras en España Linux tiene un 1.66% de penetración, en Alemania un 1,14% y en Francia un 1,87% (quizás el más alto en el mundo), en otros sitios como Argentina o Chile (por citar dos países de los que en este foro hay representantes) el uso de Linux no llegar a estar siquiera contemplado en la estadística... aunque por ejemplo en EE.UU o Japón tampoco. En EE.UU en cambio Apple tiene por ejemplo un 10.2% del mercado. En fin, que aunque Kalli tenga este hilo abierto, la cosa va aún despacio en lo que a sistemas de escritorio se refiere. Ranking de sistemas operativos Febrero 2010: 1. Windows XP: 65.49% 2. Windows Vista: 16.51% 3. Windows 7: 8.92% 4. Mac OS X 10.5: 2.21% 5. Mac OS 10 x 6: 1.88% 6. Linux: 0.98% 7. Mac OS X 10.4: 0.72% 8 Java ME 0.64% 8. Windows 2000: 0.56% MarketShare ha publicado los últimos datos de la cuota de mercado de los sistemas operativos durante el pasado mes de Diciembre. En total, se han analizado más de 22 más de sistemas operativos, y ha habido alguna sorpresa que otra. Evidentemente, las dos sorpresas mayores son Windows Vista y Linux. Mientras que Vista, el que ha sido llamado el fracaso del año, está colocado como el segundo sistema operativo más usado, Linux se coloca el séptimo con una cuota irrisoria del 0.63%, frente al 76.91% de XP y el 10.48% de Vista. Antes de nada, hay que aclarar que estas estadísticas son recopiladas tras 40 millones y millones de acceso a miles de páginas webs, por lo que los servidores dedicados no son contabilizados. Por tanto, de alguna manera esa cuota de Linux implica únicamente a los usuarios de escritorio, al igual que XP respecto a XP Server. Por el resto no hay nada sorprendente. Mac sigue adelante en su cruzada y el iPhone ha desbancado totalmente a Windows CE (Mobile), y la sorpresa -que ya no lo es tanto- es la cantidad de gente que aún siguen usando Windows 2000 y 98. Y más abajo aún, con un 0.2%, está Windows 95, que con sus 11 años, aún sigue estando presente en muchos hogares del mundo. GNU/Linux ocupa un lugar destacado como segundo sistema operativo que sirve web en Internet. En algunos de los rastreos de Netcraft también se han incluido datos sobre sistemas operativos; dos rastreos en 2001, los de junio de 2001 y septiembre de 2001, revelaron que GNU/Linux es el segundo sistema operativo para servidores de web y ha ido ganando constantemente aceptación desde febrero de 1999. Este recuento no se hizo por nombre de servidor como se hace con el de programas servidores de web, sino por direcciones IP, o sea los identificadores únicos de cada máquina visible en Internet. Una pequeña aclaración sobre las fechas: Netcraft da la fecha de cada estudio según el momento de la última tanda de rastreos, no el de publicación del informe. Por eso la revisión con fecha de "junio de 2001" se publicó en julio, y cubre resultados de revisiones de sistemas operativos desde marzo. Aquí tenemos un resumen del estudio de Netcraft: Grupo de Porcentaje Porcentaje sistemas Composición (marzo) (junio) operativos Windows 49.2% 49.6% Windows 2000, NT4, NT3, Windows 95, Windows 98 [GNU/]Linux 28.5% 29.6% [GNU/]Linux Solaris 7.6% 7.1% Solaris 2, Solaris 7, Solaris 8 BSD 6.3% 6.1% BSDI BSD/OS, NetBSD, OpenBSD Otros UNIX 2.4% 2.2% AIX, Compaq Tru64, HP-UX, IRIX, SCO UNIX, SunOS 4 y 41 FreeBSD, otros Otros UNIX - no- 2.5% 2.4% MacOS, NetWare, sistemas operativos cerrados de IBM Desconocidos 3.6% 3.0% Sistemas operativos que el detector de Netcraft no identifica Se pueden interpretar estas tablas de forma muy distinta según lo lo que se pretenda medir. Si queremos el porcentaje de sistemas abiertos, tendremos que sumar una parte de los BSD (FreeBSD, NetBSD, y OpenBSD), varios de los cuales son también abiertos, de modo que al menos un 6.1% se añade al 29,6% de GNU/Linux. En consecuencia, es más que razonable afirmar que una tercera parte de los ordenadores servidores de web usan sistemas operativos abiertos. Hay además diferencias geográficas. Por ejemplo, GNU/Linux supera a Windows en Alemania, Hungría, la República Checa y Polonia. Entre los sitios web muy conocidos que utilizan GNU/Linux se encuentran La Casa Blanca, Google, y el proveedor líder de alojamiento web Rackspace. Más sitios web harto conocidos que utilizan otros sistemas abiertos son, por ejemplo Yahoo y Sony de Japón, que usan FreeBSD. Si lo que le interesa es la proporción del mercado de servidores de web entre "UNIX y Windows", la puede encontrar también en la siguiente suma. Todos los sistemas operativos Windows se han reunido en un único número, sean Windows 95/98/ME o Windows NT/2000 aunque haya profundas diferencias. Una agrupación análoga de los ordenadores UNIX produce un total del 44,8% para sistemas de tipo UNIX en marzo de 2001, comparado con el 49,2% de Windows. Nótese que estas cifras probablemente diferirían mucho si estuviesen basadas en direcciones de web en lugar de direcciones IP; ya que una clara mayoría de direcciones de web se encuentran en sistemas de tipo UNIX. Según Netcraft, "Aunque Apache ejecutándose en varios sistemas UNIX corre en más sitios que Windows, Apache está fundamentalmente instalado en empresas de hosting e ISPs (proveedores de servicios de Internet) que albergan tantos sitios como pueden en un único ordenador para ahorrar costes". De ahí la diferencia en las cifras. 42 OTROS ASPECTOS WINDOWS EMBEDDED ¿UNA OPCIÓN COMO SISTEMA OPERATIVO DE ESCRITORIO? Un sistema “Embedded” es un equipo con un propósito determinado, integrado en el sistema que controla. Necesita especificaciones particulares y realiza tareas predefinidas. Embedded significa encajado, embutido,algo metido dentro de otra cosa. Es un sistema operativo para plataformas de 32 bits adaptables y ampliables, que demanden conectividad y amplio soporte para el desarrollo de aplicaciones. Es la versión industrial del Windows XP Profesional. Basado en los mismos binarios que el Windows XP Profesional. Se eligen solo las funciones y servicios que se necesitan. Herramientas rápidas y potentes para la creación de imágenes propias para cada aplicación. Este sistema operativo es el que usan los ATM (cajeros automáticos), surtidores, puntos de venta, algunas consolas y maquinas de videojuegos, etc. Para el desarrollo de Windows XP Embedded existen una serie de herramientas: Target Analyzer(TA): Genera información sobre la composición hardware. Component Designer(CD): Creación de componentes personalizados. Target Designer(TD): Selección y configuración de los componentes para generar la imagen final S.O. Se usa para crear y generar el sistema Windows Embedded es una versión de la plataforma Windows construida en base a módulos, lo que permite crear un sistema a medida. Si Windows XP o Vista 43 incluyen gran cantidad de programas como el reproductor de medios Windows Media Player o el navegador web Internet Explorer, Windows Embedded deja fuera todo esto para permitir utilizarlo como módulo, de forma que a aquellos clientes que no les interese el reproductor, pueden dejarlo fuera de su sistema. El uso habitual de Windows Embedded es para la creación de sistemas empotrados; un ejemplo podría ser un navegador GPS, en el cual se quiere ofrecer un rango de funciones restringido pero a la vez que pueda actualizarse por software con cierta comodidad cuando así lo quiera el fabricante. Es por ello que este sistema se encuentra a la venta solamente para fabricantes de hardware, aunque en Internet disponemos de una demo que nos permite utilizar una instalación básica durante 120 días. APLICACIONES DE LOS SISTEMAS OPERATIVOS EMBEBIDOS Los lugares donde se pueden encontrar los sistemas empotrados son numerosos y de varias naturalezas. A continuación se exponen varios ejemplos para ilustrar las posibilidades de los mismos: •Puntos de servicio o venta (POS, Point Of Service). Las cajas donde se paga la compra en un supermercado son cada vez más completas, integrando teclados numéricos, lectores de códigos de barras mediante láser, lectores de tarjetas bancarias de banda magnética o chip, pantalla alfanumérica de cristal líquido, etc. El sistema empotrado en este caso requiere numerosos conectores de entrada y salida y unas características robustas para la operación continuada. •Puntos de información al ciudadano. En oficinas de turismo, grandes almacenes, bibliotecas, etc. existen equipos con una pantalla táctil donde se puede pulsar sobre la misma y elegir la consulta a realizar, obteniendo una respuesta personalizada en un entorno gráfico amigable. •Decodificadores y set-top boxes para la recepción de televisión. Cada vez existe un mayor número de operadores de televisión que aprovechando las tecnologías vía satélite y de red de cable ofrecen un servicio de televisión de pago diferenciado del convencional. En primer lugar envían la señal en formato digital MPEG-2 con lo que es necesario un procesado para decodificarla y mandarla al televisor. Además viaja cifrada para evitar que la reciban en claro usuarios sin contrato, lo que requiere descifrarla en casa del abonado. También ofrecen un servicio de televisión interactiva o web-TV que necesita de un software específico 44 para mostrar páginas web y con ello un sistema basado en procesador con salida de señal de televisión. •Sistemas radar de aviones. El procesado de la señal recibida o reflejada del sistema radar embarcado en un avión requiere alta potencia de cálculo además de ocupar poco espacio, pesar poco y soportar condiciones extremas de funcionamiento (temperatura, presión atmosférica, vibraciones, etc.). •Equipos de medicina en hospitales y ambulancias UVI – móvil. •Máquinas de revelado automático de fotos. •Cajeros automáticos. •Pasarelas (Gateways) Internet-LAN. RESUMEN SISTEMAS OPERATIVOS EMBEBIDOS Un sistema operativo embebido es aquel que ha sido creado para un sistema embebido, es decir, un sistema de computación limitado a un número fijo y escaso de tareas. Aquí no entran, evidentemente, los ordenadores personales ni los móviles, tablets o dispositivos avanzados que conocemos. Una peculiaridad de los sistemas embebidos es que son un todo con las aplicaciones que ejecutan, lo que quiere decir que en muchos casos no es posible instalar en ellos ningún tipo de software adicional. Algunas características son: Fiabilidad y seguridad Eficiencia Interacción con dispositivos físicos Robustez Entre las plataformas de los sistemas operativos embebidos tenemos: Linux embebido es un sistema Linux típico del cual se han removido programas de utilidad, herramientas, y otros servicios del sistema que no son necesarios en un ambiente embebido. Linux para los dispositivos embebidos comenzó con el 45 soporte del kernel y el compilador para los microprocesadores más populares de 32 bits: x86, ARM, PowerPC, MIPS y SH. Y luego continuó con la aparición de diferentes distribuciones de Linux con soporte para características específicas de los sistemas embebidos. DOS Es un sistema operativo que hay que conocer porque sigue estando en vigor gracias a su estabilidad ya que se desarrollaba en paralelo con la tecnología de Intel e IBM y porque es un sistema operativo muy simple, monousuario y monotarea. En otras palabras, DOS sólo ejecuta un programa cada vez Java para sistemas embebidos. La tecnología Java es cada vez más utilizada en sistemas embebidos avanzados, debido a sus capacidades inherentes de soporte de red, optimización de dispositivos y procesado de datos. GESTIÓN DE MEMORIA AUXILIAR DE UN SISTEMAS OPERATIVOS EMBEBIDOS La memoria auxiliar (llamada también memoria física o memoria externa) que almacena información a largo plazo, incluso después de apagar el equipo. La memoria auxiliar corresponde a los dispositivos magnéticos de almacenamiento como por ejemplo el disco duro, dispositivos ópticos de almacenamiento como los CD-ROM y DVD-ROM, y a las memorias de sólo lectura. SISTEMA DE ARCHIVOS (ZFS). ZFS, es el sistema de archivos dinámico del sistema operativo Solaris. Con 16 millones de millones más de capacidad que los sistemas de archivos 64-bit existentes, ZFS virtualmente es el único sistema de archivos con capacidad de almacenamiento prácticamente ilimitada, lo que hace de Solaris el mejor de la industria para el almacenamiento de datos. SISTEMAS OPERATIVOS CE Windows CE fue introducido en un conjunto de productos de PC de mano en el año 1996, pero posteriormente se transformó en un sistema operativo embebido altamente configurable. Entre sus ventajas se encuentran que incluye un subconjunto del API Win32 enfocado a los servicios que comúnmente se necesitan, así como una optimización en el consumo de energía. En este sistema 46 cuando se habla de tamaño, se refiere a la cantidad de memoria y de almacenamiento necesario para albergar al sistema. Características Windows CE da un soporte bastante completo a las características más avanzadas que encontramos en computadores empotrados, tanto de los procesadores como de otros elementos hardware. Es muy modular La API de Windows CE está pensada para facilitar la portabilidad con los sistemas operativos Windows para SSPG. Plataforma Windows CE soporta más de 160 modelos de procesadores, pertenecientes a 5 tipos de arquitecturas distintas: ARM, MIPS, PowerPC, SH y x86 (modo protegido). Son procesadores con una serie de características esenciales para este SO: SISTEMAS OPERATIVOS TIEMPO REAL Un proceso o tarea de tiempo real es el que se ejecuta en conexión con algún proceso, función o conjunto de sucesos externos al sistema informático y que debe cumplir uno o más plazos para interactuar en forma correcta y eficiente con el entorno exterior. Características Pequeño tamaño (con una mínima funcionalidad asociada) Cambios de contexto rápidos Capacidad para responder rápidamente a interrupciones externas Multitarea con herramientas de comunicación entre procesos, como semáforos y señales 47 COMPONENTES DE UN SISTEMA EMBEBIDO Un sistema embebido en principio estaría formando por un microprocesador y un software que se ejecute sobre este. Sin embargo este software necesitara sin duda un lugar donde poder guardarse para luego ser ejecutado por el procesador. Esto podría tomar la forma de memoria RAM o ROM, todo sistema embebido necesitara en alguna medida una cierta cantidad de memoria, la cual puede incluso encontrarse dentro del mismo chip del procesador. PROCESO DE INSTALACIÓN Los pasos necesarios para la instalación de los sistemas embebidos son: 1. Conocer la arquitectura hardware del dispositivo. 2. Configurar el kernel incluyendo los controladores para esos dispositivos y eliminar lo que no sirve. 3. Crear el script de configuración y ejecución de la aplicación embebida. 4. Configurar y compilar la busybox incluyendo la aplicación y el script. 5. Compilar el kernel 6. Prueba de ejecución GESTIÓN DE MEMORIA Cualquiera de las funcionalidades de los sistemas embebidos están compuestas de tres aspectos: procesamiento, almacenamiento y comunicación. El procesamiento es la transformación de los datos, el almacenamiento es la retención de los datos para su posterior uso, y la comunicación es la transferencia de los datos. Cada uno de estos aspectos debe ser implementado. Se usan procesadores para el procesamiento, memoria para el almacenamiento, y buses para la comunicación Memoria real La memoria real o principal es en donde son ejecutados los programas y procesos de una computadora y es el espacio real que existe en memoria para que se ejecuten los procesos. Por lo general esta memoria es de mayor costo que la memoria secundaria, pero el acceso a la información contenida en ella es de más rápido acceso. Solo la memoria cache es más rápida que la principal, pero su costo es a su vez mayor. 48 SOPORTE A TIEMPO REAL Un sistema embebido complejo puede utilizar un sistema operativo como apoyo para la ejecución de sus programas, sobre todo cuando se requiere la ejecución simultánea de los mismos. Cuando se utiliza un sistema operativo lo más probable es que se tenga que tratar de un sistema operativo de tiempo real (RTOS). ANÁLISIS COMPARATIVO CON LINUX Y WINDOWS 7. Windows ce presenta un sistema dividió en 220modulos, cada uno dividido en varios componentes, los cuales son ROMables y comprimibles, ademas soporta cinco procesadores ARM/StrongARM, MIPS, PPC, SuperH, y x86 y un sobconjunto de la API Win 32, en cuanto a conectividad cuenta con el ActiveSync, que es la sincronización activa netre el PC de sobremesa y el dispositivo CE. Y también posse el remote API, un control remoto del dispositivo desde una aplicación en el PC. En cuanto a Linux sabemos que es un sistema libre, cualquiera lo puede usar, modificar y descubrir, es además muy estable y es difícil que se quede colgado, los servidores que lo usan pueden funcionar durante meses sin parar, es extremadamente seguro, tiene varios sistemas de protección y no existe virus para Linux. Ahora bien si hablamos de Windows 7 sabemos que pertenece a Microsoft, única compañía que lo puede modificar, las licencias son demasiado costosas, es poco estable, es común verse obligado a reiniciar el sistema, los servidores no admiten más allá de un par de semanas sin reiniciar, además de ser muy poco seguro y para el cual existen miles de virus que vulneran el sistema, solo lee y escribe sus propios sistemas de archivos y presenta incompatibilidades entre algunas de sus versiones. 49 CONCLUSIONES El control del usuario es generalmente mucho mayor en un sistema operativo en tiempo real que en un sistema operativo ordinario. En sistema operativo típico que no sea en tiempo real, el usuario no tiene control sobre la función de planificación del sistema operativo. En un sistema en tiempo real resulta esencial permitir al usuario un control preciso sobre la prioridad de las tareas. A diferencia de los sistemas operativos convencionales, la mayoría de los sistemas operativos embebidos están enfocados a un CPU simple, que usualmente no tiene MMU. Además el resto del sistema tiene memoria limitada, poco o ningún espacio en disco; así que usualmente no usan memoria virtual. Los sistemas operativos embebidos y de tiempo real han venido evolucionando de forma constante y presentando día tras días nuevos beneficios para su uso, otorgando mayor capacidad de almacenamiento, mayor rapidez y mejor desempeño. 50 OBSERVACIONES Los sistemas Linux embebido y QNX no soportan paginación, esto quiere decir que los datos, texto y pila comparten un espacio contiguo de memoria. Esto implica que no existe protección a nivel de memoria, por ejemplo, la pila podría crecer hasta ocupar el espacio de texto o datos; o un proceso podría leer o escribir datos de otro proceso. Para las personas que quieran entender de forma clara el funcionamiento de un sistema operativo embebido, primero deben estudiar como algunas implementaciones realizan el manejo de abstracciones básicas del sistema, de lo contrario les dificultara el entendimiento de estos sistemas operativos embebidos. Una particularidad de los sistemas embebidos es que son un todo con las aplicaciones que ejecutan, lo que quiere decir que en muchos casos no es posible instalar en ellos ningún tipo de software adicional. 51 BIBLIOGRAFIA Asi son los sitemas operativos de cajeros, consultada el 18 de octubre de 2012 URL: http://onsoftware.softonic.com/sistemasembebidos-y-usos-cotidianos PDF Sistemas Embebidos y Sistemas Operativos Embebidos, universidad central de Venezuela, autor: David Perez. Consultado el 17 de octubre del 2012 Sistema embebido, consultado el 18 de octubre de 2012 URL: http://es.wikipedia.org/wiki/Sistema_embebido Sistemas de tiempo real y empotrado, consultado el 17 de octubre de 2012URL:http://es.scribd.com/doc/32547554/46/Windows-CEcaracteristicas Sistemas embebidos, consultado el 25 de octubre de 2012 URL: http://server-die.alc.upv.es/asignaturas/PAEEES/2005-06/A07%20 %20Sistemas%20Embebidos.pdf Bitácora sobre GNU/Linux y software libre: Sistemas operativos embebidos, consultado 19 de octubre de 2012 URL:http://gnujavier.blogspot.com/2011/06/sistemas-operativosembebidos.html 52