3.- Programación multihilo Flashcards

1
Q

3.1.- Programación de hilos. Librerías y clases

Clase Thread. Funciones

A
  • void start ()
  • void run ()
  • static Thread currentThread ()
  • long getId ()
  • static void sleep (long milis)
  • void interrupt ()
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

3.1.- Programación de hilos. Librerías y clases

Clase Thread. Funcion void start ()

A

Inicializa el hilo.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

3.1.- Programación de hilos. Librerías y clases

Clase Thread. Funcion void run ()

A

Comienza la ejecución del hilo.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

3.1.- Programación de hilos. Librerías y clases

Clase Thread. Funcion static Thread currentThread ()

A

Devuelve la referencia del hilo que se encuentra en ejecución.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

3.1.- Programación de hilos. Librerías y clases

Clase Thread. Funcion long getId ()

A

Devuelve el identificador del hilo.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

3.1.- Programación de hilos. Librerías y clases

Clase Thread. Funcion static void sleep (long milis)

A

El hilo se detiene durante el número de milisegundos especificado.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

3.1.- Programación de hilos. Librerías y clases

Clase Thread. Funcion void interrupt ()

A

Interrumpe la ejecución del hilo.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

3.2.- Gestión de hilos

Proceso. Definición

A

Un proceso es cualquier programa en ejecución y es totalmente independiente de otros procesos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

3.2.- Gestión de hilos

Procesos. Relación con hilos

A

Un proceso puede tener varios hilos de ejecución que realizarán subtareas del proceso principal que los ha creado.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

3.2.- Gestión de hilos

Hilo. Definición

A

Un hilo es un conjunto de tareas que se ejecutan por el sistema operativo. También se denominan hebras o subprocesos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

3.2.- Gestión de hilos

Hilos. Información propia

A

Los hilos contienen información propia, como, por ejemplo, su identificador y toda aquella información que sea necesaria para que la aplicación pueda comunicarse con el sistema, es decir, el contador del programa, la pila de ejecución y el estado de la CPU.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

3.2.- Gestión de hilos

Hilos. Recursos compartidos

A

Mientras que los procesos se caracterizan por no compartir la memoria con la que trabajan y ser independientes entre ellos, lo hilos no son iguales. Estos últimos suelen compartir la memoria con la que trabajan, puesto que pertenecen al mismo proceso.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

3.2.- Gestión de hilos

Hilos. Recursos compartidos. Navegador web

A

Un ejemplo que puede ayudar a entender este concepto es un navegador web. El navegador web es un proceso con un identificador. Dentro de ese navegador es posible crear diferentes pestañas que comparten la memoria.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

3.2.- Gestión de hilos

Hilos. Recursos compartidos. Valores modificados

A

Cuando un hilo modifica un dato en la memoria, el resto de hilos del proceso pueden obtener este valor modificado.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

3.2.- Gestión de hilos

Hilos. Ventajas

El uso de hilos en lugar de procesos tiene bastantes ventajas, entre las que se destacan dos

A

El uso de hilos en lugar de procesos tiene bastantes ventajas, entre las que se destacan dos:
* La creación de un hilo tiene un coste menor que la creación de un proceso, puesto que no es necesario reservar.
memoria para cada uno de ellos porque la comparten.
* Es más rápido cambiar de un hilo a otro que de un proceso a otro.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

3.2.- Gestión de hilos

Hilos. Tareas

A

Estos hilos suelen ser utilizados la mayor parte de las ocasiones para llevar a cabo tareas en segundo plano, puesto que se reduce mucho el tiempo de realización de diversas tareas de forma simultánea.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

3.2.- Gestión de hilos

Hilos. Java

A

Java es uno de los lenguajes de programación que permite trabajar con distintos hilos en el desarrollo de una aplicación.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

3.3.- Progrmación multihilo

Programacion multihilo. Tiempo de ejecución

A

A la hora de desarrollar un software es necesario tener en cuenta qué tiempo de ejecución debe de tener como máximo una aplicación

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

3.3.- Progrmación multihilo

Programacion multihilo. Consumo de recursos

A

Es importante medir el consumo de recursos que esta ha utilizado. Cuando existe solo un proceso, existe la posibilidad de que el consumo de memoria RAM y recursos del procesador por parte del proceso en ejecución, sobrecargue el sistema.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

3.3.- Progrmación multihilo

Programacion multihilo. Hilos de ejecución

A

Como solución a esto se han creado los hilos de ejecución que permiten ser ejecutados dentro de una aplicación de forma paralela y haciendo uso de otra parte del código. Hoy en día la programación de aplicaciones con estas características es fundamental.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

3.3.- Progrmación multihilo

Programacion multihilo. Optimización del rendimiento

A

