Java nos ofrece la clase Thread y la interfaz Runable que permiten que varios procesos estén funcionando de forma concurrente.
|
|
- Elvira Rivero Cano
- hace 8 años
- Vistas:
Transcripción
1 Threads (hilos) Java nos ofrece la clase Thread y la interfaz Runable que permiten que varios procesos estén funcionando de forma concurrente. Conceptos: Proceso (thread o hilo): es un programa en ejecución que realiza actividades síncronas asignadas a un procesador. Cuando solo hay un procesador, todos los procesos son asignados a éste, si existen varios procesadores cada uno de los procesos se asigna de forma independiente a c/u de los procesadores. Procesos concurrentes: Dos procesos son concurrentes cuando la primera instrucción de uno de ellos se ejecuta después de la primera instrucción del otro proceso y antes de la última. Encadenamientos: Son procesos lanzados concurrentemente: Simultaneidad de procesos: Cuando hay varios procesadores se habla de simultaneidad de procesos, y en caso de un solo procesador, se habla de solapamiento de procesos. (ver figura) Ejecución de dos procesos en un sistema monoprocesador y en un sistema multiprocesador. Clase Thread: Es la clase de java que nos permite manejar encadenamientos. Ejemplo de en encadenamiento utilizando la clase Thread. class Encadenamiento extends Thread { Encadenamiento(String nombre) {super(nombre); { for (int i=0;i<10;i++) System.out.println(getName()); public static void main(string args[]) {Encadenamiento p1=new Encadenamiento(""); Encadenamiento p2=new Encadenamiento("");
2 p1.start(); p2.start(); Una posible salida del programa es: java Encadenamiento Prioridades de un thread: El orden de ejecución de los encadenamientos viene dado por dos factores: la prioridad del thread y la segmentación del tiempo. Todos los encadenamientos tienen una prioridad: MIN_PRIORITY constante de valor 1 NORM_PRIORITY constante de valor 5 MAX_PRIORITY constante de valor 10 El planificador de java es el encargado de decidir que proceso tendrá acceso al procesador. Esto lo decide tomando en cuenta que proceso tiene la máxima prioridad en el sistema. El método setpriority() de la clase Thread establece la prioridad de un encadenamiento. Si hay error se lanzará una excepción del tipo illegalargumentexception. Para obtener la prioridad de un encadenamiento se tiene el método getpriority(). Ciclo de vida de un Thread: Un proceso puede encontrarse en varios estados ( ver figura)
3 Cuando se crea un proceso pasa al estado de "Creado". Cuando ejecutamos el método start() del proceso, éste pasa al estado de "listo" o "preparado". Cuando el sistema encuentra un thread que tiene mayor prioridad lo pasa al estado de "ejecución", y por lo tanto le asigna el procesador al thread. Cuando un proceso solicita una operación de E/S éste pasa al estado de bloqueado, y éste thread no podrá utilizar el procesador ( aunque haya alguno disponible) hasta que se haya terminado la operación de E/S Cuando se invoca al método sleep() de un proceso, éste automáticamente pasa al estado de "dormido", saliendo de este estado solo cuando haya terminado el método sleep() y éste no podrá usar el procesador mientras esté dormido. Cuando se invoca al método suspend() de un proceso, éste pasa al estado de "suspendido", y sólo pasa al estado de "listo" cuando se invoca al método resume() del proceso, tampoco podrá utilizar éste thread el procesador hasta que pase del estado de "suspendido" a "listo" Cuando se invoca al método wait() de un proceso, éste pasa al estado de "espera", donde espera una cola asociada al objeto específico para el cual invocó wait(). El primer proceso de la cola de espera de un objeto en particular pasará al estado de "listo" cuando otro thread asociado a éste objeto realice una llamada al método notify(). Todos los proceso de la cola de espera asociada a un objeto pasarán al estado de "listo" cuando un proceso asociado a ese objeto realice una llamada al método notifyall(). El proceso pasará al estado de "terminado" cuando se invoque al método stop() de ese thread, o bien, cuando
4 termine su método run(). Fundación CIDCA Centro de Docencia y Consultoría Administrativa Método Descripción Estado válido Estado de comprobación start() Empieza la ejecución del encadenamiento. Se invoca al método run() de dicho Creado encadenamiento stop() Finaliza o termina la ejecución de Creado, en un encadenamiento ejecución Terminado Efectúa una espera de un sleep(long mili) determinado número de En espera milisegundos Efectúa una espera de un sleep(long mili, int determinado número de nano) milisegundos y nanosegundos En espera suspend() Suspende la ejecución de un thread En espera resume() Reanuda la ejecución del thread que ha efectuado una llamada a Suspendido suspend() yield() Cede el control del procesador a otro thread, o sea, abandona explícitamente el procesador La interfaz Runnable Como java no posee herencia múltiple, se da el caso de utilizar encadenamientos sin poder extender la clase Thread. Para ésto utilizamos la interfaz Runable. class Encadenamiento2 implements Runnable { String nombre; Encadenamiento2(String nom) {nombre= nom; { for (int i=0;i<10;i++) {System.out.println(nombre); public static void main(string args[]) {Encadenamiento2 proceso1=new Encadenamiento2(""); Encadenamiento2 proceso2=new Encadenamiento2(""); Thread p1= new Thread(proceso1); Thread p2= new Thread(proceso2); p1.start(); p2.start(); java Encadenamiento2
5 La diferencia entre heredar de la clase Thread al utilizar la interface Runnable es la invocación al contructor de la clase Thread. Thread(Runnable) Segmentación de tiempo: El orden de ejecución de un encadenamiento esta determinado por dos factores: la segmentación de tiempo la prioridad En la plataforma Solaris, Java ejecuta un proceso hasta que éste termine o se encuentre un hilo que esté en el estado "listo" y que tenga una prioridad mas alta. El hilo que se estaba ejecutando, deja de ejecutarse y comienza la ejecución del hilo nuevo que ha entrado y que posee más prioridad que el antigüo.... (hasta que termine el )... (hasta que termine el ) En windows 95/98/2000/Me/NT los hilos se manejan por tajadas de tiempo o quantums. Cada proceso se le asigna un quantums de tiempo para usar el procesador. Una vez pasado ese quantum el proceso tendrá que esperar a que los demás procesos que tienen su misma prioridad terminen de utilizar su quantum siguiendo un turno circular ( round - robin)...
6 Para resolver éste problema de que un proceso se ejecute hasta que otro terminte, Java ofrece una programación expulsora, por tanto, el método yield() de la clase Thread permite expulsar el encadenamiento o proceso que se encuentre en ejecución: Ejemplo de segmentación de tiempo: class Encadenamiento extends Thread { Encadenamiento(String nombre) {super(nombre); { for (int i=0;i<10;i++) {System.out.println(getName()); yield(); public static void main(string args[]) {Encadenamiento p1=new Encadenamiento(""); Encadenamiento p2=new Encadenamiento(""); p1.start(); p2.start(); Una posible salida del programa es: java Encadenamiento Si la salida corresponde a un sistema con segmentación de tiempo, significa que aunque no se tenga un sistema multitarea la utilización de método yield() de la clase Thread hace que un programa ejecutandose en sistema que no lleva segmentación de tiempo lo tenga. Ejemplo para saber si nuestra computadora tiene segmentación de tiempo /*Esta clase incrementa la variable contador indefinidamente*/ class tiempo extends Thread { private int contador; tiempo()
7 {contador=0; {while (true) contador++; public int dev_contador() {return contador; Fundación CIDCA Centro de Docencia y Consultoría Administrativa /*La siguiente clase comprobar si es o no el sistema segmentado*/ class essegmentado extends Thread { boolean segmen; boolean determinado; essegmentado() {segmen=false; determinado=false; public boolean EsSegmen() { start(); while(!determinado) { //Habr que determinar el valor, para ello esperaremos try{sleep(1500); catch(interruptedexception e){ return segmen; { tiempo proceso1=new tiempo(); tiempo proceso2=new tiempo(); //Establecemos en la clase essegmentado la m xima prioridad setpriority(max_priority); proceso1.start(); proceso2.start(); try {sleep(500); catch(interruptedexception e){ proceso1.stop(); proceso2.stop(); if ((proceso1.dev_contador()>2*proceso2.dev_contador()) (proceso2.dev_contador()>2*proceso1.dev_contador())) segmen=false; else segmen=true; /*En este momento ya tenemos determinado si es o no segmentado*/ determinado=true; class Test {public static void main(string args[]) { essegmentado comprobar=new essegmentado(); if (comprobar.essegmen()) System.out.println("Este sistema tiene segmentacion en el tiempo"); else System.out.println("Este sistema no tiene segmentacion en el tiempo");
8 Problema de exclusión mutua y los monitores Sincronización de procesos: Se refiere a cuando dos o más procesos compiten por la obtención de un recurso. Ejemplo: Una aplicación que cuente los accesos que se realizan en una base de datos desde dos terminales. Cuando dos procesos están accediendo a la misma variable ( recurso ) con el consiguiente problema de que uno está modificando la variable pero ésta no tiene su valor correcto debido a que el otro proceso la está actualizando también a éste problema se le llama exclusión mutua, lo que significa que dos procesos no pueden acceder a la misma variable. La exclusión mutua trata de resolver el problema de las secciones criticas o variables compartidas. Existen éstos criterios para garantizar la exclusión mutua. El número de procesos que puedan existir en una sección crítica, en un momento determinado, como máximo, debe ser uno. Cuando existen varios procesos que tienen que acceder a una sección crítica, se le ha de conceder el derecho a entrar en esa sección crítica a uno de ellos, pero en un tiempo finito, por tanto deberá de devolver el recurso en un tiempo finito. Si un proceso no está en su sección crítica, entonces se debe de dejar a otro proceso entrar en la sección crítica. class BD { protected int contador=0; public int dev_contador(){return contador; public void inc_contador(){contador++; class Terminal extends Thread { BD basedatos; Terminal(String nombre,bd bd) {super(nombre); this.basedatos=bd; /*Metodo que incrementa el contador*/
9 { for (int i=0;i<10;i++) {basedatos.inc_contador(); System.out.println(getName()+" : "+basedatos.dev_contador()+" personas"); class Test {public static void main(string args[]) {BD basedatos=new BD(); Terminal terminal1=new Terminal("Terminal1",basedatos); Terminal terminal2=new Terminal("Terminal2",basedatos); terminal1.start(); terminal2.start(); java Test Terminal1 : 1 personas Terminal1 : 2 personas Terminal1 : 3 personas Terminal2 : 4 personas Terminal1 : 5 personas Terminal2 : 6 personas Terminal1 : 7 personas Terminal2 : 8 personas Terminal1 : 9 personas Terminal2 : 10 personas Terminal1 : 11 personas Terminal2 : 12 personas Terminal1 : 13 personas Terminal2 : 14 personas Terminal1 : 15 personas Terminal2 : 16 personas Terminal1 : 17 personas Terminal2 : 18 personas Terminal2 : 19 personas Terminal2 : 20 personas Una solución rudimentaria pero básica para el problema de la exclusión mutua es la que dio Peterson en 1981 (Algoritmo de Peterson) class BD { public int contador=1,turno=1; public boolean flag1,flag2; class Terminal1 extends Thread { BD basedatos; Terminal1(BD bd){this.basedatos=bd; //Metodo que incrementa el contador {int i=1; while (i<11) {basedatos.flag1=true;
10 basedatos.turno=2; while (basedatos.flag2 && basedatos.turno==2); //Seccion cr tica System.out.println("Terminal 1: "+basedatos.contador+++"personas"); basedatos.flag1=false; //Secci n no cr tica i++; class Terminal2 extends Thread { BD basedatos; Terminal2(BD bd) {this.basedatos=bd; //Metodo que incrementa el contador {int i=1; while (i<11) {basedatos.flag2=true; basedatos.turno=1; while (basedatos.flag1 && basedatos.turno==1); //Seccion cr tica System.out.println("Terminal 2: "+basedatos.contador+++"personas"); basedatos.flag2=false; //Secci n no cr tica i++; class Test {public static void main(string args[]) {BD basedatos=new BD(); Terminal1 term1=new Terminal1(basedatos); Terminal2 term2=new Terminal2(basedatos); term1.start(); term2.start(); java Test Terminal 1: 1personas Terminal 1: 2personas Terminal 1: 3personas Terminal 2: 4personas Terminal 1: 5personas Terminal 2: 6personas Terminal 1: 7personas Terminal 2: 8personas Terminal 1: 9personas Terminal 2: 10personas
11 Terminal 1: 11personas Terminal 2: 12personas Terminal 1: 13personas Terminal 2: 14personas Terminal 1: 15personas Terminal 2: 16personas Terminal 1: 17personas Terminal 2: 18personas Terminal 2: 19personas Terminal 2: 20personas Los Monitores Fundación CIDCA Centro de Docencia y Consultoría Administrativa Los monitores resuelven el problema de las variables compartidas. C.A.R. Hoaere en 1974 analizó por 1ra vez el concepto de monitor. La sincronización de procesos se debía a que dos o más procesos luchan por conseguir un recurso. Java usa monitores para la sincronización de procesos. Java permite marcar las secciones críticas de código mediante la palabra reservada synchronized. Cuando declaramos un método como synchronized estamos creado un monitor. Un monitor solo permite que un encadenamiento pueda ejecutar un método synchonized a la vez con el objeto. Esto se logra poniendo una especie de candado al objeto impidiendo que ningún otro método pueda acceder al objeto hasta que el encadenamiento que está dentro del monitor termine de ejecutar el método sincronizado Ejemplo de la base de datos utilizando monitores class BD { private int contador; BD(){contador=0; /*Método que modifica el contador, y por tanto contiene la sección crítca a proteger*/ public synchronized int dev_contador(){ return contador; public synchronized void inc_contador() {contador++; // System.out.println(contador+" personas"); class Terminal extends Thread { BD basedatos; Terminal (BD bd) {this.basedatos=bd; //Metodo que incrementa el contador { for (int i=1;i<=10;i++) {basedatos.inc_contador(); System.out.println(getName()+" : "+basedatos.dev_contador()+" personas" ); class Test {public static void main(string args[]) {BD basedatos=new BD();
12 Terminal terminal1=new Terminal(basedatos); Terminal terminal2=new Terminal(basedatos); terminal1.start(); terminal2.start(); C:\jdk1.3\ejemplos\capitulo10\monitor>java Test Thread-0 : 1 personas Thread-0 : 2 personas Thread-0 : 3 personas Thread-1 : 4 personas Thread-0 : 5 personas Thread-1 : 6 personas Thread-0 : 7 personas Thread-1 : 8 personas Thread-0 : 9 personas Thread-1 : 10 personas Thread-0 : 11 personas Thread-1 : 12 personas Thread-0 : 13 personas Thread-1 : 14 personas Thread-0 : 15 personas Thread-1 : 16 personas Thread-0 : 17 personas Thread-1 : 18 personas Thread-1 : 19 personas Thread-1 : 20 personas
1 HILOS (THREADS) EN JAVA
1 HILOS (THREADS) EN JAVA 1.1QUÉ ES UN THREAD La Máquina Virtual Java (JVM) es un sistema multihilo. Es decir, es capaz de ejecutar varios hilos de ejecución simultáneamente. La JVM gestiona todos los
Más detallesProgramación Orientada a Eventos
Programación Orientada a Eventos Técnicas de Programación Santiago Pavón V:2012.03.13 Programas Secuénciales El flujo de ejecución del programa sigue la secuencia de sentencias que lo forman. El estado
Más detallesConcurrencia en Java
Concurrencia en Java Herramientas proporcionadas por Java La Máquina Virtual (JVM) Pedro Pablo Gómez Martín La clase Thread Clase principal con la que conseguir concurrencia. La llamada a su método start()
Más detallesFederico Peinado www.federicopeinado.es
Federico Peinado www.federicopeinado.es Depto. de Ingeniería del Software e Inteligencia Artificial disia.fdi.ucm.es Facultad de Informática www.fdi.ucm.es Universidad Complutense de Madrid www.ucm.es
Más detallesConcurrencia. Primitivas IPC con bloqueo
Concurrencia Primitivas IPC con bloqueo Primitivas de IPC con bloqueo La solución de Peterson es correcta, pero tiene el defecto de requerir espera ocupada: Cuando un proceso quiere entrar en su región
Más detallesBenemérita Universidad Autónoma del Estado de Puebla
Benemérita Universidad Autónoma del Estado de Puebla Facultad de Cs. De la Computación Programación Concurrente y Paralela Práctica de Laboratorio No. 4 Profr: María del Carmen Cerón Garnica Alumno: Roberto
Más detallesThreads. La plataforma JAVA soporta programas multhreading a través del lenguaje, de librerías y del sistema de ejecución. Dos.
Threads Un thread es un flujo de control secuencial dentro de un programa. A los threads también se los conoce como procesos livianos ó contextos de ejecución. Un thread es similar a un programa secuencial:
Más detallesMultitarea en Java. Rafa Caballero - UCM
Multitarea en Java Rafa Caballero - UCM Programa Monoproceso (monotarea) En cada momento hay una única instrucción ejecutándose Se dice que el programa es monotarea, o monoproceso o monohebra (o single
Más detallesPROGRAMACIÓN EN JAVA
SISTEMAS INFORMÁTICOS INDUSTRIALES curso 2007-2008 PROGRAMACIÓN EN JAVA PRÁCTICA 3: Comunicación entre tareas. Modelo productor / consumidor. Objetivos Implementar una aplicación en Java en la que existan
Más detallesBenemérita Universidad Autónoma del Estado de Puebla
Benemérita Universidad Autónoma del Estado de Puebla Facultad de Cs. De la Computación Programación Concurrente y Paralela Práctica de Laboratorio No. 5 Profr: María del Carmen Cerón Garnica Alumno: Roberto
Más detallesJava: Programación Multithread
Qué es un thread? Java: Programación Multithread Hasta el momento hemos desarrollado programas secuenciales con un único thread: en cualquier instante durante la ejecución de un programa hay un único punto
Más detallesProgramación Concurrente en Java
Hebras y monitores Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid 21 de marzo de 2006 Threads Extendiendo la clase java.lang.thread. public class PrThread extends
Más detallesJava y JVM: programación concurrente
Java y JVM: programación concurrente Adolfo López Díaz Escuela de Ciencias de la Computación e Informática. Universidad de Costa Rica Resumen: El lenguaje de programación Java proporciona, sin necesidad
Más detallesTEMA 5: Control de la Concurrencia en Java (API Estándar)
TEMA 5: Control de la Concurrencia en Java (API Estándar) CONTENIDO Exclusión Mutua con código synchronized. Exclusión Mutua con métodos synchronized. Protocolos de Control de la Exclusión Mutua. Interbloqueos
Más detallesCONCURRENCIA EN JAVA. Diseño de Sistemas Operativos Avanzados 2000/2001. Pedro Pablo Gómez Martín
CONCURRENCIA EN JAVA Diseño de Sistemas Operativos Avanzados 2000/2001 Pedro Pablo Gómez Martín Concurrencia en Java 1 ÍNDICE ÍNDICE... 1 INTRODUCCIÓN... 3 CREAR UNA NUEVA HEBRA... 3 FINALIZACIÓN... 5
Más detallesSIMM: TEORÍA DE LOS S.O. I.E.S. JUAN DE LA CIERVA CURSO 2007/2008
SIMM: TEORÍA DE LOS S.O. I.E.S. JUAN DE LA CIERVA CURSO 2007/2008 1.- INTRODUCCIÓN A LOS PROCESOS 1.1.- Concepto 1.2.- Composición y estructura 1.3.- Estados y transiciones 2.- COMUNICACIÓN ENTRE PROCESOS
Más detallesSi bien Pascal-FC no trae algunas de las características de Pascal como:
PROCESOS VS. HILOS: Ciclo de vida de un proceso: es prácticamente un estándar en todos los sistemas operativos. En principio el proceso no existe, es creado, luego pasa a listo (el proceso esta en condiciones
Más detallesRESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA
UNED Centro Asociado de Cádiz RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA 1. OBJETOS Cualquier elemento del programa es un objeto. Un programa es un conjunto de objetos que se comunican entre sí
Más detallesObject 1. Threads en Java
Object 1 Threads en Java Introducción En este artículo voy a explicar cómo se usan los threads en Java (también traducidos como "hilos de ejecución"). La intención no es solamente explicar cuáles son las
Más detallesMONITORES EN JAVA. Antonio Tomeu Control de la Concurrencia en Java: API Estándar
MONITORES EN JAVA Un monitor es un objeto que implementa acceso bajo e.m. a todos sus métodos, y provee sincronización En Java, son objetos de una clase cuyos métodos públicos son todos synchronized Un
Más detallesProgramación multihebra
Programación multihebra by Scheme the API man 2000 (jmrequena@larural.es) Qué es la programación multihebra? Podemos definir la programación multihebra o multihilo como un estilo de ejecucion en el que
Más detallesProgramación Concurrente en Java
Programación Concurrente en Java Curso 2006-2007 9/2/2007 Prog. Distribuida Bajo Internet Qué es la Programación Concurrente? Diseño basado en varias actividades independientes Conceptualmente se ejecutan
Más detallesModulo 1 El lenguaje Java
Modulo 1 El lenguaje Java 13 - Codificación en Java Una de las grandes diferencias entre Java y Pascal en cuando a la codificación es que Java se trata de un lenguaje de los llamados case sensitive Esto
Más detallesGESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C)
APRENDERAPROGRAMAR.COM GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado I
Más detallesProgramación Orientada a Objetos con Java
Programación Orientada a Objetos con Java M.C. Jorge Eduardo Ibarra Esquer jorgeeie@uabc.mx Sobrecarga de métodos Java permite la definición de dos o más métodos que tengan el mismo nombre, dentro de la
Más detallesHilos en Java. Crear un Hilo. Detener un hilo. Fuente: http://www.chuidiang.com/java/hilos/hilos_java.php
Fuente: http://www.chuidiang.com/java/hilos/hilos_java.php Hilos en Java A veces necesitamos que nuestro programa Java realice varias cosas simultáneamente. Otras veces tiene que realizar una tarea muy
Más detallesConcurrencia: deberes. Concurrencia: Exclusión Mutua y Sincronización. Concurrencia. Dificultades con la Concurrencia
Concurrencia: deberes Concurrencia: Exclusión Mutua y Sincronización Capítulo 5 Comunicación entre procesos Compartir recursos Sincronización de múltiples procesos Asignación del tiempo de procesador Concurrencia
Más detallesun programa concurrente
Introducción un programa concurrente asumimos que tengamos un programa concurrente que quiere realizar acciones con recursos: si los recursos de los diferentes procesos son diferentes no hay problema,
Más detallesHebras y Sincronización en Java
Hebras y Sincronización en Java Jonathan Makuc http://jmakuc.ublog.cl Noviembre 2008 Tópicos: 1. Introducción a hebras en Java...2 2. Hebras a través del clase Thread...3 3. Hebras a través de la interfaz
Más detallesConcurrencia en Android LSUB, GYSC, URJC
Concurrencia en Android LSUB, GYSC, URJC Repaso de concurrencia en Java Crear un thread Instanciar un Thread, con el método run sobreescrito Intanciar un objeto que cumpla el interfaz Runnable y pasárselo
Más detallesMensajes. Interbloqueo
CONCURRENCIA DE PROCESOS Preparado por: Angel Chata Tintaya (angelchata@hotmail.com) Resumen Los procesos comparten variables globales, comparten y compiten por recursos, se ejecutan simultáneamente intercalándose
Más detallesHilos, comunicación y competencia entre procesos. Dr. Alonso Ramírez Manzanares 2-Sep-2010
Hilos, comunicación y competencia entre procesos Dr. Alonso Ramírez Manzanares 2-Sep-2010 Implementación de procesos Se mantiene una tabla de procesos con una entrada por cada proceso: Con lo cual tenemos
Más detallesManual de rol gestor de GAV para moodle 2.5
Manual de rol gestor de GAV para moodle 2.5 Consultas LDAP-GAUR... 2 Buscar en LDAP datos de un usuario... 2 Docentes... 3 Buscar en GAUR datos de un docente... 3 Buscar en GAUR la docencia de un docente
Más detalles1 (2 5 puntos) Responda con brevedad y precisión a las siguientes preguntas:
Universidad de Las Palmas de Gran Canaria Escuela Universitaria de Informática Facultad de Informática Sistemas Operativos Examen parcial, 11 de mayo de 2002 SOLUCIONES Calificación 1 2 3 4 5 1 (2 5 puntos)
Más detallesRepaso de las características más importantes de la programación Java y su adaptación a Android
Repaso de las características más importantes de la programación Java y su adaptación a Android 1. Entorno de programación en java 2. Variables y tipos de datos 3. Operaciones y operadores 4. Clases y
Más detallesclass Nombre_Clase extends Nombre_SuperClase { cuerpo de la clase extendida }
REUTILIZACIÓN DE CLASES:MODELO DE HERENCIA EN JAVA Java soporta herencia simple pero no múltiple. Lo hace mediante el mecanismo de extensión de clase. A partir de él, una subclase se extiende (hereda)
Más detallesTema 6. Reutilización de código. Programación 2015-2016. Programación - Tema 6: Reutilización de código
Tema 6 Reutilización de código Programación 2015-2016 Programación - Tema 6: Reutilización de código 1 Tema 6. Reutilización de código Modularidad. Implementación de métodos. Uso de métodos. Programación
Más detallesPruebas de unidad con JUnit
Pruebas de unidad con JUnit Cuando se implementa software, resulta recomendable comprobar que el código que hemos escrito funciona correctamente. Para ello, implementamos pruebas que verifican que nuestro
Más detallesModelo de Objetos Distribuidos
Remote Method Invocation Modelo de Objetos Distribuidos Un objeto remoto es un objeto cuyos métodos pueden ser invocados desde otra máquina virtual de java, potencialmente en un host diferente. Modelo
Más detallesConcurrencia en Java
Concurrencia en Java Concurrencia y Distribución Programación Avanzada Posgrado en Ciencia e Ingeniería de la Computación, UNAM 1. El mecanismo de threads Una aplicación Java o applet puede contener secciones
Más detalles4. Programación Paralela
4. Programación Paralela La necesidad que surge para resolver problemas que requieren tiempo elevado de cómputo origina lo que hoy se conoce como computación paralela. Mediante el uso concurrente de varios
Más detallesSOLUCION PARCIAL TASK SCHEDULER. Task Scheduler
Task Scheduler Se necesita modelar una aplicación que permita definir tareas y ejecutarlas en forma programada. Las tareas pueden ser: La ejecución de programa cualquiera o comando del sistema operativo,
Más detallesProcesos. Planificación del Procesador.
Procesos. Planificación del Procesador. Sistemas Operativos. Tema 2. Concepto de Proceso. Una definición sencilla: Programa en ejecución. Entidad pasiva Programa RECURSOS CPU Memoria Ficheros Dispositivos
Más detallesProgramación Avanzada para Sistemas de Telecomunicación. Objetos y clases. J.C. Cruellas. Objetos y clases
Programación Avanzada para Sistemas de Telecomunicación Objetos y clases Juan Carlos Cruellas cruellas@ac.upc.es Objetos y clases Concepto de objeto. Concepto de clase. Clases, objetos y programas. Clases
Más detallesCDI Exclusión mutua a nivel alto. conceptos
conceptos El concepto de usar estructuras de datos a nivel alto libera al programador de los detalles de su implementación. El programador puede asumir que las operaciones están implementadas correctamente
Más detallesReceta general para resolver problemas de sincronización con semáforos
Receta general para resolver problemas de sincronización con semáforos La primera vez que te enfrentas a la tarea de implementar una solución a un problema de sincronización entre procesos, es normal que
Más detallesGuía de uso del Cloud Datacenter de acens
guíasdeuso Guía de uso del Cloud Datacenter de Calle San Rafael, 14 28108 Alcobendas (Madrid) 902 90 10 20 www..com Introducción Un Data Center o centro de datos físico es un espacio utilizado para alojar
Más detalles8. Sentencia return y métodos
92 A. García-Beltrán y J.M. Arranz 8. Sentencia return y métodos Objetivos: a) Describir el funcionamiento de la sentencia return b) Interpretar el resultado de una sentencia return en el código fuente
Más detallesSISTEMAS OPERATIVOS AVANZADOS
SISTEMAS OPERATIVOS AVANZADOS TEMA 3 CLAVE: MIS 204 PROFESOR: M.C. ALEJA DRO GUTIÉRREZ DÍAZ 3. PROCESOS CONCURRENTES 3.1 Conceptos de programación concurrente 3.2 El problema de la sección crítica 3.3
Más detallesClases abstractas e interfaces
Clases abstractas e interfaces Clases abstractas Una clase abstracta es una clase que no se puede instanciar se usa únicamente para definir subclases Cuándo es una clase abstracta? En cuanto uno de sus
Más detallesProgramación Orientada a Objetos en Java
Programación Orientada a Objetos en Java Curso 2006-2007 Tema 4 Herencia y Polimorfismo Gonzalo Méndez Pozo Dpto. de Ingeniería de Software e Inteligencia Artificial Universidad Complutense de Madrid Herencia
Más detallesPrimer Parcial Septiembre 5 de 2009
Primer Parcial Septiembre 5 de 2009 Algoritmos y Lenguajes II Reglas del juego Tal como se le dijo antes, durante este examen usted no puede pedir ABSOLUTAMENTE nada prestado a sus compañeros, ni hablar
Más detallesProgramación Concurrente y Paralela. P(S) ; sección crítica P(S);
2.5.2 Monitores Los semáforos, a pesar de su sencillez de uso, son el equivalente a las instrucciones goto y el manejo de apuntadores en los lenguajes de programación imperativos: son muy susceptibles
Más detallesPatrones Creacionales Builder. Patrones Creacionales Abstract Factory. Patrones Creacionales Singleton. Patrones Creacionales Prototype
Temario Patrones de Diseño de Software Fundamentos de Ingeniería de SW Jocelyn Simmonds GOF: Patrones Creacionales Patrones Estructurales ILI-236 (JS) Patrones II 1 / 31 ILI-236 (JS) Patrones II 2 / 31
Más detallesTema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle
Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Contenido Tipos de herencia Herencia y niveles de visibilidad Herencia y creación Redefinición de métodos Conversión
Más detallesIntroducción a la programación orientada a objetos
Introducción a la programación orientada a objetos 1. Introducción a la programación orientada a objetos 2. Las clases 3. El tipo Struct 4. Diferencias entre Class y Struct 5. Pilares de la Programación
Más detallesSistema de proceso por lotes: esquema operativo
Sistema de proceso por lotes: esquema operativo MAINFRAME CPU Lector de tarjetas MEM SO Impresora Programa de usuario Programadores Sistema de proceso por lotes: características operativas Los programadores
Más detallesObjetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.
Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero. Uso de Ficheros Todas las estructuras de datos vistas hasta ahora utilizan la
Más detallesProgramación concurrente en Java
Diseño Y Aplicaciones de Sistemas Distribuidos Programación concurrente en Java Joan Vila DISCA / UPV Departament d Informàtica de Sistemes i Computadors Universitat Politècnica de València Threads en
Más detallesPartes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.
Partes de un programa en Java A. Ejemplo de un Programa en Java /* class Ejemplo1 { //comienza la clase Ejemplo1. public static void main(string[] args) { // comienza el método main. JFrame miventana;
Más detallesNormalmente, los programas son ejecutados de forma secuencial. Único flujo de control
Hilos BUAP Introducción Normalmente, los programas son ejecutados de forma secuencial Único flujo de control Un programa con un único flujo de control, ejecuta sólo una tarea (hilo) Dr. Ivan Olmos 2 Introducción
Más detallesUniversidad de Cantabria corcuerp@unican.es
Herencia Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria corcuerp@unican.es Objetivos Aprender los conceptos de herencia Comprender la forma de derivar una
Más detallesProgramación en Java. Programación en OO
Programación en OO Lección 4:Programación en OO 1. Herencia 2. Modificadores de Acceso 3. Interfaces Herencia Es la acción en la que una clase obtiene los métodos y propiedades definidos en otra clase,
Más detalles1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)
1. : La clase Cuenta. Uso de la clase Cuenta 3. Métodos y objetos receptores de mensajes (Importante) 1 Una clase para cuentas de un banco Vamos a modelar con una clase, un nuevo tipo de datos, donde los
Más detallesvoid main(void) { string lname; list <string> lnamelist; cout << "Please enter your list of last names finishing with `.`"<<endl;
Segundo Certamen 1.- Haga uso de la información adjunta y desarrolle un programa en C++ que lea apellidos de teclado y los almacene en una lista. Luego se pide listar los apellidos en orden alfabético
Más detallesSistema operativo Discos duros Usuarios
Práctica III Para este último bloque de unidades, vamos a modificar la infraestructura de la empresa PEQUE, S.A., que tenemos: Tipo de hardware Sistema operativo Discos duros Usuarios TIPO 1 (5 equipos)
Más detallesProyecto Help Desk en plataforma SOA Modelo de Dominio Versión 1.3. Historia de revisiones
Proyecto Help Desk en plataforma SOA Modelo de Dominio Versión.3 Historia de revisiones Fecha Versión Descripción Autor 8/08/2005.0 Se presenta modelo de dominio, restricciones y observaciones. 25/08/2005.
Más detallesPROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez
PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez Encapsulamiento: Control de Acceso Clases en Java (1) UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO En Java se organizan las clases en paquetes
Más detalles3. PROGRAMACION CONCURRENTE
3. PROGRAMACION CONCURRENTE INTRODUCCION Actualmente observamos que el paradigma orientado a objetos, solo podemos ejecutar un equipo a la vez como máximo en cambio con la introducción de las hebras concurrentes(programación
Más detallesWindows XP Instalación y configuración de hardware
Servicio de Informática Atención al Usuario Windows XP Instalación y configuración de hardware Sección de Atención al Usuario Ultima modificación: 01 de Julio de 2.003 Instalación y configuración de hardware
Más detallesBase de datos en Excel
Base de datos en Excel Una base datos es un conjunto de información que ha sido organizado bajo un mismo contexto y se encuentra almacenada y lista para ser utilizada en cualquier momento. Las bases de
Más detallesMonitores Ing. Iván Medrano Valencia
Universidad Nacional de San Antonio Abad del Cusco Departamento Académico de Informática Programación Concurrente y Distribuida Práctica 5 1. OBJETIVO. Ing. Iván Medrano Valencia En esta práctica, comprobaremos
Más detalles1. Qué tipos de relación hay entre las siguientes clases?
Ejercicios Tema 8: Herencia 1. Qué tipos de relación hay entre las siguientes clases? Personal de la Universidad PAS Profesor 1 n Estudiante a) herencia y asociación b) herencia y dependencia c) dependencia
Más detallesSINAUTO. (Captura Requirimientos) GRUPO 03
SINAUTO (Captura Requirimientos) GRUPO 03 Iker Jauregi ikerjauregivicente@hotmail.com Iñigo Arregui bateman2012@gmail.com Javier Arce arcjav@hotmail.com Jorge García. jgfand@gmail.com Patxi Campos.patxi948@wanadoo.es
Más detallesAdaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: 93.410.92.92 Fax.: 93.419.86.49 e-mail:atcliente@websie.
Adaptación al NPGC Introducción Nexus 620, ya recoge el Nuevo Plan General Contable, que entrará en vigor el 1 de Enero de 2008. Este documento mostrará que debemos hacer a partir de esa fecha, según nuestra
Más detallesManual de uso: Contabilidad de Costes. Sincronizacio n con el Sistema Canoa.
Manual de uso: Contabilidad de Costes. Sincronizacio n con el Sistema Canoa. Contenido 1 2 3 4 5 HABILITAR DATOS DE COSTES EN EL ÓRGANO GESTOR.... 2 SINCRONIZACIÓN DE DATOS DE CANOA... 2 2.1 ACCESO...
Más detallesIncidencias: Todas las incidencias que ocurrirán durante el apadrinamiento de un niño se deben registrar para poder buscar soluciones.
Apadrinamiento ONG Estudio preliminar: Se desea diseñar una aplicación para la gestión de los apadrinamientos de una asociación ONG. Para ello el sistema proporcionara una interfaz al usuario para poder
Más detallesImplementación de monitores POSIX
Implementación de monitores POSIX Ampliación de Sistemas Operativos (prácticas) E.U. Informática en Segovia Universidad de Valladolid Programación concurrente: Problemática Presencia de condiciones de
Más detallesEstructura de datos tipo vector.
Estructura de datos tipo vector. Hemos empleado variables de distinto tipo para el almacenamiento de datos (variables int, float, String) En esta sección veremos otros tipos de variables que permiten almacenar
Más detallesCon esta nueva versión, si un artículo que está incluido dentro de un Paquete de Ventas tiene precio 0,00, significará gratis.
NOVEDADES Y MEJORAS Continuando con nuestra política de mejora, innovación y desarrollo, le presentamos la nueva versión 9.50 de datahotel que se enriquece con nuevas funcionalidades que aportan soluciones
Más detalles2. Estructura de un programa en Java
24 A. García-Beltrán y J.M. Arranz 2. Estructura de un programa en Java Objetivos: a) Describir la estructura del código fuente de una aplicación Java b) Presentar los conceptos de comentario y de identificador
Más detallesPHP y MySQL. Inicio: - Herencia - Palabra clave Final - Polimorfismo - Type Hinting - Abstracción de clases
PHP y MySQL Inicio: - Herencia - Palabra clave Final - Polimorfismo - Type Hinting - Abstracción de clases Herencia de Objetos La herencia permite crear muchas clases que son similares entre si, sin tener
Más detallesAcronis License Server. Guía del usuario
Acronis License Server Guía del usuario TABLA DE CONTENIDO 1. INTRODUCCIÓN... 3 1.1 Generalidades... 3 1.2 Política de licencias... 3 2. SISTEMAS OPERATIVOS COMPATIBLES... 4 3. INSTALACIÓN DE ACRONIS LICENSE
Más detalles1. Manejo de memoria estática 2. Manejo de memoria dinámica
1. Manejo de memoria estática 2. Manejo de memoria dinámica *La administración de memoria de una computadora es una tarea fundamental debido a que la cantidad de memoria es limitada. *El sistema operativo
Más detallesManual del Usuario. Sistema de Help Desk
Manual del Usuario Sistema de Help Desk Objetivo del Manual El siguiente manual tiene como objetivo proveer la información necesaria para la correcta utilización del sistema Help Desk. Describe los procedimientos
Más detallesArquitecturas cliente/servidor
Arquitecturas cliente/servidor Servidores y Clientes Sincronizados Contenido Procesos Semáforos Sincronización Lectura y Escritura de Archivos Servidores Orientados a Conexión Servidores No Orientados
Más detallesSecretos de la Programación Concurrente
Secretos de la Programación Concurrente Stuart Perez, Luis Castro Autómatas y Compiladores, Escuela de Ciencias de la Computación e Informática, San Pedro de Montes de Oca, Costa Rica jstuartp@gmail.com
Más detallesAPELLIDOS:... NOMBRE:... GRUPO:... NÚMERO DE EXPEDIENTE:...
Cuadernillo de examen ASIGNATURA Laboratorio de Sistemas Operativos Abiertos (Java) CÓDIGO 321 CONVOCATORIA Extraordinaria de Septiembre de 2003 PLAN DE ESTUDIOS 1996 ESPECIALIDAD Sistemas CURSO 2002/2003
Más detallesManual del Protocolo XML-RPC de Mensajería Negocios
Manual del Protocolo XML-RPC de Mensajería Negocios Índice de contenidos 1 INTRODUCCIÓN... 3 2 FUNCIONALIDADES DEL API DE COMUNICACIÓN XML-RPC... 4 2.1 Envío Libre... 4 2.2 Envío a Grupo de Contactos...
Más detallesEcuaciones de primer grado con dos incógnitas
Ecuaciones de primer grado con dos incógnitas Si decimos: "las edades de mis padres suman 120 años", podemos expresar esta frase algebraicamente de la siguiente forma: Entonces, Denominamos x a la edad
Más detallesSistemas Operativos. Curso 2014 Planificación
Sistemas Operativos Curso 2014 Planificación Agenda Introducción. Despachador. Clases de procesos. Esquemas de planificación. Criterios de planificación. Algoritmos de planificación. FCFS. SJF. Prioridad.
Más detallesEl soporte del sistema operativo. Hace que un computador sea más fácil de usar. Permite que los recursos del computador se aprovechen mejor.
El soporte del sistema operativo Objetivos y funciones del sistema operativo Comodidad Hace que un computador sea más fácil de usar. Eficiencia Permite que los recursos del computador se aprovechen mejor.
Más detallesSistemas Operativos. Curso 2015 Planificación
Sistemas Operativos Curso 2015 Planificación Agenda Introducción. Despachador. Clases de procesos. Esquemas de planificación. Criterios de planificación. Algoritmos de planificación. FCFS. SJF. Prioridad.
Más detallesLenguajes de Programación Curso 04-05. Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces 1. 2. Clases abstractas 2
Objetivos Herencia. Utilización de interfaces y clases abstractas. Índice 1. Interfaces 1 2. Clases abstractas 2 3. Collections Framework 3 3.1. Collection........................................... 3
Más detallesAdministrar El Usuario Mediante Windows NT
Administrar El Usuario Mediante Windows NT Administración de usuarios El Administrador de usuarios es la utilidad estándar que ofrece Windows NT. Como su nombre indica, se encarga de la administración
Más detallesPlanificación de Procesos. Módulo 5. Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco
Planificación de Procesos Módulo 5 Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco Planificación de Procesos Conceptos Básicos Criterios de Planificación
Más detallesTécnicas Avanzadas de Testing Automatizado
Técnicas Avanzadas de Testing Automatizado Introducción: Testing ad hoc Testing sistemático Testing unitario Unidad y Suite de tests Frameworks xunit Fixtures compartidos e independecia Tests parametrizados
Más detallesCurso de Java POO: Programación orientada a objetos
Curso de Java POO: Programación orientada a objetos Luis Guerra Velasco Curso INEM 02830. Programación en Java Marzo 2010 Índice 1 Introducción a la POO 2 Herencia y polimorfismo 3 Empaquetado de proyectos
Más detallesIngeniería del Software Arquitectura Física en 3 niveles
Introducción En este laboratorio desplegaremos en 3 niveles físicos una aplicación que verifica si una cuenta y un password son correctos, basada en la que fue presentada en el laboratorio Separación entre
Más detallesUnidad II: Administración de Procesos y del procesador
Unidad II: Administración de Procesos y del procesador 2.1 Concepto de proceso Un proceso no es más que un programa en ejecución, e incluye los valores actuales del contador de programa, los registros
Más detalles