TRABAJO DE COMPILACIÓN BIBLIOGRÁFICA SISTEMAS OPERATIVOS Carlos Duvan López Monsalve 806528 German Alonso Trujillo Franco 906552 Jose Daniel Perez Rodriguez Presentado a : Carlos Hernán Gòmez SISTEMAS OPERATIVOS UNIVERSIDAD NACIONAL MANIZALES 2009 1 ÌNDICE A. Introducción……………………………………………….. 4 B. Historia……………………………………………………… 5 C. Descripción de los Sistemas Operativos……………… 8 D. Sistemas Operativos Embebidos……………………….. 8 Sistemas Operativos CE…………………………………. 11 1. Sistema Operativo Windows CE i. Presentación………………………………………………………… 14 ii. Estructura y Componentes del sistema…………………………… 16 iii. Plataformas sobre las que trabaja…………………………………. 21 iv. Instalación…………………………………………………………….. v. Gestión de procesos y del procesador…………………………….. 24 vi. Gestión de memoria…………………………………………………. 26 vii. Gestión de memoria auxiliar………………………………………… 31 viii. Gestión de entrada y salida…………………………………………. 33 ix. Gestión de comunicaciones y seguridad………………………….. 34 x. Soporte a tiempo real………………………………………………… 37 xi. Análisis comparativo con Linux y Windows XP……………………. 38 xii. Otros aspectos………………………………………………………... 22 49 2. Sistemas Operativos Embebidos i. Presentación………………………………………………………… 51 ii. Estructura y Componentes del sistema…………………………… 52 iii. Plataformas sobre las que trabaja…………………………………. 59 iv. Instalación…………………………………………………………….. 61 2 v. Gestión de procesos y del procesador…………………………….. 63 vi. Gestión de memoria…………………………………………………. 66 vii. Gestión de memoria auxiliar………………………………………… 69 viii. Gestión de entrada y salida…………………………………………. 70 ix. Gestión de comunicaciones y seguridad………………………….. 71 x. Soporte a tiempo real………………………………………………… 72 xi. Análisis comparativo con Linux y Windows XP……………………. 75 xii. Otros aspectos………………………………………………………... 76 3 A. INTRODUCCIÓN Por los dispositivos a los que va enfocado, y las funcionalidades de estos, no se trata de Sistemas Operativos comunes donde se exigen unos requisitos técnicos mínimos y a partir de ahí, podíamos tener un equipo con mejores o peores prestaciones, pero siempre con las mismas funcionalidades. Ya que todos los dispositivos tienen una arquitectura de hardware idéntica. Desde el punto de vista de hardware como de software, pues algunos servirán para controlar un horno de microondas o un cepillo de dientes. Mientras que otros, serán prácticamente ordenadores personales, pero de reducidas prestaciones y con una interfaz simplificada. Los hallaremos con pantallas de todos los tamaños y colores, e incluso táctiles, algunos con botones, otros con teclados, algunos se tendrán que poder atar a una muñeca y otros deberán viajar por el espacio. Por estos y otros motivos que iremos viendo a lo largo de este documento veremos los sistemas operativos con una arquitectura modular y una gran compatibilidad con el hardware que hay en el mercado. Algo que consigue gracias al sistema de drivers ofrecido, así como sus capacidades multiprocesador y soporte para 64bits. Con un núcleo muy robusto y potente, sobretodo administrando la memoria y manejando los procesos e hilos de ejecución utilizando prioridades, para así poder trabajar en tiempo real, un requisito que para algunos dispositivos empotrados es completamente indispensable, como por ejemplo un sistema de frenado automático para un automóvil. Por otro lado, los sistemas operativos al trabajar sobre dispositivos móviles que normalmente se alimentarán por batería, deberá administrar bien la energía para ofrecer una buena autonomía a la vez que proporciona una buena conectividad y una correcta administración de redes. Por eso es muy importante facilitar el desarrollo tanto del propio sistema operativo como de las aplicaciones de este, o al menos esto parece pensar la gente de Microsoft, que ofrece facilidades nunca vistas con este objetivo. 4 B. HISTORIA 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. 5 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 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 mas 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. 6 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 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 embebidos se encuentran disponibles a cada comento 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. 7 C .Descripción de los Sistemas Operativos D. 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. Se refieren a los dispositivos, instrumentos o las grandes estructuras de ingeniería / sistemas que son capaces de tratar una o varias tareas preestablecidas. El equipo de control todo es construido o en "incrustados" en el dispositivo. Teléfonos móviles y asistentes digitales personales (PDA) son ejemplos de dispositivos con sistemas embebidos. Ambos realizan un determinado número de tareas que son controladas por una computadora incorporada en el sistema. Sistemas de guía inercial utilizado para la navegación aérea o como parte del paquete de la orientación de los misiles y bombas inteligentes, son ejemplos de instrumentos con sistemas embebidos. Un sistema de control de tráfico (que controla a distancia los semáforos, sin necesidad de intervención humana) es un ejemplo de una gran estructura con una ingeniería de sistemas embebidos. En verdad, la línea entre "incrustados" los sistemas y los sistemas de propósito general (que puede o no contener un sistema embebido) se está convirtiendo en borrosa a medida que la tecnología avanza. Características de los Sistemas Embebidos La principal característica de un sistema embebido es que se supone que manejar unas simples tareas, a pesar de los pasos involucrados en la manipulación o el cumplimiento de esa tarea puede ser tan complejo como cualquier programa de ordenador. Un controlador de videojuego, por ejemplo, se puede decir que tienen tareas simples - y cargar el juego permiten al jugador controlar a través de comandos introducidos a través del auricular. En verdad, sin embargo, un juego (los juegos más recientes, especialmente construido para la X-box o PS3) pasa por una serie de medidas y acciones que requieren la mayor cantidad de poder de procesamiento como un equipo. 8 Entre las características de los modernos sistemas embebidos son Interfaces de Usuario Sistemas simples que se derivan de Funcionalidad limitada Plataformas de CPU con microprocesadores o microcontroladores Plataformas Linux 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. Windows CE. 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. 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. Dos 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 9 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? Java 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 10 Sistemas operativos CE Windows CE 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. 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 Es un sistema operacional vigoroso, en tiempo real, para el desarrollo ágil de dispositivos de ultima generación conectados, inteligentes y compactos. Éste incluye el software necesario para crear dispositivos basados en el Windows 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. Características Windows CE es un ejemplo típico de sistema operativo orientado a computadores empotrados y aplicaciones de tiempo real. En SSEETR son especialmente interesantes características: Se ha portado a más de 160 modelos de microcontroladores de 32 y 64 bits. Estos modelos están entre los más avanzados y con mejores prestaciones entre los procesadores para SSEETR. 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: control avanzado de alimentación, multitarea, manejo de memoria virtual, discos de estado sólido, dispositivos multimedia, conexiones inalámbricas, etc. Se ha portado a más de 160 modelos de microcontroladores de 32 y 64 bits. Estos modelos están entre los más avanzados y con mejores 11 prestaciones entre los procesadores para SSEETR. 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: control avanzado de alimentación, multitarea, manejo de memoria virtual, discos de estado sólido, dispositivos multimedia, conexiones inalámbricas, etc. Es muy modular. Disponemos de más de 200 componentes que permiten ajustar los servicios que da el sistema operativo al hardware de la plataforma (memoria disponible, tipo de memoria, dispositivos de entrada/salida, etc.) y a las necesidades de las aplicaciones. La API de Windows CE está pensada para facilitar la portabilidad con los sistemas operativos Windows para SSPG. En teoría, es compatible con la API win32: las llamadas a sistema operativo desde una aplicación se harían de la misma forma, independientemente del sistema operativo que estemos usando Plataforma Windows CE. Todo SOTR impone unos requerimientos mínimos sobre el hardware donde ejecuta. Los más importantes son el tipo de procesador y la cantidad de memoria. 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). Una lista completa y actualizada puede encontrarse en [WCELP]. Son procesadores con una serie de características esenciales para este SO: Pueden ejecutar código de 32 bits (es decir, son capaces de manejar datos y direcciones de 32 bits de forma efectiva) Tienen soporte de multitarea. Tienen unidad de manejo de memoria (MMU). Los puntos anteriores son comunes a prácticamente todos los de 32 bits (y algunos de 16). Sin embargo, no es tan habitual encontrar MMU en un microcontrolador. Windows CE no puede ejecuta en microcontroladores sin MMM pues usa memoria virtual paginada. 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 12 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 Sistemas Operativos Tiempo Real Un sistema operativo de tiempo real 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 Usado típicamente para aplicaciones integradas, normalmente tiene las siguientes características: 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 Procedimiento concurrente Interfaz hardware Tiempo de reacción antes de los eventos Arquitectura distribuida Bases de datos 13 SISTEMA OPERATIVO WINDOWS CE Presentación. Windows CE es el sistema operativo de Microsoft incrustado modular de tiempo real para dispositivos móviles de 32-bits inteligentes y conectados. Windows CE combina la compatibilidad y los ping a servicios de aplicación avanzados de Windows con soporte para múltiples arquitecturas de CPU y opciones incluidas de comunicación y redes para proporcionar una fundación abierta para crear una variedad de productos. Windows CE impulsa a los dispositivos electrónicos del cliente, terminales Web, dispositivos de acceso a Internet, controladores industriales especializados, computadoras de bolsillo, dispositivos de comunicación incrustados e incluso consolas de video juegos como fue en el caso de la Sega Dreamcast (1997 - 2001) con procesador SH4 de 128 Bits que ya con un sistema operativo propio, incluía compatibilidad con los kits para desarrollo de software de Windows CE. Esta plataforma modular permite a los desarrolladores crear software para que la nueva generación de dispositivos móviles de 32-bits se integre con Windows e Internet. Windows CE no es un subconjunto de Windows XP, o de Windows NT, sino que fue desarrollado a base de nuevas arquitecturas y una nueva plataforma de desarrollo. Aun así mantiene cierta conexión con sus hermanos. Windows CE tiene sus propias APIs para desarrollo, y necesita sus propios drivers para el hardware con el cual va a interactuar. Windows CE no es un sinónimo de Windows XP en forma pequeña, incrustada o modular. Windows CE también ha permitido la creación de un sistema denominado AutoPC , que consiste en un PC empotrado en un automóvil y que va ubicado donde normalmente va una radio. De esta manera permite controlar la radio, el reproductor de CD y revisar el correo electrónico. Windows CE también permite la creación de aplicaciones en tiempo real. 14 La última versión del Windows CE actualmente es Windows Mobile 6.1, Upgrade de Windows Mobile 6.0, sucesor de Windows Mobile 5.0, y sirve tanto para Pocket PC (PDA) como para SmartPhone. Cabe destacar que este sistema operativo es el único producto de Microsoft que se distribuye junto con el código fuente, y usa una licencia llamada Shared Source, así pues permite al usuario final modificar el código fuente sin notificar al propietario. Justo cuando los programadores se estaban acostumbrando a Windows 9x y Windows NT, Microsoft ha agregado un nuevo hermano: Windows CE. Sin embargo este nuevo integrante de la familia Windows tiene un objetivo especial. En los últimos años se ha visto que Windows 95 y Windows 98 se dedican a entregar compatibilidad con las aplicaciones y hardware existentes, mientras intentan entregar nuevas características como la multitarea. El objetivo de Windows NT es convertirse a largo plazo en el mejor sistema operativo de empresa. Sin embargo, Windows CE tiene otro objetivo: 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. Mientras se desarrollaba Windows CE se le dio el nombre de Pegasus y junto a él se estaba diseñando un nuevo dispositivo, que tendría más tarde a Windows CE como sistema operativo. A este nuevo dispositivo se le llamó Handheld PC (HPC) o PC de bolsillo. Es así como el HPC sería la primera de muchas plataformas en aceptar el uso de Windows CE. La anterior figura muestra un HPC. Windows CE también funciona con otros dispositivos denominados Palm-size PC o "PC del porte de la palma", que son más pequeños que los HPC y que carecen de teclado, reemplazado por un reconocimiento de un sistema de tacto y un panel de entrada que aparece en pantalla. Los dispositivos para Windows CE se sirven de baterías para poder durar 20 horas con uso continuo o una semana si el uso es discontinuo. Como una regla general se puede decir que las máquinas Windows CE tiene baterías con vida más corta. A diferencia de Windows 9x o NT, el sistema operativo Windows CE no tiene que ser reiniciado cada vez que el usuario lo desea utilizar. De hecho, se pueden configurar las máquinas para que se reemprendan instantáneamente a la respuesta al input del usuario, y el sistema vuelve al estado justo antes de apagarse. 15 El sistema operativo no viene en discos, ni en CD-ROM sino que lo encontraremos en una pequeña tarjeta que se inserta en un HPC o en un Palm-size PC. Estructura y Componentes del sistema 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. 16 OAL y Administración de Poder. El OAL permite a los diseñadores adaptarse a su plataforma hardware y proveer funciones de administración de poder específicas. Windows CE no requiere un estructura de interrupciones o una proyección de memoria estándar. En cambio, los diseñadores escriben pequeñas rutinas de servicio de interrupciones en la capa OAL de Windows CE que permiten que el sistema operativo se ejecute un cualquier configuración de hardware. La administración de poder incluye la características "encendido instantáneo" permitiendo que los dispositivos Windows CE sean apagado y luego encendidos instantáneamente si el dispositivo tiene RAM no volátil (respaldada con baterías). Drivers y Servicios de PC Card. Los dispositivos de Windows CE pueden contener dos tipos de drivers de dispositivos como drivers incorporados para el hardware que está siempre presente en dispositivo como el teclado en un HPC, y drivers instalables en tiempo de ejecución para periféricos que pueden agregarse. Windows CE 1.01 directamente soporta varios tipos de dispositivos, tales como teclados, mouse, paneles de tacto, puertos seriales, módems, pantallas, slots de PC Card, procesadores de audio, parlantes, puertos paralelos, disco ATA o unidades de "flash card". Los diseñadores pueden fácilmente agregar nuevos tipos de dispositivos. Para todos los drivers de dispositivos soportados, Windows CE tiene un conjunto bien definido de DDI o Device Driver Interfaces (Interfaces del Driver del Dispositivo) para los cuales los diseñadores escriben. Los drivers de dispositivos corren como procesos normales en el sistema, con acceso a todos los servicios del sistema operativo. Esto permite que las rutinas de servicio de interrupción que típicamente "despiertan" a los drivers de dispositivos sean simples y rápidos: el hilo del driver hace la mayoría del trabajo. Windows CE provee un subconjunto de servicios de PC Card y de Sockets de Windows. Permitiendo que PC Cards tales como tarjetas de módems inalámbricos o tarjetas de flash memory sean utilizados. 17 Kernel. El Kernel de Windows CE fue escrito específicamente para dispositivos "no PC". Implementa el modelo de proceso, hilo y memoria virtual de Win32. Al igual que Windows NT y Windows 9x, presenta un sistema multitarea con desalojo basado en prioridad, también provee una rica variedad de primitivas de sincronización, incluyendo semáforos, mutex y eventos. El Kernel de Windows soporta la ejecución de programas en ROM o RAM. También implementa paginación bajo demanda para las aplicaciones que se almacenan comprimidas y/o se almacenan en un medio que soporta ejecución en el lugar (como lo es para RAM o ROM). El kernel tiene una rutina de bajo nivel de servicios de interrupción y baja latencia de hilo (a los hilos se les puede asignar la CPU y hace cambio de contexto en menos de 100 microsegundos en un HPC a 33 Mhz). Esto permite que Windows CE sea utilizado en muchos tipos de sistemas de tiempo real. USER y GDI. Los componentes de USER y GDI de Windows CE proveen la funcionalidad básica para la interfaz de usuario, si la hay. En Windows CE 1.01, una pantalla de escala de grises es soportada por GDI. USER de Windows CE exporta las mismas características de interfaz de usuario de Win32 presentes en la versión USER de Windows NT/9x. Las principales características son: administración de eventos, controles de interfaz de usuario, cajas de diálogo, comunicación entre procesos, entre otras. Se incluye soporte para UNICODE. Almacén de Objetos. Los componentes de Almacén de Objetos de Windows CE proveen almacenamiento persistente para aplicaciones y datos. Los datos persistentes están usualmente contenidos en memoria no volátil, tales como RAM respaldada por baterías o flash memory. Cuando se utiliza RAM que también se usa para las aplicaciones que se ejecutan, el diseñador puede ajustar la cantidad de RAM utilizada por el Almacén de Objetos (los usuarios también pueden realizar esto). El Almacén de Objeto está compuesto de tres clases de componentes: sistemas de archivos, el registro y bases de datos. En Windows CE 1.01, existen tres tipos de sistemas de archivos: un sistema de archivos 18 basado en ROM, un sistema de archivos basado en RAM, y un sistema de archivo FAT para las unidades de disco. La funcionalidad de bases de datos de Windows CE no tienen un corolario como en Windows NT o Windows 95. La base de datos provee almacén, acceso y ordenamiento de objeto. Se utilizó inicialmente en el HPC para cosas como libro de dirección y apuntes. Una característica clave de las bases de datos, el sistema de archivos y el registro es que ellos están protegidos contra un "reset" imprevisto. Si ocurre un "reset" durante una escritura al almacén de objeto, Windows CE asegura que el almacén no estará corrupto, ya sea completando la operación cuando el sistema se reinicie o retrocediendo al último estado estable conocido antes de la interrupción. TCP/IP, PPP, y IrDA. Los protocolos de comunicaciones de Windows CE 1.01 proveen conectividad a los PCs de escritorio Windows, Internet, y a otros dispositivos Windows CE. La pila de protocolo de comunicaciones para las conexiones es el protocolo estándar de Internet, TCP/IP, acompañado de PPP. TCP/IP y PPP se utilizan cuando se aplica la característica "Conexión Directa mediante Cable" entre PCs Windows, así como también ahora se utiliza para comunicar un dispositivo Windows CE con Internet a través de un módem o una LAN. Windows CE también incluye un estándar infrarrojo (IRDA2). APIs. Windows CE exporta un subconjunto de Win32 API. Dentro de este subconjunto se incluyen sobre 500 de las más utilizadas API3s de Win32. Aplicaciones como Pocket Word y Pocket Excel han sido escritas con este subconjunto. Junto con los protocolos de comunicaciones, Windows CE provee varias de las APIs familiares para comunicaciones de Windows, incluyendo Windows Sockets, TAPI4 y Unimodem. Conectividad Remota Para posibilitar aplicaciones de conectividad, Windows CE exporta RAPI o Remote Access API (API de Acceso Remoto) a un PC con Windows a través de Sockets. El PC a su vez importa esa API y puede manipular al dispositivo HPC. Una aplicación en un PC, como el Explorador de HPC, utiliza RAPI para manipular el almacén de objeto del dispositivo Windows CE. Los archivos puede mover hacia y desde el dispositivo Windows CE, las bases de datos pueden actualizarse, el registro puede ser modificado y revisado a través de la conexión. Mediante la utilización de TAPI, esta conexión puede realizarse remotamente a través de una línea telefónica. 19 Internet Explorer para Windows CE La conectividad a Internet es un módulo de Windows CE. Aunque está destinado paradispositivos con pantalla, los componentes de Internet Explorer pueden utilizarse para conseguir información a través de Internet aún sin la navegación de las páginas de WWW, no es un requerimiento. Shell. Windows CE 1.xx viene con la ya familiar interficie de Windows, como lo muestra la anterior figura. Pero, muchos sistemas empotrados (embedded) que utilizan Windows CE no tendrán este shell, o quizás no tendrán ningún shell (o ni siquiera pantalla). Sin embargo, para aquellos sistemas que necesitan una "look" Windows, el shell de Windows CE provee una experiencia similar a la de Windows NT 4.0 y Windows 9x. Windows CE está disponible en una variedad de idiomas. Requerimientos de Hardware para Windows CE 1.x Como mínimo Windows CE debe tener un procesador, memoria y un reloj de tiempo real. Realmente no se necesita técnicamente nada más, pero obviamente un número importante de otros dispositivos tendrá un número de periféricos. Los procesadores soportados, son el NEC 4100 MIPS, Phillips 3900 MIPS y el HITACHI SH3. La memoria necesaria para Windows CE es totalmente dependiente de los componentes que el diseñador del sistema seleccionó. Por ejemplo, un sistema de bajo nivel que sólo utiliza el kernel, la pila de comunicaciones requiere menos de la mitad de un megabyte de ROM y 256 KB de RAM. Los componentes en un Windows CE de un HPC, con todos los componentes de Windows CE activos toma 2 MB de ROM, y al arranque ya consume 512 KB de RAM. Pero cuando se agregan Word y Excel y resto de las aplicaciones se requieren 4 MB de ROM y 2 MB de RAM, con un 1 MB destinado al almacenamiento de datos. 20 Plataformas Todo SOTR impone unos requerimientos mínimos sobre el hardware donde ejecuta. Los más importantes son el tipo de procesador y la cantidad de memoria. 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). Una lista completa y actualizada puede encontrarse en [WCELP]. Son procesadores con una serie de características esenciales para este SO: Pueden ejecutar código de 32 bits (es decir, son capaces de manejar datos y direcciones de 32 bits de forma efectiva) Tienen soporte de multitarea. Tienen unidad de manejo de memoria (MMU). Los puntos anteriores son comunes a prácticamente todos los de 32 bits (y algunos de 16). Sin embargo, no es tan habitual encontrar MMU en un microcontrolador. Windows CE no puede ejecuta en microcontroladores sin MMM pues usa memoria virtual paginada. 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 21 Instalación. La gran variedad de hardware sobre el que funcionará Windows CE requiere de algo más que los drivers que incluye, que no son pocos, junto con interfaces específicos para flujos de datos y drivers de muestra como base para los desarrolladores. Por lo que Windows CE 6.0 además acepta tanto drivers por capas ( MDD y PDD) como monolíticos. MDD significa Model Device Driver. Estos drivers, se basan en modelos, pues contienen un código que es común para todos los drivers de un determinado tipo. Llaman a funciones PDD para acceder al hardware, conectándose a la capa PDD para definir las funciones DDSI, que el MDD espera llamar de la capa PDD. Los MDD también proporciona al SO las funciones DDI ( Device Driver Interface) y pueden conectarse con múltiples PDDs sin requerir cambios en la mayoría de los casos, pues en caso de no ser así tendríamos problemas para migrarlos a futuras versiones. Los MDDs pueden contener cualquier IST. PDD significa Platform Dependent Driver. El código es específico para una plataforma concreta. Así que dependiendo de la plataforma de hardware, deberán ser modificados. Están específicamente diseñados para trabajar con implementaciones de los MDDs. Al contrario que los drivers monolíticos exponen las funciones DDSI que llama el MDD. Los Drivers monolíticos son una combinación de MDD y PDD en un solo driver. Ahora que ya sabemos cómo es cada tipo de driver debemos aprender a utilizarlos convenientemente. Usando drivers por capas sólo tendremos que modificar el PDD, pero un driver por capas añade sobrecarga a las llamadas del sistema, porque los MDD tienen que realizar llamadas a los PDD. Por su lado, drivers monolíticos optimizan el rendimiento, ya que al estar todos en uno no se tienen que realizar llamadas entre ellos. Así que, además de ser más simples, también son más eficientes. Pero como contrapartida los drivers monolíticos son más difíciles de migrar a futuras versiones de Windows CE, porqué este sistema operativo utiliza en su mayor parte drivers divididos en MDD y PDD. En todo caso ya sea usando drivers monolíticos o por capas podemos basar la implementación en el código fuente de los drivers de muestra que se incluyen en Windows CE que en alguna ocasión nos ahorrará un buen trabajo. 22 El Device Manager, hace el papel de director de orquestra, es el componente responsable de manipular los drivers de dispositivos y sus interfaces, decidiendo en todo momento qué drivers cargar y utilizando el registro del SO para encontrarlos. El Device Manager de Windows CE tiene la misma configuración básica que el de Windows de escritorio, pero con un espacio mucho más limitado que debe tenerse muy en cuenta a la hora de añadir entradas. • Devcore: funcionalidad del núcleo de Device Drivers. • Iorm: Proporciona la funcionalidad de entrada/salida y por lo tanto es un componente obligatorio que no nos podemos ahorrar. • Pmif y nopmif: Proporciona la interfaz para los puntos de entrada de los DLLs Además del Device manager también cargan drivers el FIle System y el GWES. Finalmente, si no hemos tenido suficiente con los drivers expuestos hasta ahora, también existe el User Mode Driver que nos permite cargar un driver intermedio en modo usuario. Estos drivers no pueden acceder directamente al hardware pero pueden dar más estabilidad en algunos tipos de driver. Además, hay un reflector en el Kernel que permite que un driver en modo usuario trabaje como si fuera en modo Kernel. En la figura 17 tenemos un pequeño esquema del funcionamiento de los drivers en Windows CE 6.0. 23 Gestión de procesos y del procesador Windows CE, soporta una gran variedad de procesadores para ser implementado en el máximo número de dispositivos que pueda haber, haya o habrá en el mercado: soporta ARM, X86, PowerPC, MIPS, Xscale y Renesas SuperH,en el año 2002 representaban un total del 65% de las ventas de procesadores a nivel mundial. También debemos tener en cuenta que es normal encontrarnos con dispositivos empotrados que disponen de más de un procesador y que además no suelen ser iguales, al contrario de lo que pasa con los PCs, donde es frecuente el uso de multiprocesador (o multinúcleo), pero donde siempre son copias idénticas los unos de los otros. El sistema de gestión de procesos e hilos de ejecución de Windows CE , es originario de Windows NT. Así que su principal característica es la de permitir a un proceso, la ejecución de más de un hilo de ejecución al mismo tiempo, ahorrando así memoria del sistema. Afortunadamente no todo es de los tiempos de Windows NT de Windows CE, proporciona 2 GB de memoria virtual por proceso, hasta un máximo de 32000 procesos y un número máximo de hilos de ejecución, que dependerá de la memoria física instalada en el sistema. Para controlar estos estados y ofrecer el preciado tiempo de respuesta acotado que nos permite decir que Windows CE es un sistema operativo Hard Real Time. Windows CE tiene una programación preemtiva para los procesos e hilos de ejecución que permite “jugar” con 256 niveles de prioridad, que van del 0 al 255 y donde el 0 es el más prioritario y se ejecutará hasta terminar por completo. El resto de niveles, implicaran a los procesos tener que competir para ser ejecutados, ya que cada prioridad por encima de 0 tiene asignado un tiempo de ejecución limitado y variable de entre 1ms i 100ms, y en caso de empate entre prioridades, se desempata aleatoriamente a favor de uno de los procesos. Las prioridades del 0 al 96 están reservadas para drivers en tiempo real alto, muy exigentes. Del 97 al 152 para los drivers por defecto de dispositivos basados en Windows CE. Del 153 al 247 para drivers en tiempo real bajo (poco exigentes ). Y del 248 al 255 para prioridades que no requieran tiempo real. En la figura 13 podemos ver un ejemplo donde tenemos 3 hilos de ejecución: 24 thread 1 prioridad 0 y thread 2 y 3 misma prioridad y se puede ver el comportamiento del sistema ante este escenario. Seguramente, más de uno se haya percatado que por muchos niveles de prioridad y tiempos de ejecución variables que implemente Windows CE , se puede dar el caso, que un hilo de ejecución con menor prioridad, bloquee un recurso que necesita uno de mayor prioridad, de forma que se invertiría la prioridad asignada a estos hilos originalmente. Para solucionar este problema, Windows CE permite al hilo de ejecución con menor prioridad, heredar la prioridad del de mayor prioridad hasta que libere el recurso bloqueado. Además, el programador de hilos de ejecución, puede cambiar su programación para adaptar el resto de hilos de ejecución al nuevo escenario resultante y así evitar nunca indeseable inversión de prioridad. Para que la comunicación entre procesos sea tan completa como lo es la gestión de prioridades, Windows CE soporta tanto el modelo de memoria compartida como el de paso por mensajes, pudiéndose compartir pilas en la memoria entre varios procesos. También hay mapeo de los archivos en memoria y se pueden usar punteros para acceder directamente a ella. Windows CE utiliza MSMQ (Microsoft Message Queing) para las comunicaciones entre diferentes servicios, que es un componente de Windows que permite enviar y recibir mensajes entre aplicaciones o servicios. Y por si hay que poner un poco de orden, para la gestión de interrupciones el Kernel dispone del Interrupt Service Handler (ISH) que es el encargado de decidir que ISR llamar en cada momento. El uso de Interrups Service Routine (ISR) junto con los Interrup Service Thread (IST) permite administrar las tareas de forma óptima y acotar la latencia de las interrupciones Donde el ISR manipula las tareas básicas de interrupción iniciando las IST y esperando de nuevo nuevas ISR independientemente de la IST llamada. 25 Gestión de memoria La arquitectura de memoria de Windows CE consta de RAM y ROM. El ROM contiene el núcleo del sistema y un conjunto de aplicaciones, como explorador, calculadora etc. El sistema siempre comprime los archivos en la memoria RAM, generalmente con una razón 2 a1. Windows CE en un sistema basado en la ROM de las tiendas de todo el sistema operativo, así como las aplicaciones que vienen con el sistema. Si el programa módulo no está comprimido, los programas basados en ROM se ejecutan en el lugar. Si la ROM basado en el módulo se comprime, se descomprime y luego paginado en la RAM. Todos lectura / escritura de datos se ha cargado en la memoria RAM. De compresión en la ROM es controlado por el OEM. Ejecución de programas directamente desde ROM guarda el programa de RAM y reduce el tiempo necesario para iniciar una aplicación, porque el programa no tiene que ser copiado en la memoria RAM antes de que sea lanzado. Programas que están en ROM, pero no figuran en el objeto o en un almacén de memoria flash de almacenamiento de la tarjeta no se ejecutan en el lugar, son paginado en la RAM y luego ejecutados. Dependiendo de la OEM y las opciones en un controlador específico basado en Windows CE plataforma, este módulo puede ser paginado en la demanda, una página puede ser llevado en un momento en, o de todo el módulo se puede cargar en ROM a la vez. La memoria RAM en un dispositivo Windows CE, se divide en dos áreas: el almacén de objetos y la memoria del programa. El objeto se parece a un almacén permanente, virtual del disco RAM. Datos en el almacén de objetos se mantiene cuando el sistema está suspendido, y dispositivos de copia de seguridad suele tener un suministro de energía para la memoria RAM, para preservar los datos si la principal fuente de alimentación se interrumpe 26 temporalmente. Cuando se reanudó la operación del sistema busca un objeto creado previamente almacenar en la memoria RAM y si uno lo utiliza se encuentra. El resto de la RAM se dedica a la memoria del programa. La memoria del programa funciona como la memoria RAM en las tiendas personales computersit pilas y pilas para las aplicaciones que se estén ejecutando. Eficaz con la versión 3.0, el tamaño máximo de la memoria RAM del sistema de archivos es de 256 MB, con un tamaño máximo de 32 MB para un solo archivo. En las versiones anteriores de Windows CE, el límite de la memoria RAM y un único sistema de archivo es de 16 MB. También eficaz con la versión 3.0, el número máximo de objetos en la tienda de objetos se ha aumentado de 65.536 a aproximadamente 4.000.000. El límite entre el objeto y el programa de almacenar la memoria RAM es móvil. El usuario puede mover la línea divisoria entre el objeto y el programa de almacén de memoria RAM utilizando el Sistema de Control Panel de si la plataforma ofrece esta opción. Windows CE en algunas plataformas basadas en el sistema, bajo condiciones de baja memoria, el usuario puede pedir permiso para tomar algún objeto almacenar memoria RAM para su uso como programa de RAM para satisfacer una solicitud de la memoria RAM de necesidades. 27 El marcado "CE" Modelo de memoria Así, mientras que la memoria está todavía dividida en núcleo de 2 GB y 2 GB de espacio en espacio de usuario En CE , cada proceso se da de 1 GB de memoria virtual por sí mismo. Esto se puede hacer, porque todo el proceso de 1 GB de espacio de memoria se enciende cuando los procesos de cambio. Dado que los procesos ya no comparten el espacio de usuario con los demás, el número máximo de procesos en ejecución ya no está limitado por el número de franjas horarias proceso puede meter en el espacio de usuario. Si bien la comercialización CE habla de la posibilidad de ejecutar más de 32.000 procesos, la verdadero límite es establecido por la memoria física disponible. La cantidad de memoria física que tiene que ser asignados a cada proceso en ejecución causará que queda sin memoria mucho antes de llegar a 32k procesos. Pero, vamos a decir el nuevo modelo de núcleo y memoria ya no es el factor limitante cuando se trata de procesos que se están ejecutando. Espacio de usuario Ahora, echemos un vistazo más de cerca la forma en que la memoria virtual está dividido en CE. Comenzando en la parte inferior, hasta llegar a la marca de 1 GB, se encuentra el espacio de proceso mencionado anteriormente. En la marca de 1 GB, nos encontramos con 512 Mb para el uso de dll: s, y por encima, tenemos 256Mb de memoria RAM respaldado archivos mapeados. En la parte superior, tenemos 255Mb de un sistema compartido montón, dejando a 1 Mb de protección unmapped espacio entre el espacio de usuario y el espacio del núcleo. Ahora, el proceso de 1 GB de espacio en el mapa el proceso de datos y código ejecutable, su máquina virtual de las asignaciones y cualquier archivo de copia de archivos de memoria asignada. Dll en el área, la dll: s tendrán la misma cartografía a través de procesos para la optimización razones. Mientras que el código compartido a través de las páginas son los procesos, los datos que las páginas en este ámbito serán únicas páginas físicas para cada proceso. La dll: s están cargadas desde la parte inferior y crecer, a diferencia de la pila de estilo, de arriba hacia abajo de carga utilizados en CE 5 y anteriores. 28 La copia de la memoria RAM asignada archivo se asigna la zona en un lugar fijo en el espacio de usuario. Esto se hace por razones de compatibilidad hacia atrás-. Por último, el sistema compartido montón es un área donde OS componentes y procesos pueden intercambiar datos de manera segura. Si bien OS componentes tienen permisos de lectura y escritura a esta área, los procesos que ejecutan en el espacio de usuario se puede dar sólo lectura-, o acceso de lectura y escritura. Espacio del kernel El modelo de memoria para el núcleo espacial también ha cambiado: Si bien parece bastante familiar-las dos zonas de 512 Mb de cache-cache y un acceso a la memoria física no han cambiado, y la trampa, el espacio es todavía allí en la parte superior de la pila, hay algunos cambios importantes que debe se señaló. En primer lugar hay ahora una zona de 128Mb de espacio para el núcleo XIP DLL: s directamente por encima de la marca de 1 GB, y por encima de 128Mb que está reservado para uso de los objetos de la tienda. Inmediatamente por encima de este, hay dos ranuras de 256Mb de memoria virtual del núcleo. Ahora, ¿qué son XIP dll: s y la tienda de objetos del núcleo haciendo en el espacio? Bueno, MS din't parada con sólo cambiar el modelo de memoria virtual, que también han revisado el sistema operativo trazado; en CE, la mayoría de los conductores, el sistema de archivos, y se ejecuta en el núcleo gwes espacio! Digo la mayoría de los conductores, porque en realidad todavía se puede optar por ejecutar los conductores en el espacio de usuario. Hay un par de razones para el traslado de los tres servidores en el núcleo. Una de las razones es para minimizar gastos generales que participan en este proceso entre llamadas. Si se está ejecutando en el espacio del núcleo, hay menos proceso de intercambio para hacer frente a si funcionó en el espacio de usuario. Veremos más de cerca la estructura y el nuevo núcleo os diseño en otro artículo. 29 Puntero en la clasificación CE 6 De 1 GB de memoria virtual para cada proceso y 512Mb de dlls no es ciertamente una mala cosa, pero el abandono de la ranura de la arquitectura implica también una mayor sobrecarga en determinadas operaciones. Si bien el cambio y en el proceso "mapa de memoria virtual puede parecer bastante recursos como tarea para el núcleo, este interruptor es en realidad una operación bastante simple. La verdadera pena de rendimiento se produce cuando las necesidades de datos para tener acceso a más de proceso de las fronteras. Digamos que usted desea pasar un puntero a una cantidad de datos a un servicio de su aplicación. El servicio se ejecuta en otro proceso en el espacio de usuario. Si se pasa un puntero a un servicio en CE , el núcleo comprueba automáticamente que el llamado proceso de los permisos a la memoria señalado y, a continuación, remaps el puntero a la convocatoria del proceso de ranura. Esto es realmente hacer con algunos triviales aritmética sobre el puntero, ya que todos los procesos que son accesibles en el espacio de usuario en todo momento en CE . En CE sin embargo, las cosas se vuelve más complicado porque los procesos se desplazan dentro y fuera del espacio de usuario por el núcleo. Sólo se están ejecutando actualmente el proceso de la memoria es asignada en el espacio de usuario. Considere el servicio de ejemplo anterior, pero aplicado a la CE . En este caso, el puntero pasa al servicio sólo es válido cuando el proceso que pasó en realidad es el puntero de ejecución y, por tanto, se carga en el espacio de usuario. Tan pronto como se enciende otro proceso, el puntero se convierte en inválido. Para manejar esto, la CE del núcleo implementa un mecanismo denominado clasificación. Cuando clasificación, el núcleo realmente puede necesitar mapa parte de la memoria en el proceso que llama en el espacio de memoria del proceso de servidor. Entonces, porque hay trabajos de averiguar cómo marshall un puntero, que tiene un impacto en el rendimiento. Pero, ese es el precio que paga por tener 1 GB de espacio de proceso y el apoyo a un número prácticamente ilimitado de procesos. Si bien muchas de las cosas es difícil automáticamente manejado por el núcleo, hay situaciones en que lo que tiene que hacer usted mismo la clasificación. 30 Gestión de memoria auxiliar. Memoria juega un papel vital en el desarrollo de aplicaciones. Generalmente los programadores tienden a pasar por alto este ámbito debido a la enorme capacidad de memoria del día de hoy PCs de escritorio. Dispositivos de Windows CE en general, tendrá mucho menos RAM que un PC de escritorio. Además, no tienen unidades de disco u otros dispositivos de almacenamiento masivo. Desarrolladores de aplicaciones, por lo tanto, siempre debe tener en cuenta esta limitación, mientras que el desarrollo de aplicaciones para Windows CE. Windows CE dispositivos tienen generalmente una memoria RAM y ROM de una sección. ROM contiene toda la información decidida por los OEM, que incluye el sistema operativo y las aplicaciones de otro tipo de apoyo como Pocket Word, Pocket Excel, etc que viene integrado con el sistema operativo. RAM ha llamado otras dos divisiones del Programa Memoria & Almacenamiento de memoria (la tienda de objetos). La memoria del programa se utiliza principalmente para la ejecución de las solicitudes, generalmente almacena los montones y montones de una aplicación. La memoria del programa podría ser comparado con la RAM en los PCs de todas las aplicaciones que generalmente se cargan para su ejecución. La única excepción aquí (Windows CE) es que los programas basados en ROM se ejecutan en el lugar sin ser cargado en la sección de RAM (memoria de programa) el consiguiente ahorro de valioso espacio de memoria RAM y, al mismo tiempo, la aceleración de la velocidad de ejecución también. De memoria de almacenamiento es equivalente a la disco RAM (también conocida como RAM) que se utiliza generalmente como una simulación de disco duro. El único inconveniente es la persistencia con que, en el caso de nuestro H / P, C y P / PC de copia de seguridad son proporcionados por las pilas creando así una ilusión de almacenamiento permanente. Por otra parte, unidades de memoria RAM en nuestro PC de escritorio no son persistentes, ya que los datos que obran en su poder por lo general pierde si no hay poder. Incluso en el modo suspendido de dispositivos de Windows CE, los datos de memoria de almacenamiento son persistentes debido a la disponibilidad de baterías de respaldo. El mismo es el caso durante el dispositivo de restablecimiento demasiado. Durante el restablecimiento, en su caso copia anterior del objeto tienda está disponible generalmente es utilizado por los dispositivos de Windows CE a fin de evitar cualquier pérdida de datos. La memoria de almacenamiento de objetos o de la tienda es el lugar para el titular del sistema de archivos de Windows CE, y el Registro de Bases de Datos. Todos estos objetos tienen sus respectivos API para acceder a ellos. Todos estos son casi completo de las API a excepción de la ausencia de algunas características. Estos incluyen la falta de funciones que, de forma directa volúmenes de referencia en el caso de sistema de ficheros, la falta de atributos de seguridad con las funciones que corresponden a la Secretaría y la falta de las características encontradas en las bases de datos de hoy en día. La base de datos es único para la API de Windows CE y se utiliza principalmente para el almacenamiento de datos simples, como listas de direcciones o las carpetas de correo. La cantidad de memoria destinada a la memoria del programa y el 31 objeto es almacenar manualmente ajustable por el usuario del dispositivo. Todas las aplicaciones que desarrollamos en general son almacenados en el objeto de almacenar y cargar en la memoria del programa durante la ejecución. En lo que respecta a la aplicación se refiere al desarrollo de Windows CE proporciona casi toda la memoria de gestión de funciones de Win32. Su apoyo incluye la asignación de memoria virtual, locales y montones separados y también los archivos de la memoria asignada. Windows CE apoya el paginado de memoria virtual del sistema de gestión tal como se encuentra en el otro Win32s. En virtud de este sistema se asigna cada una de las páginas, ya sea 1024 bytes o 4096 bytes, tal como se decidió por los fabricantes. Toda la plana de 4 GB de espacio de direcciones de Windows CE se divide entre los diferentes tipos de memoria con más de la mitad están ocupados por la memoria virtual (espacio de direcciones virtuales). Esto es más segregada en 33 franjas horarias con 32MB dedicados a cada una de las solicitudes individuales. Las diferentes aplicaciones están protegidas de interferir unos con otros mediante la alteración página protecciones. Una ilustración gráfica de la arquitectura de memoria de Windows CE se ofrece a continuación. Otra cosa interesante acerca de Windows CE de apoyo para la memoria virtual es su capacidad para admitir esta función incluso con la ausencia de dispositivos de almacenamiento secundario como los discos duros en los dispositivos basados en Windows CE. En nuestro tradicional PC de escritorio con otros Win32s, los discos duros generalmente se utilizan durante el intercambio de páginas de la memoria secundaria a la primaria de la memoria. Windows CE, pero con todos estos dispositivos de intercambio tiene lugar en el área de memoria RAM con lo que se asemeja a nuestra época antigua tradición RAM. Por lo tanto el uso eficaz de un tipo de memoria con su correspondiente función de gestión de memoria ayuda a evitar situaciones de baja memoria. En Windows CE , existen tres tipos de sistemas de archivos: un sistema de archivos basado en ROM, un sistema de archivos basado en RAM, y un sistema de archivo FAT para las unidades de disco. La funcionalidad de bases de datos de Windows CE no tienen un corolario en Windows NT o Windows 95. La base de datos provee almacén, acceso y ordenamiento de objeto. Se utilizó inicialmente en el HPC para cosas como libro de dirección y apuntes. Una característica clave de las bases de datos es el sistema de archivos y el registro en que ellos están protegidos contra un "reset" imprevisto (como uno causado por una interrupción de poder en sistemas como un HPC que tienen una batería de respaldo). Si ocurre un "reset" durante una escritura al almacén de objeto, Windows CE asegura que el almacén no estará corrupto, ya sea completando la operación cuando el sistema se reinicie o retrocediendo al último estado estable conocido antes de la interrupción. 32 Gestión de entrada y salida En general, los dispositivos empotrados son dispositivos pequeños de capacidades limitadas, por lo que es habitual encontrarnos con que se tienen que comunicar, además de con el dispositivo al que van empotrados, a algún servidor o en el caso de dispositivos de uso personal, a Internet para sincronizar con las aplicaciones de escritorio y comunicarse con un PC de sobremesa. Windows CE 6.0 incluye una suite completa del protocolo TCP/IP para garantizar la comunicación con Internet y redes inhalámbricas, junto con los programas habituales para su administración y gestión como son ping, ipconfig, netstat, tracert, ping route, ipv6). Paralelamente podemos establecer comunicaciones a través de IR, de muy corto alcanze. O incluso conectar con redes token ring aparte de Ethernet. Además, ofrece soporte para las APIs Winsock (las aplicaciones acceden a la pila TCP/IP a través de esta API) , WinInet ( manipula todas las comunicaciones entre las aplicaciones y WinSock), NetBios (interfaz para acceder a servicios de red) y WinHTTP ( interfaz de alto nivel para el protocolo http 1.1). Finalmente como interfaces físicas disponemos de red, FIR, puerto serie y puerto IR. En cuanto a servicios, dispone de cliente DHCP y DNS. Y ofrece DNS extended WQuerying and update, que nos permite mantener actualizado el nombre de nuestro dispositivo en un servidor DNS. También soporta Dial-up con RAS (Remote Access service) y PPP ( point to point protocol). Puede conectar con una impresora de red e incluye un agente SNMP para su gestión remota y monitorización. Y por supuesto soporte para WAN. En la figura 21 podemos ver la arquitectura de red y TCP/IP de Windows CE 6.0 con una cómoda separación por capas que nos permite ver de qué forma establece las comunicaciones el sistema operativo. 33 Gestión de comunicaciones y seguridad Windows CE soporta una amplia variedad de dispositivos y protocolos de comunicaciones. Desde los más simples, como funciones para manejar un puerto serie, hasta protocolos de red complejos como TCP/IP. Son módulos opcionales. Se incluyen en el sistema operativo en función del hardware de comunicaciones disponible en la plataforma y las necesidades de conectividad de las aplicaciones. Las herramientas de desarrollo de Windows CE comunican con la plataforma target mediante un programa en el host llamado platform manager, El platform manager permite seleccionar el target con el que comunicaremos y se encarga de todas las tareas necesarias para conectar, enviar y recibir datos, y ejecutar en la máquina remota los programas que interactúan con las herramientas de desarrollo, como puede ser, por ejemplo, el agente de depuración en el target. PM implementa el nivel de aplicación en las comunicaciones host-target. Por debajo de él, puede usar uno de tres protocolos de transporte: ActiveSync. Está muy extendido en PDAs, pues lo utiliza ActiveSync, el programa de conexión entre PDA y PC1[9]. También es el que usaremos en las plataformas de prácticas. TCP/IP. También muy extendido, tiene la ventaja de que no necesita interfase gráfico2[10], por lo que puede usarse en dispositivos sin pantalla (headless). KITL (Kernel Independent Transport Layer) es el protocolo más sencillo de todos, por lo que se suele usar cuando no existen los protocolos anteriores. Estos protocolos gestionan las operaciones de conexión y transmisión de datos entre host y target, por lo que al menos uno de ellos debe estar integrado en el sistema operativo de la plataforma. Windows Embedded CE 6.0 proporciona las mismas herramientas de la comunicación como en las versiones anteriores de Windows CE. Estas herramientas incluyen la memoria RAM respaldado mapeados archivos punto a 34 punto las colas de mensajes, y los viejos clásicos, como el mensaje WM_COPYDATA. ¿Qué no está disponible en Windows Embedded CE es la "ranura" de comunicación trucos. Existen algunas aplicaciones que utilizan la API MapCallerToProcess y SetProcPermissions para poder leer y escribir de memoria a través de límites proceso. Estas dos API, junto con algunas otras funciones que dependen de la ranura de modelo, ya no son pertinentes. Mientras que se exportan desde Coredll.dll de compatibilidad, el no tiene ningún efecto en Windows Embedded CE . Una solución para las aplicaciones que utilizan SetProcPermissions es utilizar ReadProcessMemory y WriteProcessMemory, que se apoya en CE . Otro cambio en Windows Embedded CE es que las aplicaciones pueden copiar ya no se ocupa de un proceso a otro. CE utiliza manejar tablas separadas para cada proceso, a fin de manejar los valores son independientes para cada proceso. Para evitar este problema, las aplicaciones deben utilizar el API para DuplicateHandle clonar un asa para su uso en otro proceso. En general, bien escrito aplicaciones para Windows CE (bien escrito, lo que significa que no use trucos basados en la ranura) funcionará sin modificaciones en Windows Embedded CE 6.0. Para asegurarse de que su aplicación se ejecutará, puede utilizar una herramienta de las pruebas de compatibilidad que se entregará en el Windows Embedded CE Platform Builder. Seguridad Una característica estándar de Windows CE desde 2,12 ha sido el "módulo de confianza" método de la seguridad. En este sistema, los módulos (EXEs y DLL) se comprueba durante el proceso de carga. El OEM código puede entonces optar por la carga del sistema, ya sea en el módulo "de confianza" o "no confiable" modo. Si el módulo se ejecuta en "modo de confianza", puede llamar a cualquier API en el sistema. Código de módulos que son "no confiable" no se puede llamar a un pequeño conjunto de API y el sistema de crítica no puede establecer cualquier hilo a una prioridad superior a la octava de la prioridad más baja. Además, el OEM puede decir al sistema de no cargar un módulo. 35 Windows CE 5.0 y antes también tiene un modo especial cuando el sistema funciona todo el código en modo kernel, en vez de ejecutar el kernel en modo de núcleo y el resto del sistema en modo de usuario. La ventaja de correr en "modo kernel todos" es el rendimiento con la desventaja de ser de seguridad, ya que el código del núcleo y espacio de memoria sea accesible a todas las aplicaciones. Windows Embedded CE elimina con tanto "todos en modo de núcleo" y el modelo de confianza de la seguridad. Todos modo kernel no es necesario porque la mayoría de las ganancias de rendimiento "todo modo kernel" son adquiridas por el nuevo núcleo de la arquitectura. El modelo de confianza va en previsión de la posibilidad de portar el escritorio de la Lista de control de acceso (ACL) de seguridad a una futura versión de Windows CE. Para Windows Embedded CE 6.0, no hay modelo de confianza, ni tampoco existe la seguridad de ACL. 36 Soporte a tiempo real Las aplicaciones en tiempo real son cada vez más importante para un número de segmentos de negocio. Siemens Corporation, un jugador en el negocio electrónico y la tecnología, evaluó el Microsoft Windows CE para su sistema operativo en tiempo real de las capacidades. Diversas propiedades de este sistema operativo, como su base de capacidades multimedia, su interfaz gráfica opcional de apoyo, y la disponibilidad de Microsoft Win32 interfaz de programación de aplicaciones, la convierten en una elección natural para aplicaciones embebidas en Siemens. Sin embargo, su comportamiento en tiempo real todavía debe ser evaluada para determinar su utilidad para el día de hoy las exigentes aplicaciones 37 Análisis comparativo con Linux En el Protocolo de Internet versión 6 (IPv6) Grupo de Investigación, con sede en el Departamento de Computación de la Universidad de Lancaster, Reino Unido, estamos dispuestos a seleccionar como plataforma de investigación que el producto esté más estrechamente alineados a nuestras necesidades. El grupo ha utilizado con éxito tanto el Linux y plataformas de escritorio de Windows en el pasado, y sigue a abrazar estas plataformas y otros como la base para la investigación. Sin embargo, Windows CE ha sido adoptada por una proporción cada vez mayor del grupo de investigación ya que nuestro principal plataforma de investigación. Hay muchas maneras en las que Linux y sistemas operativos Windows CE sobresalir, pero tampoco es perfecto. En este artículo, tratamos de explicar cómo los puntos fuertes y débiles de ambas plataformas han influido en nuestros investigadores. El Grupo de Investigación de IPv6 tiene una fuerte base de investigación en sistemas móviles. Con el fin de consolidar nuestra posición, estamos destinados a pasar de escritorio basado en aplicaciones y hacia los sistemas embebidos y móviles. Aplicaciones que muestran el abanico de tecnologías de bajo nivel en el que tenemos la experiencia son mucho más impresionante si se puede demostrar en los dispositivos móviles. En nuestro caso, la naturaleza de las tecnologías de demostrada por nuestras aplicaciones hacen que sea necesario para la reducción de la plataforma de apoyo a arquitecturas de hardware y las últimas tecnologías inalámbricas. La disponibilidad y compatibilidad de hardware, junto con el apoyo, tanto de software como de recursos humanos, sigue siendo un factor muy importante en nuestra elección. En este punto, debemos establecer los parámetros para esta discusión. Estamos interesados principalmente en las comunicaciones móviles y sistemas incorporados en nuestra investigación. Es, raro ver Linux fuera del dominio de las máquinas de escritorio y servidor. Sin embargo, Linux puede ser instalado en los sistemas integrados proporcionan la arquitectura de hardware está abierto a la comunidad de desarrollo (por ejemplo, una cabeza de PC). Es mucho más raro encontrar Linux en un dispositivo móvil como un PDA, porque es a menudo este hardware diseñado específicamente para su sistema operativo, y la creación de un nuevo dispositivo de hardware requiere una cierta cantidad de incentivo comercial. Es importante destacar que en este artículo estamos comparando Windows CE con móviles y embebidos encarnaciones de Linux. Es justo decir que esos sabores de Linux no comparten todas las ventajas de las variedades de escritorio. 38 Una de las mayores debilidades de Windows CE es que sólo admite un conjunto limitado de diseños de hardware. Si bien la lista de hardware compatible actualmente es cada vez mayor, iteraciones anteriores del sistema operativo nos obligó a seleccionar nuestro hardware de una lista corta. Los dispositivos periféricos y no admite más sacarlo de la caja están apoyados sólo por el fabricante. Estar a la merced de los fabricantes de controladores adecuados para una determinada versión del sistema operativo significa que un nuevo driver a menudo tenía que ser tratado en la próxima gran actualización, y que suelen encontrar mayores de hardware ya no se apoya. Creemos que una arquitectura abierta para dispositivos empotrados, Linux que han sobresalido en esta situación. La gran comunidad de desarrolladores se han producido, sin duda, los conductores de apoyo a los pocos dispositivos y periféricos que no se apoya fuera de la caja. Sin embargo, la mayoría de dispositivos de Windows CE se basan en arquitecturas de hardware diseñado específicamente para Windows CE y algunos de los peores-los dispositivos de apoyo comercial sufren de la falta de controladores. Por el contrario, son muy pocos los dispositivos móviles han sido diseñados específicamente para Linux. Además, la comunidad de fuente abierta no puede apoyar la mayoría de los conductores para los dispositivos móviles debido a su arquitectura cerrada. Una versión de Linux se ha puesto a disposición de la generación anterior de Compaq iPAQ. Sin embargo, esto sólo fue posible porque Compaq cooperado en la producción de una capa de abstracción de hardware para Linux. En caso de que los dispositivos móviles se refiere, los usuarios de Linux están tan a merced de los fabricantes de apoyo como los usuarios de Windows CE. Para arquitecturas abiertas, es evidente que la disponibilidad de controladores de código abierto da una clara ventaja para los desarrolladores de Linux. La extensa biblioteca de esos conductores proporciona una base sólida a partir de la cual los desarrolladores pueden crear controladores personalizados conductores. Windows CE proporciona un número de referencia de los conductores, que son lo suficientemente generales como finalidad cubrir una amplia variedad de hardware, sin embargo los controladores para hardware específico son generalmente de código cerrado, lo que dificulta la aplicación de simples modificaciones. Por ejemplo, utilizando Windows CE, hemos querido modificar el comportamiento de un conductor de una popular marca de tarjeta de 802,11. Sin embargo, la ausencia de un interfaz estándar en la versión de Windows CE que se utilizan y la falta de código fuente para el conductor nos impidió descubrir la propiedad de la interfaz que es necesario. En el pasado, Linux y Windows CE han tenido la reputación de estar detrás de la vanguardia en lo que respecta al apoyo a los últimos avances tecnológicos. En el caso de Linux, los proveedores de hardware, se liberarían los controladores de Windows con su hardware, soporte de Linux, pero inevitablemente se retrase varios meses hasta que el fabricante o un tercero producido conductores. Del mismo modo, Windows CE es frecuentemente pasado por alto en favor de apoyar a sus hermanos más famosos de escritorio. 39 En ambos casos, la situación está mejorando rápidamente. Los fabricantes y vendedores de fuera de los componentes de Linux ahora a tomar en serio y el desarrollo de Linux y los controladores de Windows de forma paralela en la gran mayoría de los casos, y las últimas versiones de Windows CE apoyo muchas nuevas tecnologías. Tras la breve inspección, Linux parece tener la ventaja en el apoyo a las nuevas tecnologías, sobre la base de que las distribuciones de Linux se liberan con mayor frecuencia que las versiones de Windows CE. Sin embargo, teniendo en cuenta las versiones que ofrece como parte de los programas beta de Windows CE, Linux y Windows CE son bastante aún. Una complicación adicional que se refiere a los dispositivos móviles es el tiempo necesario para llevar a las empresas a crear reales fuera de la plataforma de referencia de dispositivos de versiones de los sistemas operativos. En el momento de la escritura, la última versión de Windows CE se ejecuta en un dispositivo con el comercial Pocket PC 3.0 es factor de forma, pero la versión actual de Windows CE es de 4,2. Sin embargo, hay más actualizada disponible en los dispositivos de otros factores de forma. Esta es tal vez menos de un problema para los usuarios de Linux, porque la tecnología y el conocimiento existe en la comunidad de fuente abierta en la memoria flash actual arquitectura abierta con los dispositivos actuales versiones del kernel de Linux. Si bien una auto-instalación de Linux para el hardware de una PC de bolsillo existentes quita la dependencia de una sola empresa para las actualizaciones, se nos asusta el hecho de que la falta de un claro líder de desarrollo nos podría dejar sin información sobre la disponibilidad de actualizaciones y la intención de desarrollo de controladores y aplicaciones específicas. Además, el número de dispositivos basado en Windows CE supera ahora las basadas en Linux, por lo tanto, optar por Windows CE nos ha permitido diversificar el riesgo de apoyar el sistema operativo. Si un fabricante de hardware para Windows CE dejó de apoyar, el sistema operativo todavía sería útil, ya que sería la prestación de apoyo de otros fabricantes. Con el código fuente está libremente disponible para Linux, y las recientes medidas tomadas por Microsoft para abrir la fuente de Windows CE a las universidades, nunca hemos tenido una mayor libertad para trabajar con ambas plataformas. En Lancaster, tenemos una serie de proyectos de investigación y las ideas que sólo sería posible si modificamos la plataforma de investigación a ampliar las capacidades del sistema operativo. En este sentido, creemos que hace de Windows CE para la plataforma superior. El código fuente disponible para el kernel de Linux y paquetes, es decir, por regla general, difíciles de recoger y editar. Es bastante poco comentados, en todo caso, y la edición del código fuente del núcleo de nivel se ve complicada por tener que aprender un API en el espacio de usuario familiarizado llamadas. Dicho esto, los comentarios en el código fuente se complementan con los documentos HOWTO y similares guías y libros, mientras que hay pocas guías disponibles para Windows CE. En el pasado, sin embargo, hemos encontrado que Linux HOWTOs tienden a referirse al código que se muchas versiones de la fecha. 40 El tamaño de la base de código de Linux también es desalentadora. Por el contrario, la base de código fuente de Windows CE es pequeño. A pesar de la creciente a un ritmo impresionante de versión a versión, en general es muy bien comentado y organizado de manera que es posible encontrar rápidamente el código en el que tenemos un interés sin poseer grandes conocimientos de la estructura del código. Las deficiencias de Windows CE en el soporte de hardware de trabajo como una ventaja, porque el resultado es limitar el tamaño de la fuente base. A nivel de sistema de código en Windows CE puede utilizar el mismo API de código de aplicación, por lo que la curva de aprendizaje para modificar la fuente superficial. En Lancaster, nos consideramos un pionero en la adopción de nuevas tecnologías para enseñar a nuestros estudiantes. Fuimos los primeros adoptantes de Java, C # y Microsoft. NET. Todos nuestros estudiantes están actualmente enseñan a utilizar Microsoft API y entornos. Dado que la mayoría de los nuevos investigadores son contratados de postgrado de nuestro programa de pregrado, creemos que es una ventaja considerable que nuestros estudiantes pueden migrar al uso de Windows CE con relativa facilidad a partir de la API de Win32. Como una adición a este argumento, los de nuestros investigadores que provienen de un fondo de Linux son ligeramente perjudicados por ello. En cuanto a los recursos de programación de aplicaciones, creemos que Linux y Windows CE son bien presentado y apoyado. La cultura de código abierto de desarrolladores de Linux crea un superior de recursos de los diversos ejemplos de código, mientras que el relativamente inmaduros comunidad de desarrollo de Windows CE es menos diversa. Sin embargo, ambas plataformas sufren el problema de que tienden a permitir que los desarrolladores de código a ser obsoletos y no se puede confiar en que siga apoyando y mantener código. Linux en particular, sufre de código legado y no como consecuencia de la madurez de su desarrollo. No obstante, hemos tenido problemas similares para obtener apoyo código de Windows CE. Una de las ventajas de formar parte de la universidad de origen compartida programa para Windows CE es que nos da acceso a un punto central de contacto para cualquier problema que pueda tener. Sin embargo, hemos encontrado en el pasado que el programa puede ser un obstáculo para nuestras actividades ya que no fueron capaces de compartir nuestro código con otras universidades. Hasta cierto punto, ya no estamos en esta situación, y aunque no podemos tener una política de puertas abiertas para el código de algunos de nuestros proyectos, creemos que esto puede incluso beneficiar a la comunidad de desarrollo a largo plazo mediante el fomento de activos participación en el programa fuente compartida. Es difícil para nosotros, para comparar las características y las bibliotecas a disposición de nuestros Linux y los desarrolladores de Windows CE, ya que cada tiene su propia plataforma para ofrecer. Por ejemplo, Windows CE tiene más apoyo a la madurez. NET, lo que nos permite crear portátiles más 41 investigación implementaciones y, más importante aún, la rápida de prototipos de nuestra tecnología. Este apoyo es proporcionado por Windows CE en la forma de. NET Compact Framework, lo que aún nos impresiona con el grado en que se las arregla para ocultar las habituales preocupaciones y limitaciones de desarrollo para sistemas embebidos y móviles. Sin embargo, Linux tiene una mayor madurez modelo de seguridad y proporciona sandboxing nativos de los procesos, lo cual es difícil de lograr, utilizando Windows CE. Es cierto que Linux tiene más características y las bibliotecas de Windows CE, debido a su biblioteca de fuente abierta de software. Esta riqueza de características con frecuencia reduce el tiempo de desarrollo de algunos tipos de aplicación. Sin embargo, ninguna cantidad y características de las bibliotecas pueden hacer para un sistema operativo que no fue diseñado para operar en sistemas con recursos limitados. La mayoría de los de código abierto catálogo hace ningún esfuerzo especial para controlar el uso de memoria y simplemente supone grandes cantidades de memoria virtual. Windows CE fue diseñado con las limitaciones en mente. Proporciona una serie de características que hacen trivial la tarea de crear ligero y de pequeño tamaño implementaciones. La función de desarrollo de Windows CE que inicialmente atrajo nuestra atención, y que nos alienta a seguir utilizando Windows CE como principal plataforma de investigación, es el conjunto de herramientas disponibles. Windows CE aplicaciones se desarrollan utilizando eMbedded Visual C y Platform Builder. Este último es capaz de construir una amplia gama de aplicaciones, controladores y componentes básicos. Ambos entornos dispositivo integrado (IDE) son similares, e integrar la inestimable edición, la construcción, y herramientas de depuración que reducen el tiempo que gastan en desarrollo. Los puntos fuertes de los IDEs son las herramientas de depuración. La interfaz es intuitiva y poderosa. Además de estas herramientas, de Visual Studio. NET se puede utilizar para desarrollar aplicaciones para la plataforma. NET. También nos sentimos alentados por los planes de Microsoft para liberar una versión de Visual Studio que unifica el escritorio de Windows y el desarrollo incorporados en un único IDE. El hecho de que exista una norma medio ambiente apoyados por el grupo de productos del sistema operativo significa que el potencial de la IDE es máxima. Por el contrario, no existe ninguna norma IDE para el desarrollo de Linux, y ciertamente ninguno de los IDEs no oficial que es tan poderosa como Platform Builder. En cambio, nos encontramos con que tendemos a confiar en sí sola colección de compiladores de GNU para el desarrollo de Linux y las otras herramientas disponibles, tales como Proyecto GNU Debugger, tienden a no utilizados. Sin embargo, hemos encontrado que hay una situación de desventaja a tener un único IDE de desarrollo, y es que se convierte en el único punto de fallo. En más de una ocasión cuando se utilizan versiones anteriores de Platform Builder, hemos encontrado errores que nos impidieron avanzar en nuestro 42 trabajo. Es cierto que algunas de estas personas se han debido a nuestra participación en el programa beta, pero si otros instrumentos se han disponible, habría sido capaz de proceder. La diversidad de herramientas disponibles para Linux significa que no se han llevado a cabo por los errores en uno. En resumen, que tenemos y seguir utilizando Linux y Windows CE como plataformas de investigación. Sin embargo, la mayoría de nuestros investigadores a escoger el uso de Windows CE. Aunque Windows CE es deficiente en equipo y ayuda al conductor, su herramienta de apoyo es ejemplar y que sobresale en muchas otras áreas. Linux y Windows CE de desarrollo comunidades sufren problemas similares, pero ofrecen diferentes ventajas. Linux tiene la ventaja de la diversidad y la disponibilidad del código fuente, pero para Windows CE tiene un mucho mejor organizado y comentado compartida paquete fuente disponible. En equidad a los defensores en todo el mundo de Linux, Linux nunca fue construida como un sistema operativo de apoyo a los dispositivos móviles con recursos muy limitados. Creemos que el hecho de que Windows CE fue construido desde cero para este propósito específico, Linux no puede competir con Windows CE en el contexto de dispositivos móviles, y tal vez mayores amenazas provienen de otros competidores en el mismo mercado. 43 Análisis comparativo con Windows XP. Microsoft buques incorporados dos sistemas operativos: Windows CE y Windows XP Embedded, ambos diseñados para su uso en sistemas embebidos. Así que, ¿cómo determinar cuál puede ser apropiada para su dispositivo? En una inspección inicial, Windows CE y Windows XP Embedded pueden parecer similares, ya que ambos componentes son los sistemas operativos, dos interfaces de programación de exponer similares (Win32, MFC, ATL, y el apoyo a la. NET), y ambos exponen similares tecnologías de sistema operativo , que incluyen el apoyo para la creación de redes, navegadores, reproductores multimedia, etc. La elección del sistema operativo se vuelve más fácil, sin embargo, cuando usted comprende el diseño de objetivos de cada sistema operativo. Windows CE se ha diseñado para ser de pequeño tamaño, componentes, sistema operativo de tiempo real que se ejecuta en múltiples arquitecturas de procesador. Windows XP Embedded, por otra parte, puede considerarse una versión de los componentes de Windows XP Professional con el Service Pack 2 adicionales incorporados a habilitar características. Vamos a examinar algunas de las características de ambos sistemas operativos. Ya sabemos que Windows XP Embedded es una versión de los componentes de Windows XP Professional Service Pack 2, el sistema operativo ha sido desglosado en cada uno de los componentes casi 12.000, alrededor de 9.000 los controladores de dispositivo, sistema operativo y 3.000 tecnologías. Usted tiene la habilidad de seleccionar y elegir exactamente qué controladores, servicios y aplicaciones están incluidas en su último sistema operativo embebido de imagen. Si, por ejemplo, no necesita un Reproductor de Windows Media, el Bloc de notas, o Internet Explorer y, a continuación, no es necesario incluir estas características en su imagen del sistema operativo. Tener la capacidad de recoger cada uno de los componentes reduce el tamaño del sistema operativo, y, por supuesto, también reduce la superficie de ataque de código malicioso. Mientras estamos en este asunto, Windows XP Embedded Service Pack 2 tiene todas las actualizaciones de seguridad se encuentran en el SP2 de Windows XP. Esto incluye tener todos los puertos en un sistema cerrado por defecto (excepto HTTP). Un sistema de construcción puede, por supuesto, decidir la apertura de los puertos que se necesitan en su dispositivo. Un promedio en el sistema operativo XP Embedded construir es del orden de unos 40 MB. Esta escala, en función de qué sistema operativo componentes y tecnologías que incluyen en su imagen final. 44 Una de las ventajas de la utilización de Windows XP Embedded en un sistema embebido es la velocidad de desarrollo. Windows XP Embedded-se ejecutan en sistemas basados en un procesador x86 y la arquitectura de hardware de PC, que se entienden muy bien. Esto significa que cualquier Windows 2000 o Windows XP controlador de dispositivo o aplicación puede ejecutarse en Windows XP Embedded sin modificación. El Windows XP Embedded como sistema operativo de los buques una serie de pre-construido de escritorio compatibles con componentes binarios, lo que garantiza la aplicación y de compatibilidad de controladores. El típico ciclo de desarrollo de un dispositivo de Windows XP Embedded es a la primera instantánea del hardware subyacente mediante una herramienta llamada Meta del analizador, que genera un archivo XML que define todos los componentes de hardware se encuentran en su dispositivo de destino. El archivo XML puede luego ser importados en la herramienta de diseño de componentes y se guarda como un componente personalizado que define el hardware del dispositivo. Componente de la herramienta de diseño también puede importar. Archivos INF, que hace fácil para generar componentes de Windows 2000 o Windows XP Controladores de dispositivos. Por último, la herramienta de diseño de componentes también se puede utilizar para crear componentes personalizados, tal vez la definición de un componente de la costumbre o la aplicación de shell. El componente define los archivos, la configuración del Registro, y el sistema operativo de las dependencias para el componente. Una vez que se definen los componentes, pueden ser controlados en el componente de Windows XP Embedded y luego la base de datos utilizada en un diseño embebido. El siguiente paso en el desarrollo de su Windows XP Embedded imagen del sistema operativo es usar la herramienta de diseño Meta. Esta herramienta muestra todas las sistema operativo Windows XP y los controladores y las tecnologías de la habilitación Características Embedded (que se discutirá en breve). Un desarrollador de sistemas, simplemente selecciona los componentes que necesita y los añade a un proyecto de trabajo. Esto puede incluir la definición de componentes de hardware creado por el Analizador de Meta, algunas plantillas de diseño que definen un punto de partida para una serie de categorías de dispositivos, incluidos los basados en Windows Terminal (Thin Client), punto de venta de dispositivos, Set Top Box, etc, y usted también tiene la capacidad para tirar de cada uno de los componentes del catálogo de contenido para añadir a su proyecto. El objetivo de diseño herramienta se ejecutará un análisis de la dependencia en su proyecto de trabajo en tiempo para garantizar que todas las características del sistema operativo se incluyen en la última imagen del sistema operativo. Un ejemplo de esto sería la elección de un desarrollador de. NET Framework para su diseño, agregando su. NET y, a continuación, la construcción de la imagen del sistema operativo - el sistema de diseño no tiene por qué conocer o comprender las dependencias de. NET Framework para construir una imagen del sistema operativo. 45 Ya hemos mencionado que Windows XP Embedded con algunos buques Embedded características específicas, incluyendo la capacidad de arranque y ejecutar Windows XP Embedded desde un CD-ROM, o para arrancar desde los medios de comunicación Flash. En ambos casos, un desarrollador que desea para el tratamiento de los medios de comunicación como de sólo lectura, ya que sólo es compatible con flash a un número limitado de escrituras, y un CDROM, en este arranque de medio ambiente, también de sólo lectura. Barcos de Windows XP Embedded con una reforzada Escribir Filtro componente que intercepta el sistema operativo y la aplicación escribir instrucciones, y, en vez de escrito a los medios de comunicación de arranque, escribe en una caché en memoria en lugar. Esto significa que en el poder hacia abajo, los medios de comunicación no puede ser dañada, y el dispositivo siempre arranca en un estado bueno conocido - añadir a este apoyo para la reanudación de la hibernación de un archivo varias veces, y usted tiene un sólido entorno de arranque que proporciona la electrónica de consumo a nivel en el momento del arranque. Así que ¿cómo comparar Windows XP Embedded con Windows CE? Windows CE se ha diseñado como una pequeña huella, duro en tiempo real, sistema operativo embebido que se ejecuta en múltiples arquitecturas de procesador, que incluye arquitecturas x86, MIPS, ARM, y SH4. Un núcleo de sólo construir es de aproximadamente 200kb, y por supuesto el sistema operativo en función de las escalas de los componentes que incluyen en su diseño. Una configuración típica pasarela residencial que soporta 802.11a/b/g, la administración remota a través de una interfaz basada en la web, y la seguridad sería de menos de 4 MB de tamaño. Una Web totalmente configurado Pad imagen que incluye navegador web, Media Player, Office televidentes, el apoyo a la. NET Compact Framework, y el Explorador de Windows Shell podría estar más cerca de 18MB de tamaño. Hay una serie de diferencias fundamentales entre Windows CE y Windows XP Embedded. En primer lugar, Windows CE es una de 32 bits, Unicode sistema operativo que no es compatible con MS-DOS o Windows 3.x aplicaciones. Asimismo, la arquitectura de Windows CE es diferente de su primo de escritorio. En el escritorio que usted esperaba encontrar tres principales componentes del sistema operativo: Kernel32, GDI32, y User32. Ninguno de estos componentes existen en Windows CE. Sus homólogos puede considerarse Coredll (Kernel32), y GWES, gráficos de ventanas y el subsistema de eventos (se puede pensar en esta como una combinación de GDI32 y User32), lo que significa que incluso simples aplicaciones de escritorio no funciona en Windows CE . Como mínimo, las aplicaciones de escritorio tendría que ser recompilado para que se ejecute en un dispositivo Windows 46 CE, no sólo por las diferencias de arquitectura, sino también porque el dispositivo Windows CE es más que probable que se ejecuta en un procesador de no-x86. Usted puede pensar que Windows CE se limita a correr sólo en mano, baterías de dispositivos tales como los dispositivos Windows Mobile. Si bien es cierto que este es quizás el más visible de envío dispositivo basado en Windows CE, Windows CE y que tiene un gran poder de gestión de historia, que ciertamente no es el caso. Usted puede encontrar ejecutando Windows CE en los sistemas de control industriales, dispositivos de control médico, los robots, venta al por menor de punto de venta de dispositivos, y muchas otras categorías de sistemas embebidos. Windows CE se ha diseñado para ser un duro en tiempo real, sistema operativo embebido interrumpir el apoyo a las latencias en la subserie de diez microsegundos. Esto es más que suficiente para muchos en tiempo real diseños incorporados. Windows CE se entrega con un conjunto de herramientas que pueden utilizarse para configurar, construir y depurar una imagen del sistema operativo embebido. Herramienta de creación de la Plataforma es, en muchos aspectos similar a la de Windows XP Embedded Meta Diseñador herramienta. Un promotor tiene la capacidad para utilizar una Plataforma Wizard (similar a la de Windows XP Embedded plantillas de diseño) para configurar la configuración inicial del sistema operativo, y puede agregar o quitar características de diseño del sistema operativo. Platform Builder también contiene soporte para sistema operativo característica dependencias. Por ejemplo, añadiendo el. NET Compact Framework para un diseño también agregar soporte para el sistema operativo tecnologías. Normalmente encontrar Windows CE ejecuta en el hardware personalizado donde el diseñador busca reducir la factura de los materiales mediante la reducción del tamaño de la imagen del sistema operativo, la potencia del procesador, y el apoyo periféricos, pero al mismo tiempo incluir el apoyo a la tecnologías más recientes del sistema operativo. Este proceso a menudo requiere que Windows CE es "portado" a los nuevos, la costumbre de hardware. Para ayudar en este proceso de portabilidad, Windows CE buques con millones de líneas de código fuente, lo que da la capacidad de examinar la forma en que funciona en Windows CE, y tal vez modificar el comportamiento de la fuente. Facilitar el acceso a la fuente también ayuda con el proceso de portabilidad. Una vez que el sistema operativo Windows CE se construye la imagen, hay una serie de herramientas que pueden ser utilizados para probar o depurar el sistema operativo Windows CE de imagen, incluyendo el código fuente depuradores, monitores de rendimiento y herramientas de perfiles. 47 Hemos examinado brevemente algunos de los aspectos técnicos de Windows CE y Windows XP Embedded, pero ciertamente no termina ahí. Microsoft ofrece versiones de evaluación de Windows CE y Windows XP Embedded como descargas gratuitas en http://www.windowsembeddedkit.com de licencias del sistema operativo no cortar las imágenes en realidad hasta que se empezarán a distribuir los dispositivos, y Microsoft también apoya los sistemas operativos incrustados durante diez años! Quizás es el momento de empezar la evaluación de Windows CE o Windows XP Embedded para su próxima incorporados diseño. 48 Otros aspectos Servicios opcionales: Interfase de usuario/shell. En el soporte de interfase de usuario también encontramos una amplia variedad de módulos opcionales, que refleja perfectamente la variedad existente en los computadores empotrados. Hay que tener en cuenta que la interfase de usuario y el shell pueden ser dos módulos distintos, pues tienen papeles diferentes desde el punto de vista de las aplicaciones. La interfase de usuario permite interaccionar entre usuario y aplicación. El shell se encarga de la interacción entre usuario y sistema operativo. Las opciones más usadas se pueden agrupar dependiendo de si la plataforma dispone o no de pantalla: Solo en plataformas con pantalla. o Consola de comandos. Maneja una pantalla alfanumérica y un teclado. El shell que implementa es equivalente al CMD.EXE de Windows 2000/XP (simplificado). Es la única opción si tenemos una pantalla alfanumérica, aunque también se puede usar en pantallas gráficas. o Interfases basadas en ventanas (GUI: Graphic User Interface). Maneja una pantalla gráfica como dispositivo de salida. Hay más variedad en los dispositivos de entrada: teclado, ratón, pantalla táctil, pulsadores, etc. El shell más habitual es el equivalente al EXPLORER.EXE de Windows 2000/XP. Hay muchos tipos de GUI en Windows CE, dependiendo de la complejidad que se quiera implementar: desde el manejo de ventanas básico hasta soporte para multimedia y juegos (DirectX). o En plataformas sin pantalla. Estos módulos también pueden usarse si tenemos pantalla. o API para manejar leds y pulsadores. Es el nivel más sencillo, aunque con frecuencia las aplicaciones optan por manejar directamente estos elementos. o Consola de comandos por conexión serie. Si redireccionamos la consola a uno de los puertos serie de la plataforma se puede usar la consola de comandos con un emulador de terminal conectado al puerto 49 o Interfase de usuario basado en Web (Web-based user interfase). Es un shell implementado mediante páginas WEB en la máquina target. 50 SISTEMAS OPERATIVOS EMBEBIDOS PRESENTACIÓN 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 esta formada por una combinación de hardware y software mas algunas piezas mecánicas (discos rígidos, por ejemplo). Sin embargo la computadora personal no es diseñada para un uso especifico. Si no que es posible darle muchos usos diferentes. Muchas veces un sistema embebido es un componente de un sistema mucho mas 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 porun 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 mas sencillo modificar una líneas de código al software del sistema embebido que reemplazar todo el circuito integrado. 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 limite de tiempo. Donde ese limite de tiempo tiempo resulta crucial. Un ejemplo claro de un sistema de tiempo real es el control de trafico aéreo. 51 ESTRUCTURA Y COMPONENTES DEL SISTEMA Estructura 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 producido sen 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 interfases seriales sincrónicas, las cuales son muchas veces más lentas que los periféricos empleados en un PC. Como se mostró anteriormente, un sistema embebido debe enfrentar fuertes restricciones de recursos, por tanto normalmente deberá hacer uso de sistemas operativos especiales, denominados de tiempo real (RTOS Real time operating system).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 n 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 lenguaje C, actualmente se han desarrollado algunas máquinas virtuales y otros compiladores que permiten el diseño de programas más complejos. Además se puede encontrar depuradores, simuladores, ases de datos, GUIs, metodologías entre otras herramientas para el diseñoy programación de este tipo de sistemas. 52 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 actuadotes del dispositivo a controlar y todos los recursos complementarios disponibles tiene 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. Arquitectura básica más empleada Microprocesador Es el encargado de realizar las operaciones de cálculo principales del sistema. Ejecuta código para realizar una determinada tarea y dirige el funcionamiento de los demás elementos que le rodean, a modo de director de una orquesta. Memoria En ella se encuentra almacenado el código de los programas que el sistema puede ejecutar así como los datos. Su característica principal es que debe tener un acceso de lectura y escritura lo más rápido posible para que el microprocesador no pierda tiempo en tareas que no son meramente de cálculo. Al ser volátil el sistema requiere de un soporte donde se almacenen los datos incluso sin disponer de alimentación o energía. Caché Memoria más rápida que la principal en la que se almacenan los datos y el código accedido últimamente. Dado que el sistema realiza microtareas, muchas veces repetitivas, la caché hace ahorrar tiempo ya que no hará falta ir a memoria principal si el dato o la instrucción ya se encuentra en la caché. Dado su alto precio tiene un tamaño muy inferior (8 – 512 KB) con respecto a la principal (8 – 256 MB) 53 Disco duro En él la información no es volátil y además puede conseguir capacidades muy elevadas. A diferencia de la memoria que es de estado sólido éste suele ser magnético. Pero su excesivo tamaño a veces lo hace inviable para PCs embebidos, con lo que se requieren soluciones como discos de estado sólido. Existen en el mercado varias soluciones de esta clase (DiskOnChip, CompactFlash, IDE Flash Drive, etc.) con capacidades suficientes para la mayoría de sistemas embebidos (desde 2 hasta mas de 1 GB). El controlador del disco duro de PCs estándar cumple con el estándar IDE y es un chip más de la placa madre. Disco flexible Su función es la de un disco duro pero con discos con capacidades mucho más pequeñas y la ventaja de su portabilidad. Siempre se encuentra en un PC estándar pero no así en un PC embebido. 10 BIOS-ROM BIOS (Basic Input & Output System, sistema básico de entrada y salida) es código que es necesario para inicializar el ordenador y para poner en comunicación los distintos elementos de la placa madre. La ROM (Read Only Memory, memoria de sólo lectura no volátil) es un chip donde se encuentra el código BIOS. CMOS-RAM Es un chip de memoria de lectura y escritura alimentado con una pila donde se almacena el tipo y ubicación de los dispositivos conectados a la placa madre (disco duro, puertos de entrada y salida, etc.). Además contiene un reloj en permanente funcionamiento que ofrece al sistema la fecha y la hora. Chip Set Chip que se encarga de controlar las interrupciones dirigidas al microprocesador, el acceso directo a memoria (DMA) y al bus ISA, además de ofrecer temporizadores, etc. Es frecuente encontrar la CMOS-RAM y el reloj de tiempo real en el interior del Chip Set. 54 PLATAFORMAS 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, 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 55 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 é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. 56 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 autoconfigurarse 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 57 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 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 58 Instalación El proceso a grandes rasgos consiste en: 1. Saber la arquitectura hardware del dispositivo. 2. Configurar el kernel incluyendo los controladores para esos dispositivos y eliminando todo lo que no nos sirva. 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 Conociendo 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 Ya conocemos nuestro hardware. Ahora necesitamos configurar correctamente el kernel para que tenga una huella pequeña pero con toda la funcionalidad requerida. 1. Seleccionar la arquitectura "más cercana/compatible" a la nuestra (Ej. Pentium-4, Pentium II, etc) 2. Deshabilitamos "Enable loadable modules support", pues queremos inscrutar los controladores dentro de la imagen y no depender de módulos externos. 3. Seleccionar el modo apropiativo. ¿nuestro software interactua mucho con el usuario? Si ese el caso necesitamos poca latencia, luego seleccionamos el modo Apropiativo "Preemption Model->Preemptible Kernel. Si por el contrario nuestro sistema procesa transacciones a modo de servidor es conveniente usar "No force preemption". Por defecto el kernel usa el termino medio, Voluntary Preemption. 4. Reloj. Si nuesta aplicación necesita temporización de alta precisión deberemos de activar el High Resolution Timer (si nuestro hardware también es capaz). 5. Dispositivos de bloque. Activar unicamente los controladores SATA/PATA/IDE de nuestro dispositivos. 6. USB. Es habitual habilitar el uso de USB 2.0 y la clase USB HID para poder usar teclados, ratones, etc. Dehabilitamos todo lo demas. 59 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. 8. Video4Linux. Normalmente se deshabilita. 9. Sound. ¿necesitamos sonido? Después de seleccionar los controladores que necesitamos estariamos listos para generar una imagen del kernel "normal". En nuestro caso nos interes 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 debemos especificar un fichero especial que sirve de guía para generar este sistema de archivos. Analicemos el ejemplo que muestra la ayuda de usr/gen_init_cpio. Aplicación embebida El objetivo de generar este kernel es poder correr nuestra aplicación en un sistema embebido. Debemos procurar generar nuestra 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). Compilado pues, lo agregamos a la lista de construcción de imagen la imagen con la correspondiente entrada "file". El fichero init invocará nuestra aplicación al final de la configuración. Compilación del kernel. Con los deberes hechos, ya podemos construir la imagen del kernel de forma habitual ("make") o según nuestros requisitos (compilación cruzada). Si todo ha ido bien, obtendremos nuestra imagen de kernel lista para ser implantada en nuestro sistema embebido. 60 GESTIÓN DE PROCESOS Y DEL PROCESADOR 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 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.). 61 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 aplicación particular. Otra alternativa consiste en el diseño a nivel de PCB consistente en el ensamblado de placas con microprocesadores comerciales 62 GESTIÓN DE MEMORIA La memoria es uno de los principales recursos de la computadora, la cual debe de administrarse con mucho cuidado. Aunque actualmente la mayoría de los sistemas de cómputo cuentan con una alta capacidad de memoria, de igual manera las aplicaciones actuales tienen también altos requerimientos de memoria, lo que sigue generando escasez de memoria en los sistemas multitarea y/o multiusuario. La parte del sistema operativo que administra la memoria se llama administrador de memoria y su labor consiste en llevar un registro de las partes de memoria que se estén utilizando y aquellas que no, con el fin de asignar espacio en memoria a los procesos cuando éstos la necesiten y liberándola cuando terminen, así como administrar el intercambio entre la memoria principal y el disco en los casos en los que la memoria principal no le pueda dar capacidad a todos los procesos que tienen necesidad de ella. Los sistemas de administración de memoria se pueden clasificar en dos tipos: los que desplazan los procesos de la memoria principal al disco y viceversa durante la ejecución y los que no. El propósito principal de una computadora es el de ejecutar programas, estos programas, junto con la información que accesan deben de estar en la memoria principal (al menos parcialmente) durante la ejecución. Para optimizar el uso del CPU y de la memoria, el sistema operativo debe de tener varios procesos a la vez en la memoria principal, para lo cual dispone de varias opciones de administración tanto del procesador como de la memoria. La selección de uno de ellos depende principalmente del diseño del hardware para el sistema. A continuación se observarán los puntos correspondientes a la administración de la memoria. 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. 63 Mono programación sin intercambio o paginación Cuando solo se tiene un proceso que ocupe la memoria a la vez, el esquema de la administración de la memoria es el más sencillo que hay. Sin embargo, éste método ya no tiene aplicación en la actualidad, ya que era visto en las computadoras con sistemas operativos de un solo usuario y una sola tarea. El usuario introducía su disco a la computadora (por lo general, la máquina no contaba con disco duro) y ejecutaba su aplicación, la cual acaparaba toda la máquina. Multiprogramación y uso de memoria Esta organización facilita la programación de una aplicación al dividirla en dos o más procesos. Además ofrece la capacidad de tener más de un proceso a la vez en memoria así puede ofrecer servicios a varios usuarios a la vez. El esquema de multiprogramación incrementa el aprovechamiento del CPU, dado que a diferencia de la mono programación en donde solo un proceso reside en memoria a la vez limitando el uso del procesador a las llamadas que requiera dicho proceso, desperdiciando un promedio del 80% del tiempo del procesador. En cambio la multiprogramación, al tener varios procesos en la memoria principal y dividiéndose el tiempo de uso del procesador, logra reducir drásticamente el desperdicio del procesador. Multiprogramación con particiones fijas Para poder implementar la multiprogramación, se puede hacer uso de particiones fijas o variables en la memoria. En el caso de las particiones fijas, la memoria se puede organizar dividiéndose en diversas partes, las cuales pueden variar en tamaño. Esta partición la puede hacer el usuario en forma manual, al iniciar una sesión con la máquina. Una vez implementada la partición, hay dos maneras de asignar los procesos a ella. La primera es mediante el uso de una cola única (figura 2a) que asigna los procesos a los espacios disponibles de la memoria conforme se vayan desocupando. El tamaño del hueco de memoria disponible es usado para localizar en la cola el primer proceso que quepa en él. Otra forma de asignación es buscar en la cola el proceso de tamaño mayor que se ajuste al hueco, sin embargo hay que tomar en cuenta que tal método discrimina a los procesos más pequeños. Dicho problema podría tener solución si se asigna una partición pequeña en la memoria al momento de hacer la partición inicial, el cual sería exclusivo para procesos pequeños. Esta idea nos lleva a la implementación de otro método para particiones fijas, que es el uso de diferentes colas independientes (figura 2b) exclusivas para cierto rango en el tamaño de los procesos. De esta manera al llegar un proceso, éste sería asignado a la cola de tamaño más pequeño que la pueda aceptar. La desventaja en esta organización es que si una de las colas tiene 64 una larga lista de procesos en espera, mientras otra cola esta vacía, el sector de memoria asignado para ese tamaño de procesos estaría desperdiciándose. Multiprogramación con particiones variables Este esquema fue originalmente usado por el sistema operativo IBM OS/360 (llamado MFT), el cual ya no está en uso. El sistema operativo lleva una tabla indicando cuáles partes de la memoria están disponibles y cuáles están ocupadas. Inicialmente, toda la memoria está disponible para los procesos de usuario y es considerado como un gran bloque o hueco único de memoria. Cuando llega un proceso que necesita memoria, buscamos un hueco lo suficientemente grande para el proceso. Si encontramos uno, se asigna únicamente el espacio requerido, manteniendo el resto disponible para futuros procesos que requieran de espacio. Consideremos el ejemplo de la figura 3, en donde se cuenta un espacio reservado para el sistema operativo en la memoria baja de 400K y un espacio disponible para procesos de usuario de 2160K, siendo un total de memoria del sistema de 2560K. Dada la secuencia de procesos de la figura y usando un algoritmo de First Come – First Served (FCFS) se puede asignar de inmediato memoria a los procesos P1, P2 y P3, creando el mapa de memoria de la figura 4(a) en el cual queda un hueco de 260K que ya no puede ser utilizado por el siguiente proceso dado que no es suficiente para abarcarlo. 65 GESTIÓN DE MEMORIA AUXILIAR 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: 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 66 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. 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: 67 · · · 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. 68 GESTION DE ENTRADA Y SALIDA 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. El sistema de entrada/salida en el sistema operativo Solaris se divide en dos sistemas complementarios: el estructurado por bloques y el estructurado por caracteres. El primero se usa para manejar cintas y discos magnéticos, y emplea bloques de tamaño fijo para leer o escribir. El segundo se utiliza para atender a las terminales, líneas de comunicación. Cada dispositivo se estructura internamente mediante descriptores llamados número mayor, número menor y clase (de bloque o de caracteres). Para cada clase hay un conjunto de entradas, en una tabla, que aporta a los manejadores de los dispositivos. El número mayor se usa para asignar manejador, correspondiente a una familia de dispositivos; la menor pasa al manejador como un argumento, y éste lo emplea para tener acceso a uno de varios dispositivos físicos semejantes. 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). Si es así, entonces no será necesario realizar la operación física de entrada o salida. 69 GESTIÓN DE COMUNICACIONES Y SEGURIDAD Existe un sinnú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, como se pueden cambiar los valores de setpoint de reguladores de temperatura y encender 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 mas 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 mas 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 reestablecer 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 quelas funciones de los dispositivos de hardware embebido se vuelven mas 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 70 pueden ser en algunos casos sencillas, y combina diferentes niveles de seguridad, pero pueden traer consigo algunos problemas: • 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 mas 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 norepudio. 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 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 • Muchos sistemas embebidos no tienen la suficiente capacidad de procesamiento para las exigencias de seguridad. • 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. 71 • 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 aún 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. 72 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), 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 Usado típicamente para aplicaciones integradas, normalmente tiene las siguientes características: 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. Un ejemplo temprano de sistema operativo en tiempo real a gran escala fue el denominado «programa de control» desarrollado por American Airlines e IBM para el sistema de reservas Sabre. 73 Diseño Hay dos diseños básicos: Un sistema operativo guiado por eventos sólo cambia de tarea cuando un evento necesita el servicio. Un diseño de compartición de tiempo cambia de tareas por interrupciones del reloj y por eventos. El diseño de compartición de tiempo gasta más tiempo de la UCP en cambios de tarea innecesarios. Sin embargo, da una mejor ilusión de multitarea. Normalmente se utiliza un sistema de prioridades fijas. 74 Análisis comparativo con Linux y Windows XP 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) Los dos sistemas operativos compiten por el usuario básico en el mercado de las computadoras personales así como el mercado de los servidores, y se utilizan en agencias del gobierno, escuelas, oficinas, hogares, servidores de intranet y de internet, supercomputadoras y sistemas integrados. Windows domina el mercado de las computadoras personales y de escritorio (90%) y de servidores (66%) En la cuota de renta de servidor del mercado 4 (en el cuarto trimestre de 2007) Windows logró 36,3% y Linux logró 12,7%. 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. Linux y Windows varían en filosofía, costo, facilidad de uso, flexibilidad y estabilidad, aunque ambas buscan mejorar en sus áreas débiles. Las comparaciones de los dos tienden a reflejar los orígenes, la base histórica del usuario y el modelo de distribución de cada una. Típicamente, algunas áreas mayores de debilidades percibidas regularmente citados han incluido el valor práctico "out-of-box" pobre del escritorio de Linux para el mercado popular y la estabilidad pobre de sistema para Windows. Ambos son áreas del desarrollo rápido en ambos campos. 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. 75 OTROS ASPECTOS Aplicaciones de un sistema embebido 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: En una fábrica, para controlar un proceso de montaje o producción. Una máquina que se encargue de una determinada tarea hoy en día contiene numerosos circuitos electrónicos y eléctricos para el control de motores, hornos, etc. que deben ser gobernados por un procesador, el cual ofrece un interfaz persona – máquina para ser dirigido por un operario e informarle al mismo de la marcha del proceso. 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 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. Y un sin fin de posibilidades aún por descubrir o en estado embrionario como son las neveras inteligentes que controlen su suministro vía Internet, PC de bolsillo, etc. 76 BIBLIOGRAFIA www.fortunecity.com/skyscraper/fatbit/607/wince/wince.html WWW.docencia.ac.upc.edu/EPSC/PSE/documentos/Trabajos/Archivo/ Trabajo_Windows_CE_6.pdf www.atc.us.es/asignaturas/astr/Ts/T3_IntroduccionWCE.htm es.wikipedia.org/wiki/Sistema_integrado www.redeweb.com/_txt/642/48.pdf es.wikibooks.org/wiki/.Arquitectura_de_Sistemas_de_Tiempo_Real 77