De esta forma, es posible ejecutar un hilo en primer
plano que permita la comunicación con el usuario, y, en
segundo plano, hilos que vayan ejecutando las diferentes tareas de carga de una aplicación. Con esto se consigue que el rendimiento del equipo esté más optimizado. Además, permiten al usuario trabajar con diferentes aplicaciones al mismo tiempo sin penalizar el rendimiento del equipo. Esto posibilita una gran cantidad de opciones como, por ejemplo, el trabajo en múltiples escritorios con diversas aplicaciones de forma paralela.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

3.4.- Estados de un hilo

Hilos. Ciclo de vida

A

Al igual que los procesos, los hilos tienen un ciclo de vida en el que van pasando por diferentes estados.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

3.4.- Estados de un hilo

Hilos. Estados

Los estados que pueden tener un hilo son

A

Los estados que pueden tener un hilo son:
* Listo
* Ejecución
* Bloqueado
* Muerto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

3.4.- Estados de un hilo

Hilos. Estados. Listo

A

Se ha creado el hilo, pero aún no ha comenzado su ejecución.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

3.4.- Estados de un hilo

Hilos. Estados. Ejecución

A

Cuando un objeto llama al método start() comienza la ejecución del hilo, es decir, se empiezan a ejecutar las instrucciones que se encuentran en el método run().

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

3.4.- Estados de un hilo

Hilos. Estados. Bloqueado

A

El hilo se ha parado pero puede volver a ejecutarse.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

3.4.- Estados de un hilo

Hilos. Estados. Bloqueado. Acciones

A

Normalmente, el hilo se bloquea por alguna de
las siguientes acciones:
* Se invoca al método sleep().
* El hilo queda a la espera de que finalice una operación de entrada/salida.
* Se invoca el método wait(). Cuando un hilo queda bloqueado por este método, otro hilo debe invocar el método notify() o notifyAll(), dependiendo de si quiere despertar un único hilo, o todos aquellos que estén bloqueados, respectivamente.
* Otro hilo, externamente, invoca al método suspend(). Cuando un hilo llama al método suspend(), el hilo bloqueado debe recibir el mensaje resume() para poder volver a la ejecución.

28
Q

3.4.- Estados de un hilo

Hilos. Estados. Muerto

A

Ell hilo muere, ya sea porque ha finalizado el método run() o porque externamente han decidido pararlo.

29
Q

3.4.- Estados de un hilo

Hilos. Cambios de estado

Los cambios de estado de un hilo vienen dados por las
siguientes situaciones:

A

Los cambios de estado de un hilo vienen dados por las
siguientes situaciones:
* Creación
* Bloqueo
* Desbloqueo
* Terminación

30
Q

3.4.- Estados de un hilo

Hilos. Cambios de estado. Creación

A

Cuando se crea un proceso se crea un hilo para ese proceso. Después, este hilo puede crear otros hilos dentro del mismo proceso. El hilo pasará a la cola de los Listos.

31
Q

3.4.- Estados de un hilo

Hilos. Cambios de estado. Bloqueo

A

Cuando un hilo necesita esperar por un suceso, se bloquea (guardando sus registros de usuario, contador de programa y punteros de pila). Ahora el procesador podrá pasar a ejecutar otro hilo que esté al principio de la cola de Listos, mientras el anterior permanece bloqueado.

32
Q

3.4.- Estados de un hilo

Hilos. Cambios de estado. Desbloqueo

A

Cuando el evento por el que el hilo permanecía en estado de bloqueo finaliza, el hilo pasa a la cola de los Listos.

33
Q

3.4.- Estados de un hilo

Hilos. Cambios de estado. Terminación

A

Cuando un hilo finaliza, se liberan todos los recursos utilizados por él.

34
Q

3.5.- Recursos compartidos entre hilos

Hilos. Espacio de memoría

A

Si distintos hilos comparten el mismo espacio de memoria pueden aparecer algunos problemas, denominados problemas de sincronización

35
Q

3.5.- Recursos compartidos entre hilos

Hilos. Problemas de sincronización

Si distintos hilos comparten el mismo espacio de memoria
pueden aparecer algunos problemas, denominados problemas de sincronización. Estos son los siguientes

A

Estos son los siguientes:
* Condición de carrera
* Inconsistencia de memoría
* Inanición
* Interbloqueo

36
Q

3.5.- Recursos compartidos entre hilos

Hilos. Problemas de sincronización. Condición de carrera

A

Es la ejecución de un programa en la que su salida depende de la secuencia de eventos que ocurran.

37
Q

3.5.- Recursos compartidos entre hilos

Hilos. Problemas de sincronización. Inconsistencia de memoria

A

Se produce cuando los hilos, que comparten un dato en memoria, ven varios valores para el mismo elemento.

38
Q

3.5.- Recursos compartidos entre hilos

