trabajo de compilación bibliográfica sistemas operativos

Anuncio
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
Descargar