Sistemas Operativos

HOME

SISTEMAS
Windows 9x
Windows NT
Windows CE

Win32 API
Introducción
USER
GDI
KERNEL

DATOS
DAO
ODBC
ADO
OLEDB

Win32 SDK
Introducción
Autor
Depuración
Rendimiento
TAPI
MAPI

REDES
Winsockets
NetBIOS
RPC
RAS

AVANZADO
MAPI
TAPI
COM
DCOM
OLE
ActiveX
DirectX

PROGRAMACION
Tópicos
Ejemplos

Sugerencias y Consultas
email9.gif (12737 bytes)

Windows CE

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.

A los largo de los capítulos 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. La figura anterior muestra un Palm-size PC.

Los dispositivos para Windows CE se sirven de baterías para obtener poder y duran 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 re iniciado cada vez que el usuario lo desea utilizar. De hecho, se pueden configurar las máquinas para que se prendan instantáneamente a la respuesta al input del usuario, y sistema vuelve al estado justo antes de apagarse.

El sistema operativo no viene es discos, ni en CD-ROM sino que en una pequeña tarjeta que se inserta en un HPC o en un Palm-size PC.

Antes de analizar más la arquitectura de Windows CE se verá algo de los HPC con el objetivo de comprender sobre qué sistema hardware debe correr Windows CE y que además permitirá comenzar a entender cómo funciona este nuevo sistema operativo.

El PC de Bolsillo

Un PC de Bolsillo o HPC casi siempre se compone de una pantalla de 480x240 o 640x240 en escala de gris, acompañada de un pequeño teclado. En vez de mouse, el dispositivo tiene un panel de contacto que cubre la pantalla. Todo HPC incluye un puerto serial y un puerto infrarrojo de 115 Kbps. Los sistemas tiene un slot PCMCIA o un slot de minitarjeta.

La configuración de la memoria física es muy interesante en un HPC. Un PC de bolsillo típico tiene 4 MB ó 8 MB de memoria ROM y 2 MB ó 4 MB de RAM. La memoria ROM contiene al sistema operativo y a la suite de aplicaciones de bolsillo que se venden con Windows CE (Word y Excel), a los que se les ha bautizado como Pocket Word y Pocket Excel (Word de Bolsillo y Excel de Bolsillo). Sin embargo, y debido a la naturaleza de la memoria ROM las aplicaciones no pueden sólo ejecutarse en ROM, las aplicaciones no sólo leen de memoria, sino que también escriben. Por lo tanto se puede concluir que en la memoria ROM residen las instrucciones y valores de sólo lectura mientras que algo de RAM debe utilizarse para los valores que las aplicaciones deseen escribir en algún momento. La memoria RAM necesaria para el sistema operativo mismo es de cerca de 500 KB, y las aplicaciones en realidad no ocupan mucho. Por ejemplo una instancia de Pocket Word utiliza solamente 16 K de RAM cuando se carga.

La memoria RAM se divide en dos partes, una para la RAM del sistema utilizada por el sistema operativo y las aplicaciones, y la otra parte, denominada almacén de objeto, para el almacenamiento de datos. Los archivos que se guardan en el almacén de objeto, no son guardados tal cual son, sino que son comprimidos en un radio 2:1. Los HPCs no tiene unidades de disco flexibles, ni discos duros, sin embargo se soporta SRAM y Tarjetas de PC Flash ATRA en dispositivos con slots PC Card.

Rompiendo con la tradición, los HPC actualmente no utilizan procesadores Intel o compatibles con Intel. En cambio, los HPC actualmente soportan el uso de procesadores RISC: El Hitachi SH3, el NEC VR4101 y el Phillips 3910 (los dos últimos compatibles con el procesador MIPS). Debido a que los procesadores NEC y Phillips utilizan un subconjunto común de las instrucciones MIPS, se puede decir que desde el punto de vista software, solamente se soportan dos CPUs: MIPS y SH3.