Hilos. Problemas de sincronización. Inanición

A

Es un problema grave, y se trata de la denegación del acceso a un recurso compartido al mismo hilo. De este modo, queda bloqueado a su espera.

39
Q

3.5.- Recursos compartidos entre hilos

Hilos. Problemas de sincronización. Interbloqueo

A

Es un problema grave, y ocurre cuando un hilo está esperando por un recurso compartido, el cual está asociado a un hilo que tiene el estado de bloqueado.

40
Q

3.5.- Recursos compartidos entre hilos

Hilos. Mecanismos de sincronización

A

Para poder evitarlos en gran medida, es necesario implementar mecanismos de sincronización entre los hilos de un proceso.

41
Q

3.5.- Recursos compartidos entre hilos

Hilos. Mecanismos de sincronización. Zona de exclusión mutua

A

Se consigue que un hilo que quiere acceder al mismo recurso que otro, se quede en espera hasta que se liberan dichos recursos. Este tipo de mecanismos se denominan zona de exclusión mutua.

42
Q

3.5.- Recursos compartidos entre hilos

Hilos. Esperar y continuar

A

Estos hilos deben saber quiénes de ellos deben esperar y cuáles continuar con su ejecución. Para ello existen diferentes mecanismos de comunicación entre hilos.

43
Q

3.5.- Recursos compartidos entre hilos

Hilos. Mecanismos de sincronización

Estos hilos deben saber quiénes de ellos deben esperar y cuáles continuar con su ejecución. Para ello existen diferentes mecanismos de comunicación entre hilos.

A

Para ello existen diferentes mecanismos de comunicación entre hilos:
* Operaciones atómicas
* Secciones críticas
* Semáforos
* Tuberías
* Monitores
* Paso de mensajes

44
Q

3.5.- Recursos compartidos entre hilos

Hilos. Mecanismos de sincronización. Operaciones atómicas

A

Se realizan a la vez, por lo que forman un pack. Así se evita que los datos compartidos tengan distintos valores para el resto de hilos del proceso.

45
Q

3.5.- Recursos compartidos entre hilos

Hilos. Mecanismos de sincronización. Secciones críticas

A

Permiten estructurar el código de la aplicación, de modo que se accede a los datos compartidos de forma ordenada.

46
Q

3.5.- Recursos compartidos entre hilos

Hilos. Mecanismos de sincronización. Semáforos

A

Es un mecanismo que toma los valores 0 o 1. El hilo que accede al recurso inicia el semáforo a 1 y, cuando finaliza, el valor se queda a 0.

47
Q

3.5.- Recursos compartidos entre hilos

Hilos. Mecanismos de sincronización. Tuberías

A

Los hilos se añaden a una cola que da prioridad a través de un algoritmo FIFO. Por tanto, el primero que
solicite el acceso será asignado al recurso.

48
Q

3.5.- Recursos compartidos entre hilos

Hilos. Mecanismos de sincronización. Monitores

A

Aseguran que solo un hilo tendrá acceso al recurso con el estado de ‘ejecución’, gracias al envío de señales. El proceso que accede recibe el uso del candado y, tras su finalización, lo devuelve al monitor.

49
Q

3.5.- Recursos compartidos entre hilos

Hilos. Mecanismos de sincronización. Paso de mensajes

A

Los hilos deben contener los métodos para entender los mensajes. En consecuencia, el coste es mayor. Sin embargo, si hay seguridad en el envío y recepción de un mensaje, existe la garantía de que solo un proceso accederá a un recurso determinado en el mismo momento.

50
Q

3.6.- Programas multihilo y sincronización

Hilos. Programas multihilos

A

Cuando en un programa tenemos varios hilos ejecutándose a la vez es posible que varios hilos intenten acceder a la vez al mismo sitio (fichero, conexión, array de datos…) y es posible que la acción de uno de ellos entorpezca la del otro.

51
Q

3.6.- Programas multihilo y sincronización

Hilos. Problemas de sincronización

A

Para solucionar estos problemas, hay que sincronizar los hilos. Por ejemplo si Hilo A escribe en fichero “Hola” y el Hilo B escribe “Adiós” , al final quedarán las letras entremezcladas. La finalidad es que el Hilo A escriba primero “Hola” y luego el Hilo B escriba “Adiós”. Así que cuando un hilo escriba en el fichero, debe marcar de alguna manera que el fichero está ocupado y el otro hilo deberá esperar que esté libre.

52
Q

3.6.- Programas multihilo y sincronización

Hilos. Sincronización en Java

A

La forma de comunicarse consiste en compartir un objeto. Imaginemos que escribimos en un fichero usando una variable fichero de tipo PrintWriter. Para escribir el Hilo A hará esto:

  • fichero.println(“Hola”);

Mientras el Hilo B hará esto:

  • fichero.println(“Adiós”);

