Monday, April 30, 2007

Sistemas Operativos basados en Java

En esta tercera y última parte de los temas sobre Sistemas Operativos se va a discutir sobre Sistemas Operativos basados en Java. En detalle explicarán las características, particularidades, ventajas y desventajas de los siguientes sistemas:

  • Portos
  • Jnode
  • SIM (para teléfonos inteligentes Blackberry

Espero sus contribuciones a este tema, las cuales serán tomadas en cuenta para su evaluación de tareas y prácticas del tercer parcial

Saludos y seguimos en contacto

3 Comments:

Anonymous Anonymous said...

Jnode (the Java New Operating System Design Effort)se publico en mayo del 2003. Proyecto creado por Ewout Prangsma quien trabajo tiempo atras en numerosos sistemas. Jnode es una Maquina virtual de java que no necesita de otro sistema operativo para correr dentro de este,en su lugar corre como un sistema operativo por si mismo. El desarrollo de Jnode se lleva acabo con licencia de codigo abierto lo cual permite a los programadores interesados contribuir al desarrollo de este Nuevo sistema operativo.
Jnode esta desarrollado en un microkernel el cual esta todo programado bajo java.
http://www.jnode.org/.
Sistema Operativo
Jnode utilize Grub para boot y cargar la imagen del kernel. Después de ser ejecutado el código del bootstrapper, se inicializa la maquina virtual de java. Jnode no contiene ningún tipo de codigo C. Solo el microkernel y algunas partes de la maquina virtual de java están programadas en ensamblador.
Esta maquina virtual soporta las principales características de java como la arquitectura de seguridad.
Los drivers in Jnode son programados también en java y hasta el momento los drivers para video, tarjetas de red, teclados, mouse, y cd-roms están disponibles y son desarrollados como plugins.
Jnode es hasta ahora un sistema operativo de un solo. Para mejorar el desempeño de Jnode, todo el código de java es compilado a un código nativo en el instante antes de ser ejecutado.
Jnode is currently a single-user OS. To enhance performance, all Java code executed on Jnode is compiled to native code on-the-fly before it is executed.
Plugins
Jnode utilize un plugin framework que utilize archivos JAR con descriptores XML para organizar varias partes en un sistema modular. Los archivos de JAr contienen los recursos para correr dicho plugin y el descritpor especifica que paquetes estan contenidos en el plugin y que otros plugins son usados por este.
El plugin framework tambien utilice puntos de extensión, estos son listas que pueden utilizar los plugins para saber que otros plugins están implementados. El shell define puntos de extensión y todos los comandos implementan ese punto de extensión. Cuando el usuario escribe el comando el shell entonces puede buscar en las implementaciones de las extensiones de comandos.

User Interface
Jnode provee un shell que se inicia cuando termina el proceso de boot. Este shell permite correr comandos que son implementados como plugins. También se puede iniciar una aplicación java desde el shell con el nombre de la classe padre. Para correr una aplicación de java que no es común los usuarios tendrán que escribir un claspath usando un comando especial del shell.
Actualmente la interfaz de usuario esta en desarrollo al igual que el escritorio.
Shell Commands
AL saber que no hay ninguna interfaz de usuario en Jnode, los comandos de shell son las aplicaciones mas utilizadas por jnode. Para poder tener todos los comandos actualizados sin necesidad de actualizar todo el sistema operativo la herramienta jini se usara para cargar los comandos que no están disponibles localmente.
Los commandos en Jnode son classes de java que se implementan en la interface de commandos. Esta interface provee un metodo simple para invocar los comandos, los argumentos, las salidas entradas y los mensajes de error son provistos por los parámetros de los metodos.
Code Fragment 1: The Command interface
public interface Command {
execute(CommandLine commandLine, java.io.InputStream in, java.io.PrintStream out, java.io.PrintStream err)
}
Cuando los servicios de Jini son usados como comandos implementan la interfaz del commando. Esto permite que los servicios sean usados directamente como comandos.
Image 3: How Jnode commands can be loaded using Jini

Jnode internamente utilize CommandInvokers para invocar comandos.Para cargar los servicios de Jini como comandos se utiliza DefaultCommandInvoker clase que se extiende para crear JiniCommandInvoker clase con que usa un LookupCache para buscar los servicios. El metodo invoke de CommandInvoker es llamado cuando el usuario introduce un commando y le da enter.Cuando el comando no esta disponible localmente, el metodo invoke de JiniCommandInvoker utilizara LookupCache para contactar los lookup services y obtener el comando introducido por el usuario.Cuando ya esta cargado los command services son llevados al cache dentro de LookupCache para tenerlos a la mano para otra invocacion.
Armando Terreros Avila 04293072

9:36 AM  
Blogger Unknown said...

..........*****PORTOS****..........
SISTEMA OPERATIVO DE TIEMPO
REAL ORIENTADO A COMPONENTE

INTRODUCCIÓN
Portos es un sistema operativo de tiempo real (RTOS), orientado a componente, que puede cumplir requisitos críticos de tiempo real, y que permite añadir nuevos componentes software en tiempo de ejecución.

Presenta dos novedades con respecto a los RTOS aplicados a los sistemas empotrados empleados en la industria en la actualidad, como son:

En primer lugar la planificación por plazos en lugar de la planificación por prioridades, lo que facilita enormemente a los ingenieros el diseño de aplicaciones por ser la manera mas natural para la planificación temporal de tareas ,y en segundo lugar el empleo de software de componentes, con las ventajas en cuanto a modularidad, escalabilidad, reusabilidad, sencillez y componibilidad que supone.

La Componibilidad, clave del software de componentes, se entiende como la posibilidad de añadir nuevos componentes en tiempo de ejecución. Para los sistemas de tiempo real, significa que la adición de nuevas tareas no perjudica el cumplimiento de plazos de las que ya se están ejecutando.

Portos está diseñado de manera que soporta los estándares de componentes de mayor futuro dentro de los sistemas empotrados, como son COM de Microsoft (actualmente mejorado con COM+) y Java de Sun. COM es atractivo por su mínima sobrecarga y por su estándar OLE para el control de procesos estándar (OPC) mientras Java es atractivo por su portabilidad y seguridad.

REQUERIMIENTOS
En primer lugar cabe hacer una distinción entre los sistemas de tiempo real en cuanto a las restricciones temporales de las tareas:

Los sistemas rígidos de tiempo real en los cuales el incumplimiento de requisitos temporales supone un fallo grave del sistema y los sistemas flexibles de tiempo real en los cuales un incumplimiento esporádico de los requisitos temporales no condiciona al sistema

En los sistemas en que nos vamos a centrar, habrá una convivencia entre tareas críticas ( guiado, control de procesos, etc.) y un numero arbitrario de tareas no criticas (comunicaciones, interacción con el usuario, etc.).

Además, si se quieren añadir nuevas tareas habrá que tener en cuenta si son críticas o no. Una nueva tarea crítica se podrá añadir sólo si el sistema no está saturado y por tanto no se afectará a las tareas críticas existentes, mientras que una no crítica siempre podrá ser añadida pues basta con ralentizar su ejecución para no afectar a las críticas.

La cuestión fundamental en un sistema orientado a componentes de tiempo real, es la composición dinámica de tareas de tiempo crítico. Esto no lo soportan los modelos tradicionales (ej. VxWorks), ni tampoco algunos lenguajes (Java). Dichos modelos se basan en la planificación por prioridades de las tareas, esto es adecuado para sistemas cerrados y pequeños en donde no hay variación dinámica en las tareas, que son conocidas desde un principio y no cambian. Se establece entonces un orden relativo en relación con la respuesta a las interrupciones; este orden no es consistente con la adición de nuevas tareas desconocidas mientras el sistema está operando.

En las aplicaciones de tiempo real, lo importante es completar o iniciar las tares en el momento más apropiado, ni antes ni después , es decir en instantes fijos y predeterminados o en intervalos de tiempo predeterminados (determinismo), a pesar de las peticiones dinámicas de recursos y los conflictos, la sobrecarga de procesos y los fallos de hardware o software. El no determinismo de los sistemas basados en prioridades proviene de una falta de relación directa entre el concepto de prioridad y el de finalización o inicio en el momento más apropiado, lo que además es un problema desde el punto de vista de la ingeniería de software, debido a un aumento de complejidad considerable.

Otra característica importante de los sistemas de tiempo real es que su aplicación a los sistemas empotrados debe ser compacta, es decir, que el software requiera poca memoria para almacenar el código y para su ejecución (eficiencia). Las memorias son componentes electrónicos que cuestan dinero, ocupan espacio y consumen energía. Se puede considerar , a modo de ejemplo que en aplicaciones exigentes se utilizan memorias del orden de: 128 Kb de EPROM y 1 Mb de RAM.

La eficiencia es fundamental, pero conlleva una pérdida de seguridad, esto es así, debido a que para evitar fallos como el acceso de un proceso a la memoria perteneciente a otro, el diseño del sistema operativo ha de ser más complejo, esto se puede compensar empleando lenguajes fuertemente tipados y modulares lo que aumenta la seguridad con un bajo coste de eficiencia.

Un aspecto importante a considerar de la seguridad de tipos, es la liberación de memoria dinámica, que no puede ser manual para sistemas abiertos debido a que puede conllevar una destrucción de estructuras de memoria compartidas entre objetos que se desconocen entre sí, lo que conlleva a la utilización de liberadores de memoria dinámica automáticos (automatic garbage collector ). Sin embargo esto introduce un problema adicional ya que los liberadores habituales asíncronos tienen la máxima prioridad, lo que ralentiza a otros procesos durante un período largo de tiempo, incluso a las tareas críticas que no utilizan memoria dinámica.

A modo de orientación se puede decir que con la liberación automática de memoria no se pueden asegurar tiempos de respuesta inferiores a 100 milisegundos . Cuando se necesita trabajar con memoria dinámica se prohíbe la solicitud y liberación de memoria en las fases de funcionamiento de tiempo real, será en las fases de tiempo no real cuando esto se produzca. Esta separación en fases de tiempo real y no real es un artificio que añade complejidad al sistema. Sin embargo el algoritmo empleado en Portos es compatible con las tareas rígidas de tiempo real con frecuencias de 10kHz.

Gracias a la tecnología de componentes el tamaño del sistema operativo puede estar en un rango casi ilimitado. Desde un mínimo, en caso de requerir poca funcionalidad, cabe la adición de componentes hasta lograr el sistema a la medida deseada.

También es interesante el funcionamiento con conexiones en red. El uso de protocolos estandarizados, como TCP/IP, browsers de Web o sistemas completos de ventanas, permitirá entre otras cosas, la monitorización del estado del sistema empotrado desde un nodo remoto. Una elección interesante es Java. Sin embargo el soporte de Java basado en la interpretación de código no es aceptable.

Una implementación de Java basada en un intérprete de código no es la más adecuada para un sistema rígido de tiempo real. Además, en Java el desarrollo de drivers es problemático, por las restricciones de seguridad de este lenguaje y su código especial. Una solución a este problema es COM de Microsoft mediante el OLE para control de procesos (OPC) con el que un driver de una tarjeta puede servir idealmente para distintas aplicaciones y distintos sistemas operativos. Las nuevas implementaciones de Java pueden llegar a aportar algo en este sentido.

La ingeniería de software adolece de una doble problemática: por un lado la dificultad de desarrollo, paliada en parte por las herramientas de ayuda a éste (RAD), y por otro la dificultad de modificación, que además es agravada precisamente por dichas herramientas que no facilitan la modificación de las aplicaciones. La complejidad creciente de los sistemas empotrados necesita herramientas parecidas a las RAD del desarrollo de intrerfaces de usuario.

La adición y sustitución de componentes simplifica la ampliación, mantenimiento y reelaboración de sistemas extensos de software (escalabilidad y reusabilidad). Esto puede lograrse usando el software de componentes, lo cual sólo es posible aplicando algún estándar.

PORTOS
Portos dispone de un núcleo muy reducido de multitarea expropiativo apto para problemas de tiempo real estricto. El interface de tareas incluye una combinación de las típicas construcciones de monitores y señales como las de Java. Otras herramientas de sincronización como semáforos pueden emularse. Además incluye un algoritmo propio para recolección asíncrona de basura para aplicaciones con restricciones de tiempo real estricto y para sistemas con menos de 1Mbyte de memoria RAM.

El sistema operativo está implementado en el lenguaje Component Pascal. Éste comparte las propiedades de seguridad de Java pero es mucho menor y más simple. Estos mecanismos de seguridad pueden se r deshabilitados de manera que se puedan implementar manejadores de dispositivos. Para los threads (subprocesos o tareas que no son de tiempo real) se puede añadir la planificación de Java basada en prioridades. Los ficheros de clases de Java son convertidos a ficheros de Componenet Pascal antes de ser transferidos a Portos vía comunicación serie (ej. TCP/IP) o grabados en una EPROM. Esto significa que Portos no necesita ninguna máquina virtual ni intérprete de código ni compilador en tiempo de ejecución.

Portos es un sistema operativo Java. La abstracción del planificador de tareas críticas se da en forma de clases Java, por lo tanto cualquier componente Java puede implementar este tipo de tareas usando esta API. Un algoritmo propio de recolección de basura permite que aun estando ejecutándose pueda ser interrumpido por una tarea crítica, de todas maneras éste puede ser desconectado durante las fases de tiempo real.

La configuración mínima de Portos se compone de los módulos PortosKernel, que contiene facilidades de bajo nivel y el manejador del heap incluido el recolector de basura asíncrono, y el módulo PortosTasks (público) que es el interface principal para las aplicaciones de tiempo real. Son suficientes siempre y cuando la aplicación contenga todos los manejadores de dispositivos necesarios.

Opcionalmente, el módulo PortosThreads (público) implementa un planificador por prioridades para threads. Este puede conectarse a PortosTasks y por supuesto puede ser sustituido por otros mecanismos de threads.

CommStreams (módulo público) se utiliza para comunicación, en particular sobre V24 y sobre Ethernet vía TCP/IP y UDP/IP. PPP, FTP y otros servicios de Internet se suministran como opciones.

ALBERTO MORENO VILLASEÑOR 99408619

10:33 AM  
Anonymous Anonymous said...

INFANTE GUADARRMA CHRISTOPHER

Jnode
Ewout Prangsma (fundador de JNode) soñaba con hacer una maquina virtual en java.
Debería ser un sistema no solo una maquina virtual si no también un completo sistema operativo de tiempo real que no necesitara otro sistema operativo. Así que tenia que ser ligero y flexible.

Sistema Operativo
Jnode utilize Grub para boot y cargar la imagen del kernel. Después de ser ejecutado el código del bootstrapper, se inicializa la maquina virtual de java. Jnode no contiene ningún tipo de codigo C. Solo el microkernel y algunas partes de la maquina virtual de java están programadas en ensamblador.

Actualmente la interfaz de usuario esta en desarrollo al igual que el escritorio.
AL saber que no hay ninguna interfaz de usuario en Jnode, los comandos de shell son las aplicaciones mas utilizadas por jnode. Para poder tener todos los comandos actualizados sin necesidad de actualizar todo el sistema operativo la herramienta jini se usara para cargar los comandos que no están disponibles localmente.

Driver de dispositivos
Como en cualquier otro sistema operativo Jnode usa drivers para acceder a toda clase de dispositivos. Cuando Jnode este listo para proveer la habilidad de escribir como una plataforma independiente podrá proveer los drivers de una forma automática sin requerir de una instalación asistida.

RIM (Research In Motion)
Es un sistema el cual fue creado por ingenieros canadienses para lo teléfonos inteligentes en especifico el blackberry ya que este sistema provee diferentes funcionalidades al los teléfonos como mensajeria, visualización de fotos videos documentos. La finalidad de este programa es la de no depender de ninguna empresa actual que desarrolle software para teléfonos similares como Palm o Windows CE una de las ventajas es que gracias a un satélite se podrá estar conectado en todo momento y provee los servicios con gran velocidad y confiabilidad.

Este sistema aunque es gráfico es mas limitado en sus capacidad es por ello que no requiere de grandes requerimientos del sistema para funcionar correctamente sin embargo en la era actual la gente prefiere lo estético y fácil de usar es por ello que estos teléfonos no han tenido un gran impacto en el mercado ya que otros equipos proveen ciertas funciones mas agradables al usuarios y a un mejor precio como las Pocket Pc o Handheld


INFANTE GUADARRMA CHRISTOPHER
INFANTE GUADARRMA CHRISTOPHER
INFANTE GUADARRMA CHRISTOPHER
INFANTE GUADARRMA CHRISTOPHER

9:34 AM  

Post a Comment

<< Home