Sie sind auf Seite 1von 8

Universidad CAECE

SISTEMAS OPERATIVOS I
Martes T.N.

Monografa Hilos en Java Virtual Machine

Integrantes Sommariva, Andrs Docente Andrea Lanaro

N Matrcula 87603/7

1C / 2012 / Martes

ndice
Sntesis Introduccin La Arquitectura de Java La JVM Arquitectura de la JVM Implementacin de Hilos en la JVM Contador de programa (pc) Pila Java Utilizacin de Hilos en Java Conclusin Referencias

Sntesis
El siguiente trabajo tiene como finalidad aclarar conceptos relacionados al manejo de informacin que debe mantener la Java Virtual Machine (JVM) para operar con hilos. Este trabajo est dirigido a desarrolladores con conocimientos de Java as como tambin a estudiantes de un curso inicial de sistemas operativos.

Introduccin
A continuacin se desarrollarn conceptos relacionados a la arquitectura de Java y a la estructura interna de la JVM que sern de utilidad para comprender cmo son implementados los hilos en este lenguaje y cuales son las estructuras de datos que dan soporte a su ejecucin.

La Arquitectura de Java
La arquitectura de Java puede ser dividida en cuatro componentes que se encuentran internamente relacionados: el lenguaje de programacin Java el formato de archivos class la API de Java la Mquina Virtual de Java (JVM) La siguiente imagen ilustra la relacin entre estos componentes:

Los programas escritos en Java se almacenan en archivos .java, en estos se llevan a cabo accesos a recursos del sistema (por ejemplo E/S) a travs de los mtodos que brinda la API de Java. Estos programas son compilados y transformados en archivos .class, que poseen un formato interpretable por la mquina virtual de java (JVM).

La JVM
La JVM es una abstraccin de una computadora definida por una especificacin (actualmente mantenida por Oracle, http://docs.oracle.com/javase/specs/jvms/se7/html/ index.html). A partir de esta especificacin, se llevan a cabo diferentes implementaciones concretas para los diferentes combinaciones de software (por ejemplo, para diferentes sistemas operativos) o hardware y software (por ejemplo, para dispositivos mviles). Estas implementaciones son dependientes de la plataforma en que sern ejecutadas las instancias de una JVM. Por ltimo, el trmino JVM tambin puede referir a una instancia en ejecucin de un programa Java. La siguiente imagen muestra estos diferentes niveles de detalle de la JMV.

Arquitectura de la JVM
En la especificacin de la JVM, el comportamiento de una instancia de la mquina virtual est definido en trminos de subsistemas, reas de memoria, tipos de dato e instrucciones. Estos componentes describen la arquitectura interna abstracta de la JVM. El propsito de estos componentes es definir estrictamente el comportamiento externo de las implementaciones. La especificacin define el comportamiento requerido de cualquier implementacin de mquina virtual de Java en trminos de estos componentes abstractos y sus interacciones. La siguiente figura incluye los subsistemas principales y las reas de memoria descritas en la especificacin.

Cada instancia de la JVM tiene un rea de mtodos (method area) y una pila (heap) que son compartidas por todos los hilos en ejecucin. Cuando la JVM carga una nueva clase coloca informacin acerca del tipo en el rea de mtodos. Durante la ejecucin de los programas los objetos creados son colocados en la pila.

Implementacin de Hilos en la JVM


Con respecto a los hilos, a medida que se crean nuevos se les asigna su propio contador de programa (pc: program counter) y su propia pila (Java stack) en la que se almacena el estado de cada llamada a mtodos que realiza el hilo. El estado incluye informacin de las variables locales, los parmetros con los que se invoca al mtodo, el valor retornado y los clculos intermedios. La pila est compuesta por marcos (frames). La informacin del estado de cada llamada a un mtodo se almacena en un nuevo marco dentro de la pila. Cuando la ejecucin del mtodo termina se elimina el marco. La JVM no utiliza registros para almacenar valores intermedios, en su lugar, almacena los datos necesarios en la pila. La pila y el contador de programa asignados a un hilo son de acceso privado a su dueo, esta informacin no se comparte entre hilos.

En la imagen se puede observar tres hilos en ejecucin, cada uno con su contador de programa y su pila. Se puede observar que uno de los hilos est realizando una llamada a un mtodo nativo para la cual no se almacena informacin en la pila.

Contador de programa (pc)


Cada hilo en ejecucin tiene su propio contador de programa en el que se registra la direccin de la instruccin que est siendo ejecutada. El contador de programa es un registro de una palabra. En el caso de que se ejecute una llamada a un mtodo nativo el valor del contador de programa ser indefinido.

Pila Java
Como se mencion antes en esta pila se almacenan los marcos con la informacin del estado de ejecucin del hilo. Cada vez que se invoca un nuevo mtodo se crea un nuevo marco en la pila, y cuando este finaliza ese marco es expulsado de la pila. Los marcos almacenan tres tipos de datos: las variables locales: organizadas en arrays de palabras, accesibles a travs de ndices. una pila de operadores: tambin organizados en arrays de palabras pero accesibles como una pila. datos del marco: informacin de constantes y resultado de ejecucin del mtodo.

Por ltimo, uno de los objetivos de la especificacin del modelo de hilos en la JVM es que, en la medida de lo posible, sean implementados con hilos nativos. La implementacin de hilos en la JVM debe soportar dos aspectos de sincronizacin: bloqueo de objetos (para evitar que haya interferencia entre distintos hilos trabajando sobre datos compartidos), y wait y notify (para permitir la cooperacin entre hilos).

Utilizacin de Hilos en Java


Para ejecutar un programa en Java se debe contar con una clase con un mtodo main. Al ejecutar un programa se crea una instancia de la JVM con un hilo que podemos denominar hilo inicial. El hilo inicial puede luego crear otros hilos. Existen dos tipos de hilos: demonio (daemon) y no-demonio (non-daemon). Un demonio es un hilo utilizado por la JVM, por ejemplo, para llevar a cabo tareas de limpieza de objetos en memoria. La aplicacin puede crear hilos de cualquiera de estos tipos. Los hilos en Java estn relacionados a la clase Thread. Para crear hilos en Java se puede: 1. Crear objetos de una clase que implementen la interfaz Runnable, pasandolos al constructor de la clase Thread. 2. Extender la clase Thread. A continuacin se ilustra los estados que puede tomar un hilo durante su ciclo de vida y las operaciones que realizan los cambios.

Conclusin
De acuerdo a lo visto, se puede concluir que la especificacin del modelo de hilos y las estructuras de datos que utiliza la mquina virtual de java para su gestin guarda una fuerte relacin con aquellos conceptos de manejo de hilos de los sistemas operativos modernos. Por otra parte, la especificacin brinda la posibilidad de llevar a cabo las implementaciones que mejor aprovechen los recursos del hardware y sistema operativo maximizando la performance. Otra caracterstica importante es la indepedencia del cdigo que brinda la mquina virtual de java en relacin con la plataforma de ejecucin de los programas.

Referencias
Inside the Java Virtual Machine by Bill Venners http://www.artima.com/insidejvm/ed2/index.html

The Java Virtual Machine Specification Oracle http://docs.oracle.com/javase/specs/jvms/se7/html/index.html

The Java Tutorial - Thread Objects Oracle http://docs.oracle.com/javase/tutorial/essential/concurrency/threads.html

Das könnte Ihnen auch gefallen