Si los dos hilos lo hacen a la vez, sin ningún tipo de sincronización, el fichero final puede tener esto:

  • HoAldiaós

Para evitar este problema debemos sincronizar los hilos. En Java el código sería así:

  • synchronized (fichero) { fichero.println(“Hola”); }

Y el otro hilo:

  • synchronized (fichero) { fichero.println(“Adiós”); }
53
Q

3.6.- Programas multihilo y sincronización

Hilos. Método synchronized(fichero)

A

Al poner synchronized(fichero) marcamos fichero como
ocupado desde que se abren las llaves hasta que se cierran. Cuando el Hilo B intenta también su synchronized(fichero), se queda ahí bloqueado, en espera de que el Hilo A termine con fichero.

54
Q

3.6.- Sistema operativos y los hilos. Planificación y acceso

Hilos. Sistema operativo. Formas de implementar

Los sistemas operativos tienen dos formas de implementar hilos:

A

Los sistemas operativos tienen dos formas de implementar hilos:
* Multihilo apropiativo
* Multihilo cooperativo

55
Q

3.6.- Sistema operativos y los hilos. Planificación y acceso

Hilos. Sistema operativo. Formas de implementar. Multihilo apropiativo

A

Permite al sistema operativo determinar cuándo debe haber un cambio de contexto. Pero esto tiene una desventaja, y es que el sistema puede hacer un cambio de contexto en un momento inoportuno, causando una confusión de prioridades, creando una serie de problemas.

56
Q

3.6.- Sistema operativos y los hilos. Planificación y acceso

Hilos. Sistema operativo. Formas de implementar. Multihilo cooperativo

A

Depende del mismo hilo abandonar el control el control cuando llega a un punto de detección, lo cual puede traer problemas cuando el hilo espera la disponibilidad de un recurso.

57
Q

3.6.- Sistema operativos y los hilos. Planificación y acceso

Hilos. Gestión de prioridades en Java

A

En cuanto a la gestión de las prioridades, en el lenguaje
Java, cada tiene una preferencia. Predeterminadamente, un hilo hereda la prioridad del hilo padre que lo crea, aunque puede aumentar o disminuir mediante el método setPriority(). Para obtener la prioridad del hilo se utiliza el método getPriority().

58
Q

3.6.- Sistema operativos y los hilos. Planificación y acceso

Hilos. Método setPriority()

A

Aumentar o disminuir la prioridad del hilo.

59
Q

3.6.- Sistema operativos y los hilos. Planificación y acceso

Hilos. Método getPriority()

A

Obtener la prioridad del hilo.

60
Q

3.6.- Sistema operativos y los hilos. Planificación y acceso

Hilos. Valores de prioridad en Java

A

La prioridad se mide mediante un rango de valores enteros entre 1 y 10, siendo 1 la mínima prioridad (MIN_PRIORITY) y 10 el valor de máxima (MAX_PRIORITY). Si varios hilos tienen la misma prioridad, la máquina virtual va cediendo control de forma cíclica.

61
Q

3.6.- Sistema operativos y los hilos. Planificación y acceso

Hilos. Propidad MIN_PRIORITY

A

1 la mínima prioridad (MIN_PRIORITY)

62
Q

3.6.- Sistema operativos y los hilos. Planificación y acceso

Hilos. Propidad MAX_PRIORITY

A

10 la mínima prioridad (MAX_PRIORITY)

63
Q

3.7.- Depuración y documentación de aplicaciones

Desarrollo. Depuración

A

Durante todo el proceso de desarrollo de una aplicación es necesario hacer depuraciones constantes y comprobaciones del comportamiento y resultados obtenidos. Con esto se consiguen focalizar los errores y
poder resolver las incidencias más rápidamente.

64
Q

3.7.- Depuración y documentación de aplicaciones

Desarrollo. Depuración. Puntos de interrupción

A

La mejor forma de realizarlas es a través del uso de puntos de interrupción. Estos puntos indican al depurador del software que ejecuta la aplicación qué debe parar o pausar su ejecución en un punto determinado.

65
Q

3.7.- Depuración y documentación de aplicaciones

Desarrollo. Depuración. Inspección de valores

A

Estos puntos suelen usarse para mostrar los valores obtenidos y mensajes necesarios para comprobar que los datos son los correctos y la ejecución hasta ese punto es correcta. Además, este tipo de puntos se utilizan como herramienta de trazabilidad de la aplicación.

66
Q

3.7.- Depuración y documentación de aplicaciones

Desarrollo. Documentación

A

Toda la documentación debe detallar cuál es la funcionalidad de dicha aplicación. En ella deben de aparecer de forma esquemática todos los puntos relevantes, que son necesarios para comprender y conocer el correcto funcionamiento de la misma.