Como se ha dejado entrever en los párrafos anteriores, Windows CE incluye unas versiones en miniatura de las aplicaciones de oficina de Microsoft: Versiones de bolsillo de Word y Excel, un Calendario, Internet Explorer, un cliente de E-mail, y el Solitario. Si bien se incluye Word de bolsillo, sus características son limitadas si se le compara con el Word para Windows 9x/NT, presenta un mínimo soporte para fuentes y listas. Por ejemplo, no existe corrección ortográfica en Pocket Word (figura superior).

Pocket Excel es una sombra de su hermano mayor, ya que no incluye toda la funcionalidad (como las funciones incorporadas) de la versión de Windows 9x/NT (figura izquierda).

Todo HPC viene con una aplicación mostrada a la izquierda de comunicación y sincronización que se puede ejecutar en un PC, con el objetivo de poder comunicar el PC con un HPC a través del puerto serial. El programa llamado HPC Explorer, se parece al Explorador de Windows, y sólo despliega los archivos que residen en el HPC. Cuando el usuario arrastra un archivo desde el Explorador de Windows hasta el Explorador de HPC, un filtro de formato lo traduce desde formato PC a formato HPC.

Para programar una aplicación Windows CE para HPC es simple. Cualquier persona que tenga experiencia en desarrollo de programas en C con Win32 API puede desarrollar una aplicación en un abrir y cerrar de ojos. Los requisitos son Visual C++ para PC, Visual C++ para Windows CE (que en realidad es un agregado para soportar las nuevas plataformas MIPS y SH3) y las clases MFC para Windows CE. Todo lo necesario es justamente el tema de este estudio, por lo tanto se garantiza al lector que una vez leído este documento se tendrán las condiciones para desarrollar una aplicación Windows CE.

Todo lo anteriormente dicho se cumple para la versión Windows CE 1.0, sin embargo hoy Windows CE está ya es su versión 2.x, que se verá un poco más adelante

 

Windows CE 1.x

Windows CE 1.00 y 1.01 fueron el primer paso en la creación de un sistema operativo Windows cuyo objetivo no era un PC. Si bien, mucha gente piensa que CE significa "Compact Edition", la verdad es que ese nombre puede engañar al programador y al usuario, porque al decir Edición Compacta suena a "subconjunto de Windows", y en realidad Windows CE fue escrito desde cero, a diferencia por ejemplo de Windows 95 que fue escrito basado en Windows 3.x. Como se ha dicho, la primera versión de Windows CE se embarcó con los HPC.

Características y metas de Windows CE 1.x

Windows CE presenta las siguientes metas:

Compatibilidad con Windows. Windows CE soporta el modelo de programación Win32, sin embargo sólo soporta un subconjunto de todo el mundo Win32. Al igual que Windows NT y Windows 9x, Windows CE realiza multitarea con desalojo. El formato para los archivos ejecutables y librerías son los mismos que los de Windows 9x y NT. Aunque Windows CE no puede ejecutar aplicaciones de Windows de forma arbitraria (en otras palabras, cualquier aplicación Windows), es relativamente fácil portar la mayoría de las aplicaciones a Windows CE.

Consume pocas cantidades de RAM. Todos los componentes de Windows CE se pueden ejecutar en ROM, reduciendo la necesidad de RAM. NO se requiere flash memory o una unidad de disco (aunque ambos son soportados).

Independiente del hardware del sistema. Windows CE trabaja en una variedad de microprocesadores de 32 bits y no requiere una arquitectura de hardware particular.

 

Arquitectura de Windows CE 1.xx

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. La siguiente figura (siguiente página) muestra los elementos de la arquitectura de Windows CE.

Como lo muestra la figura es posible que un desarrollador excluya módulos como USER y GDI, obteniendo así un Windows CE sin interfaz de usuario. Bueno, esa característica ahora ha permitido que Windows CE funcione en sistema 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 se hace ideal para realizar trabajo en tiempo real y permite llevar la API Win32 a sistema 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 y el shell. Como se dijo anteriormente un diseñador puede incluir o excluir algunos de estos elementos (por ejemplo, el Internet Explorer) según sus necesidades.

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: 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. Los diseñadores pueden utilizar estas interfaces para sus propias tarjetas.

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. Ventanas traslapadas, administración de eventos, controles de interfaz de usuario, cajas de diálogo, comunicación entre procesos, entre otras características. 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 respaldad 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 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, el sistema de archivos y el registro es 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 un 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 utiliza 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 (IRDA) y que se muestra en la figura superior.

 

APIs

Windows CE exporta un subconjunto de Win32 API. Dentro de este subconjunto se incluyen sobre 500 de las más utilizadas APIs 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, TAPI (API de Telefonía) 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 moverse 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.

Internet Explorer para Windows CE

La conectividad a Internet es un módulo de Windows CE. Aunque está destinado para dispositivos con pantalla, los componentes de Internet Explorer puede utilizarse para conseguir información a través de Internet aún si la navegación de las páginas de WWW no es un requerimiento.

Shell

Windows CE 1.xx viene con la ya familiar de Windows, como lo muestra la siguiente 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, y tal cual se dijo anteriormente, 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.

Windows CE 2.x

A mediados de 1997 se comenzó a distribuir una versión beta de Windows CE 2.0, que en realidad mantiene la misma estructura de componentes que Windows CE 1.x, sin embargo presenta avances importantes:

  • Soporte para los procesadores Intel y AMD.
  • La serie 82x de los procesadores PowerPC de Motorola.
  • Pantalla con colores de hasta 24 bits.
  • Conexiones LAN mediante el protocolos NDIS.
  • Subconjunto de ActiveX.
  • Java Virtual Machine.
  • Visual Basic Script.
  • Subconjunto de MFC para Windows CE.

 

La figura superior muestra a Windows CE 2.0, y como puede verse soporta colores, algo que Windows CE 1.x no hacia. Las siguientes figuras muestran el avance entre Windows CE 1.x y Windows CE 2.0. La primera muestra como se convierte una hoja de cálculo de Excel a formato HPC en Windows CE 2.0.

 

La figura anterior muestra el Internet Explorer de Windows CE 2.0, que puede verse muy superior al de Windows CE 1.x no sólo por los colores sino por que Windows CE 2.0 incluye ActiveX , JVM y VB Script lo cual da un potencial tremendo a las aplicaciones Internet en Windows CE.

Windows CE 2.01

Se agrega soporte para:

  • FAT32
  • ADO
  • fast IRDA
  • USB
  • Imprimir

 

Arquitectura de Memoria de Windows CE

Se ha dicho en esta sección que Windows CE soporta multitarea y multihilos con prioridad de forma similar a como lo hacen Windows NT y Windows 9x. Sin embargo, al momento de administrar memoria las cosa cambian radicalmente.

Como recordará el lector, en los capítulos de las Arquitecturas de Windows 9x y Windows NT se dijo que cada aplicación (proceso) tiene su propio espacio de direcciones virtuales de 4 GB que oculta la arquitectura física de la memoria.

Windows CE realiza el mismo método: oculta al programador la administración de memoria física del dispositivo y mantiene la idea de memoria virtual. El gran cambio es que Windows CE no provee 4 GB de memoria virtual a cada nuevo proceso que arranca. Windows CE al momento de partir crea un espacio de direcciones de 4 GB pero que es único para todos los procesos.

Al igual que en Windows NT y Windows 9x la memoria sigue siendo asignada por páginas. En Windows NT el tamaño de la página depende del procesador, en Windows CE también y va desde 1 KB hasta 4 KB.

El lector puede estar pensando que tener un espacio de direcciones común entre todos los procesos puede que hagan a Windows CE un sistema inestable sin embargo esa posibilidad se elimina al momento en que Windows CE implementa protección no a nivel de espacio de direcciones sino que a través de protección de páginas.