Guía de Programación Multiproceso

Apuntes sobre programación multiproceso, incluyendo conceptos, técnicas y herramientas para la gestión de procesos y la computación concurrente y paralela.

Programación de Servicios y Procesos · Estudios España · Desarrollo de Aplicaciones Multiplataforma · 1.º curso

10 páginas · 14 temas · 70 flashcards · 70 preguntas tipo test

Índice

  1. 1.1 Introducción a Sistemas Multitarea · p. 1
  2. 1.1.1 El Procesador · p. 1
  3. 1.1.2 Sistema Operativo y Lenguajes de Programación · p. 2
  4. 1.1.3 Programas, Ejecutables, Procesos, Servicios · p. 3
  5. 1.1.4 Computación Concurrente y Paralela · p. 3-4
  6. 1.1.5 Programación Distribuida · p. 4
  7. 1.1.6 Hilos · p. 4-5
  8. 1.1.7 Bifurcación o Fork · p. 5
  9. 1.2 Procesos: Conceptos Teóricos · p. 5-6
  10. 1.2.1 Gestión y Estados de los Procesos · p. 6
  11. 1.2.2 Comunicación entre Procesos · p. 7
  12. 1.2.3 Sincronización entre Procesos · p. 8
  13. 1.3.1 Creación de Procesos con Runtime · p. 9
  14. 1.3.2 Creación de Procesos con ProcessBuilder · p. 9-10

1.1 Introducción a Sistemas Multitarea

Flashcards

¿Qué es la multitarea?
La capacidad de ejecutar múltiples tareas simultáneamente.
¿Qué tipo de sistema operativo era MS-DOS?
Monotarea.
¿Qué sistema operativo implementaba multitarea?
UNIX.
¿Cómo se logra la multitarea en un procesador mononúcleo?
Mediante concurrencia (alternancia rápida).

Preguntas tipo test

  1. ¿Cuál es la principal característica de un sistema multitarea?
    • a) Ejecutar una sola tarea a la vez.
    • b) Ejecutar múltiples tareas simultáneamente.
    • c) No requiere de un sistema operativo.
    • d) Solo funciona en procesadores mononúcleo.

    Respuesta: b) Ejecutar múltiples tareas simultáneamente.. La multitarea se define como la capacidad de un sistema para ejecutar múltiples tareas al mismo tiempo, dando la apariencia de simultaneidad.

  2. ¿Qué componente es esencial para lograr la multitarea en un procesador mononúcleo?
    • a) Mayor cantidad de memoria RAM.
    • b) Un sistema operativo que realice planificación.
    • c) Un compilador optimizado.
    • d) Una tarjeta gráfica potente.

    Respuesta: b) Un sistema operativo que realice planificación.. En un procesador mononúcleo, la multitarea se logra mediante la planificación del sistema operativo, que alterna rápidamente entre procesos para simular la ejecución simultánea.

  3. ¿Cuál de los siguientes sistemas operativos fue un ejemplo de sistema monotarea?
    • a) UNIX
    • b) Linux
    • c) MS-DOS
    • d) Windows XP

    Respuesta: c) MS-DOS. MS-DOS es un ejemplo de sistema operativo monotarea, lo que significa que solo podía ejecutar una tarea a la vez, a diferencia de UNIX que implementaba multitarea.

1.1.1 El Procesador

Flashcards

¿Qué ejecuta el procesador?
Instrucciones de programas
¿Qué es un núcleo en el contexto de un procesador?
Unidad de procesamiento independiente dentro del CPU
¿Cómo logra la multitarea un procesador mononúcleo?
Mediante concurrencia (alternancia rápida)
¿Qué tipo de paralelismo se da en la multitarea multinúcleo?
Paralelismo real con ejecución simultánea

Preguntas tipo test

  1. ¿Cuál es la función principal del procesador?
    • a) Almacenar datos temporalmente
    • b) Ejecutar instrucciones de programas
    • c) Gestionar la memoria del sistema
    • d) Conectar dispositivos periféricos

    Respuesta: b) Ejecutar instrucciones de programas. El procesador es el componente encargado de ejecutar las instrucciones de los programas, realizando cálculos y coordinando las operaciones del sistema.

  2. ¿Qué es un núcleo en un procesador?
    • a) Una unidad de almacenamiento de datos
    • b) Una unidad de procesamiento independiente dentro del CPU
    • c) Una conexión para dispositivos externos
    • d) Un componente para la gestión de energía

    Respuesta: b) Una unidad de procesamiento independiente dentro del CPU. Un núcleo es una unidad de procesamiento completa e independiente dentro del CPU, capaz de ejecutar instrucciones por sí misma.

  3. ¿Cómo se logra la multitarea en un procesador mononúcleo?
    • a) Mediante la ejecución simultánea de instrucciones
    • b) Mediante la concurrencia (alternancia rápida)
    • c) Mediante la división del núcleo en subprocesadores
    • d) Mediante la virtualización del hardware

    Respuesta: b) Mediante la concurrencia (alternancia rápida). En un procesador mononúcleo, la multitarea se logra mediante la concurrencia, donde el sistema operativo alterna rápidamente entre diferentes tareas, creando la ilusión de que se ejecutan simultáneamente.

1.1.2 Sistema Operativo y Lenguajes de Programación

Flashcards

¿Qué rol desempeña el Sistema Operativo?
Gestiona recursos hardware e intermedia entre programas y hardware.
¿Cuál es una ventaja de los lenguajes compilados como C++?
Ofrecen alto rendimiento.
¿Cuál es una ventaja de los lenguajes interpretados como Python?
Son multiplataforma.
¿Qué es la JVM?
Máquina Virtual Java, que permite la ejecución de bytecode Java.

Preguntas tipo test

  1. ¿Cuál es la función principal del Sistema Operativo?
    • a) Gestionar los recursos hardware
    • b) Ejecutar el navegador web
    • c) Crear documentos de texto
    • d) Editar imágenes

    Respuesta: a) Gestionar los recursos hardware. El Sistema Operativo actúa como intermediario entre los programas y el hardware, gestionando recursos como la CPU, la memoria y los dispositivos de entrada/salida.

  2. ¿Qué caracteriza a los lenguajes de programación compilados?
    • a) Son multiplataforma
    • b) Requieren un intérprete para su ejecución
    • c) Ofrecen alto rendimiento
    • d) Son fáciles de depurar

    Respuesta: c) Ofrecen alto rendimiento. Los lenguajes compilados, como C y C++, se traducen a código ejecutable directamente, lo que resulta en un alto rendimiento.

  3. ¿Cuál es la ventaja principal de los lenguajes de programación interpretados?
    • a) Alto rendimiento
    • b) Multiplataforma
    • c) Bajo consumo de recursos
    • d) Acceso directo al hardware

    Respuesta: b) Multiplataforma. Los lenguajes interpretados, como Python y PHP, pueden ejecutarse en diferentes sistemas operativos sin necesidad de recompilación, lo que los hace multiplataforma.

1.1.3 Programas, Ejecutables, Procesos, Servicios

Flashcards

¿Qué es un programa?
Código fuente.
¿Qué es un ejecutable?
Binario compilado.
¿Qué es un proceso?
Programa en ejecución.
¿Qué es un servicio?
Programa en segundo plano.

Preguntas tipo test

  1. ¿Cuál de las siguientes opciones describe mejor un 'ejecutable'?
    • a) El código fuente escrito por un programador.
    • b) Un programa en ejecución interactivo iniciado por el usuario.
    • c) Un archivo binario compilado listo para ser ejecutado.
    • d) Un programa que se ejecuta en segundo plano sin interacción del usuario.

    Respuesta: c) Un archivo binario compilado listo para ser ejecutado.. Un ejecutable es el resultado de compilar el código fuente, transformándolo en un archivo binario que el sistema operativo puede ejecutar directamente.

  2. ¿Cuál de las siguientes opciones distingue mejor un proceso de un servicio?
    • a) Un proceso siempre requiere interacción del usuario, mientras que un servicio no.
    • b) Un proceso se ejecuta en segundo plano, mientras que un servicio es interactivo.
    • c) Un proceso es automático, mientras que un servicio es iniciado por el usuario.
    • d) No hay diferencias significativas entre un proceso y un servicio.

    Respuesta: a) Un proceso siempre requiere interacción del usuario, mientras que un servicio no.. Un proceso es interactivo y generalmente iniciado por un usuario, mientras que un servicio se ejecuta automáticamente en segundo plano sin necesidad de interacción.

  3. En el flujo de creación de un programa, ¿qué paso sigue inmediatamente después de la compilación del código?
    • a) El programa es ejecutado por el usuario.
    • b) Se obtiene el código fuente.
    • c) Se genera el ejecutable.
    • d) El programa se convierte en un proceso.

    Respuesta: c) Se genera el ejecutable.. Después de que el código es compilado, el resultado es un archivo ejecutable, que luego puede ser usado para crear un proceso.

1.1.4 Computación Concurrente y Paralela

Flashcards

¿Qué es la computación concurrente?
Ejecución alternada de tareas en un solo núcleo, creando una ilusión de simultaneidad.
¿Qué es la computación paralela?
Ejecución simultánea de tareas en múltiples núcleos.
¿Cuál es la principal diferencia entre concurrencia y paralelismo?
La concurrencia alterna tareas en un núcleo, mientras que el paralelismo ejecuta tareas simultáneamente en múltiples núcleos.
¿Qué rol juega el sistema operativo en la computación concurrente?
Gestiona la alternancia rápida entre procesos mediante time-slicing.

Preguntas tipo test

  1. ¿Cuál es la principal característica de la computación concurrente?
    • a) Ejecución simultánea en múltiples núcleos
    • b) Ejecución alternada en un solo núcleo
    • c) División de procesos en hilos
    • d) Ejecución en múltiples ordenadores

    Respuesta: b) Ejecución alternada en un solo núcleo. La computación concurrente se caracteriza por la ejecución alternada de tareas en un solo núcleo, creando una ilusión de simultaneidad.

  2. ¿Cuál de las siguientes opciones describe mejor la computación paralela?
    • a) Tareas que se alternan rápidamente en un solo núcleo
    • b) Tareas que se ejecutan simultáneamente en múltiples núcleos
    • c) Tareas que se ejecutan en diferentes ordenadores
    • d) Tareas que no requieren intervención del sistema operativo

    Respuesta: b) Tareas que se ejecutan simultáneamente en múltiples núcleos. La computación paralela implica la ejecución simultánea de tareas en múltiples núcleos, lo que permite reducir los tiempos de ejecución.

  3. ¿Quién es el principal responsable de la computación concurrente?
    • a) El programador
    • b) El sistema operativo
    • c) La JVM
    • d) El compilador

    Respuesta: b) El sistema operativo. El sistema operativo es el principal responsable de la computación concurrente, ya que gestiona la alternancia entre procesos.

1.1.5 Programación Distribuida

Flashcards

¿Qué es la programación distribuida?
Ejecución de software en múltiples ordenadores conectados en red.
Menciona una ventaja de la programación distribuida.
Mayor potencia y escalabilidad.
Menciona una desventaja de la programación distribuida.
Complejidad y latencia de red.
¿Qué tipo de limitación elimina la programación distribuida?
Limitación física de núcleos.

Preguntas tipo test

  1. ¿Cuál es una característica principal de la programación distribuida?
    • a) Se ejecuta en un único núcleo de procesador.
    • b) Utiliza múltiples ordenadores conectados en red.
    • c) Está limitada por la capacidad de la memoria RAM.
    • d) Requiere un sistema operativo de tiempo real.

    Respuesta: b) Utiliza múltiples ordenadores conectados en red.. La programación distribuida se caracteriza por la ejecución de software en múltiples ordenadores conectados en red, lo que permite superar las limitaciones de un solo sistema.

  2. ¿Cuál de las siguientes es una ventaja de la programación distribuida?
    • a) Mayor complejidad en la gestión de la red.
    • b) Latencia de red incrementada.
    • c) Mayor potencia y escalabilidad.
    • d) Dependencia de un único punto de fallo.

    Respuesta: c) Mayor potencia y escalabilidad.. Una de las principales ventajas de la programación distribuida es la posibilidad de obtener mayor potencia de cómputo y escalabilidad al utilizar múltiples máquinas.

  3. ¿Qué tipo de escalabilidad se asocia con la programación distribuida?
    • a) Escalabilidad vertical.
    • b) Escalabilidad diagonal.
    • c) Escalabilidad horizontal.
    • d) Escalabilidad cúbica.

    Respuesta: c) Escalabilidad horizontal.. La programación distribuida permite la escalabilidad horizontal, lo que significa que se pueden añadir más nodos (ordenadores) al sistema para aumentar su capacidad.

1.1.6 Hilos

Flashcards

¿Qué es un hilo?
Unidad de ejecución dentro de un proceso.
¿Cuál es la diferencia entre un programa monohilo y uno multihilo?
Monohilo ejecuta tareas secuencialmente; multihilo puede ejecutar varias tareas concurrentemente.
¿Qué ventaja ofrece la programación multihilo?
Mejor aprovechamiento de los recursos del sistema, especialmente en procesadores multinúcleo.
¿Cuál es el principal desafío al desarrollar programas multihilo?
Asegurar que los hilos no interfieran entre sí, evitando condiciones de carrera y bloqueos mutuos.

Preguntas tipo test

  1. ¿Cuál es la principal característica de un programa monohilo?
    • a) Ejecuta múltiples tareas simultáneamente.
    • b) Ejecuta las tareas de forma secuencial.
    • c) Divide las tareas en subprocesos.
    • d) Se ejecuta en múltiples núcleos del procesador.

    Respuesta: b) Ejecuta las tareas de forma secuencial.. Un programa monohilo se caracteriza por ejecutar las tareas de forma secuencial, una tras otra.

  2. ¿Qué describe mejor la función de un hilo dentro de un proceso?
    • a) Un programa completo e independiente.
    • b) Una unidad de ejecución dentro del proceso.
    • c) Un sistema operativo en miniatura.
    • d) Una copia exacta del proceso padre.

    Respuesta: b) Una unidad de ejecución dentro del proceso.. Un hilo es una unidad de ejecución dentro de un proceso, permitiendo la concurrencia y el paralelismo.

  3. En el contexto de la programación, ¿cuál es la diferencia fundamental entre un programa monohilo y uno multihilo?
    • a) Los programas monohilo son más rápidos que los multihilo.
    • b) Los programas multihilo solo pueden ejecutarse en sistemas operativos específicos.
    • c) Un programa monohilo ejecuta las tareas secuencialmente, mientras que uno multihilo puede ejecutar varias tareas concurrentemente.
    • d) Los programas monohilo requieren más recursos del sistema que los multihilo.

    Respuesta: c) Un programa monohilo ejecuta las tareas secuencialmente, mientras que uno multihilo puede ejecutar varias tareas concurrentemente.. La diferencia clave es que un programa monohilo realiza tareas en secuencia, mientras que un multihilo puede ejecutar varias tareas al mismo tiempo, mejorando la eficiencia.

1.1.7 Bifurcación o Fork

Flashcards

¿Qué es `fork()`?
Una llamada al sistema que crea un nuevo proceso duplicando el proceso existente.
¿Qué ocurre con el PID después de un `fork()`?
El proceso padre y el proceso hijo tienen PID diferentes.
¿Qué recursos se copian en un `fork()`?
El código, los datos y los descriptores de archivos se copian, pero con espacios de memoria separados.
¿Cómo se distingue entre el proceso padre y el proceso hijo después de un `fork()`?
Por el valor de retorno de `fork()`: 0 en el hijo, PID del hijo en el padre.

Preguntas tipo test

  1. ¿Cuál es el propósito principal de la función `fork()`?
    • a) Crear un nuevo hilo dentro del proceso actual.
    • b) Crear una copia exacta del proceso actual.
    • c) Finalizar el proceso actual.
    • d) Reiniciar el sistema operativo.

    Respuesta: b) Crear una copia exacta del proceso actual.. La función `fork()` crea una copia idéntica del proceso que la llama, generando un nuevo proceso hijo.

  2. Después de una llamada a `fork()`, ¿qué tienen en común el proceso padre y el proceso hijo?
    • a) Comparten el mismo PID.
    • b) Comparten la misma memoria.
    • c) Comparten el mismo espacio de direcciones.
    • d) Comparten el mismo código.

    Respuesta: d) Comparten el mismo código.. Después de `fork()`, ambos procesos comparten el mismo código, pero tienen PID diferentes y espacios de memoria independientes.

  3. En el contexto de la bifurcación (fork), ¿qué significa que los procesos tengan memoria independiente?
    • a) Que ambos procesos acceden a las mismas variables y datos.
    • b) Que cada proceso tiene su propia copia de las variables y datos.
    • c) Que solo el proceso padre puede acceder a la memoria.
    • d) Que la memoria es compartida solo para lectura.

    Respuesta: b) Que cada proceso tiene su propia copia de las variables y datos.. Memoria independiente significa que cada proceso tiene su propia copia privada de los datos, por lo que las modificaciones en uno no afectan al otro.

1.2 Procesos: Conceptos Teóricos

Flashcards

¿Qué es un proceso?
Un programa en ejecución.
¿Qué es el PID?
Identificador único de un proceso.
¿Cuál es la función del planificador de procesos?
Gestionar la asignación de la CPU a los procesos.
Nombra 3 componentes de un proceso
Instrucciones, estado, memoria, recursos

Preguntas tipo test

  1. ¿Cuál de las siguientes opciones describe mejor la función de un proceso?
    • a) Un archivo ejecutable almacenado en el disco duro.
    • b) Un programa en ejecución, incluyendo sus recursos y estado.
    • c) Una parte del sistema operativo encargada de gestionar la memoria.
    • d) Un conjunto de instrucciones escritas en lenguaje de programación.

    Respuesta: b) Un programa en ejecución, incluyendo sus recursos y estado.. Un proceso es un programa en ejecución que incluye todos los recursos asignados (memoria, archivos abiertos, etc.) y el estado actual de la ejecución.

  2. ¿Qué componente del sistema operativo es responsable de asignar la CPU a los diferentes procesos?
    • a) El compilador
    • b) El kernel
    • c) El planificador de procesos
    • d) La memoria virtual

    Respuesta: c) El planificador de procesos. El planificador de procesos es el componente del sistema operativo que decide qué proceso debe ejecutarse en la CPU en un momento dado, optimizando el uso de los recursos.

  3. ¿Qué es el PID (Process ID)?
    • a) Un identificador único para cada proceso en el sistema.
    • b) La cantidad de memoria que un proceso está utilizando.
    • c) El nombre del archivo ejecutable del proceso.
    • d) La prioridad de un proceso en el sistema.

    Respuesta: a) Un identificador único para cada proceso en el sistema.. El PID es un número único que el sistema operativo asigna a cada proceso para identificarlo de manera inequívoca.

1.2.1 Gestión y Estados de los Procesos

Flashcards

¿Qué componente del SO asigna la CPU a los procesos?
Planificador de Procesos
¿Qué estado indica que un proceso está esperando un evento externo?
Bloqueado
¿Qué es el PID?
Identificador único de un proceso
¿Qué implica el cambio de contexto?
Guardar y restaurar el estado de los procesos

Preguntas tipo test

  1. ¿Cuál es el componente del sistema operativo encargado de gestionar la asignación de la CPU a los procesos?
    • a) Gestor de Memoria
    • b) Planificador de Procesos
    • c) Sistema de Archivos
    • d) Controlador de Dispositivos

    Respuesta: b) Planificador de Procesos. El Planificador de Procesos es el componente del sistema operativo que se encarga de decidir qué proceso debe usar la CPU en un momento dado, optimizando el rendimiento y la equidad.

  2. ¿Cuál de los siguientes NO es un estado típico de un proceso?
    • a) En Espera
    • b) En Ejecución
    • c) Bloqueado
    • d) Listo

    Respuesta: a) En Espera. Los estados típicos de un proceso son: Nuevo, Listo, En Ejecución, Bloqueado y Finalizado. 'En Espera' no es un estado estándar reconocido en la gestión de procesos.

  3. Un proceso en estado 'Bloqueado' está...
    • a) Utilizando la CPU activamente
    • b) En memoria, esperando la CPU
    • c) Esperando un evento externo para poder continuar
    • d) Recién creado y aún no listo para ejecutarse

    Respuesta: c) Esperando un evento externo para poder continuar. Un proceso en estado 'Bloqueado' se encuentra detenido, esperando que ocurra un evento externo, como la finalización de una operación de E/S, para poder reanudar su ejecución.

1.2.2 Comunicación entre Procesos

Flashcards

¿Qué significan las siglas IPC?
Inter-Process Communication (Comunicación entre Procesos)
Menciona un ejemplo de método de IPC que permite la comunicación entre máquinas diferentes.
Sockets
¿Qué tipo de comunicación se establece al usar Flujos E/S para IPC?
Redirección de stdin/stdout/stderr
¿Cuál es una característica clave de RPC/RMI en la comunicación entre procesos?
Transparencia de ubicación

Preguntas tipo test

  1. ¿Cuál de los siguientes NO es un método de Comunicación entre Procesos (IPC)?
    • a) Sockets
    • b) Flujos E/S
    • c) RPC/RMI
    • d) Firmas digitales

    Respuesta: d) Firmas digitales. Las firmas digitales no son un método de comunicación entre procesos. Los sockets, flujos E/S y RPC/RMI son métodos válidos para que los procesos intercambien información.

  2. ¿Qué característica define a los Sockets como método de IPC?
    • a) Comunicación unidireccional y de alto nivel
    • b) Comunicación entre procesos en la misma máquina
    • c) Comunicación bidireccional entre máquinas diferentes
    • d) Comunicación basada en archivos compartidos

    Respuesta: c) Comunicación bidireccional entre máquinas diferentes. Los Sockets permiten la comunicación bidireccional entre procesos que pueden estar ubicados en diferentes máquinas, operando a un nivel relativamente bajo.

  3. ¿Cuál es la principal ventaja de los Servicios Web como método de IPC?
    • a) Bajo nivel de abstracción
    • b) Alta escalabilidad
    • c) Comunicación directa entre procesos relacionados
    • d) Simplicidad en la configuración

    Respuesta: b) Alta escalabilidad. Los Servicios Web, como HTTP, REST, APIs y Cloud, son altamente escalables, lo que los hace adecuados para sistemas distribuidos de gran tamaño.

1.2.3 Sincronización entre Procesos

Flashcards

¿Qué permite la sincronización entre procesos?
Coordinar la ejecución de procesos según sus resultados y códigos de terminación.
¿Qué clase de Java se utiliza para ejecutar comandos del sistema?
Runtime
¿Qué método de la clase Process permite esperar a que un proceso termine?
waitFor()
¿Cuál es el propósito del método exitValue() en la clase Process?
Devuelve el valor de retorno del proceso.

Preguntas tipo test

  1. ¿Cuál es el propósito principal de la sincronización entre procesos?
    • a) Aumentar la velocidad de ejecución de los procesos.
    • b) Coordinar la ejecución de procesos según sus resultados y códigos de terminación.
    • c) Minimizar el uso de memoria por parte de los procesos.
    • d) Simplificar la gestión de procesos en el sistema operativo.

    Respuesta: b) Coordinar la ejecución de procesos según sus resultados y códigos de terminación.. La sincronización entre procesos es esencial para coordinar la ejecución de procesos, asegurando que un proceso espere el resultado de otro antes de continuar, lo cual es crucial en flujos de trabajo dependientes.

  2. ¿Qué clase de Java se utiliza para ejecutar comandos del sistema?
    • a) ProcessBuilder
    • b) Runtime
    • c) System
    • d) Executor

    Respuesta: b) Runtime. La clase Runtime, obtenida a través de Runtime.getRuntime(), proporciona el método exec() para ejecutar comandos directamente en el sistema operativo.

  3. ¿Qué método de la clase Process permite esperar a que un proceso termine?
    • a) start()
    • b) exec()
    • c) waitFor()
    • d) exitValue()

    Respuesta: c) waitFor(). El método waitFor() de la clase Process bloquea la ejecución del proceso actual hasta que el proceso hijo termine, permitiendo así la sincronización.

1.3.1 Creación de Procesos con Runtime

Flashcards

¿Qué clase en Java permite la interacción con el entorno de ejecución del sistema operativo?
Runtime
¿Cuál es el método principal de la clase Runtime para ejecutar comandos externos?
exec()
¿Qué método se utiliza para esperar a que un proceso termine su ejecución?
waitFor()
¿Qué método devuelve el valor de retorno de un proceso?
exitValue()

Preguntas tipo test

  1. ¿Cuál es el propósito principal de la clase Runtime en Java?
    • a) Gestionar la memoria del sistema
    • b) Interactuar con el entorno de ejecución del sistema operativo
    • c) Crear interfaces gráficas de usuario
    • d) Realizar operaciones matemáticas complejas

    Respuesta: b) Interactuar con el entorno de ejecución del sistema operativo. La clase Runtime proporciona una interfaz para que la aplicación Java interactúe con el sistema operativo subyacente, permitiendo la ejecución de comandos externos y la gestión de procesos.

  2. ¿Cuál de los siguientes métodos de la clase Runtime se utiliza para ejecutar comandos externos?
    • a) start()
    • b) execute()
    • c) exec()
    • d) run()

    Respuesta: c) exec(). El método `exec()` de la clase Runtime es el que permite ejecutar comandos del sistema operativo desde una aplicación Java.

  3. ¿Qué método de la clase Runtime se utiliza para esperar a que un proceso termine su ejecución?
    • a) isAlive()
    • b) waitFor()
    • c) destroy()
    • d) exitValue()

    Respuesta: b) waitFor(). El método `waitFor()` bloquea el hilo actual hasta que el proceso asociado termine, devolviendo el código de salida del proceso.

1.3.2 Creación de Procesos con ProcessBuilder

Flashcards

¿Qué clase proporciona una forma flexible de crear procesos, permitiendo la configuración antes de la ejecución?
ProcessBuilder
¿Cuál es el método de ProcessBuilder que inicia la ejecución del proceso con los atributos configurados?
start()
¿Qué método de ProcessBuilder permite establecer el directorio de trabajo para el proceso?
directory()
¿Qué método de ProcessBuilder se utiliza para obtener las variables de entorno del proceso?
environment()

Preguntas tipo test

  1. ¿Cuál de las siguientes NO es una característica avanzada que ofrece ProcessBuilder?
    • a) Configuración del directorio de trabajo
    • b) Acceso al entorno de ejecución
    • c) Redirección de flujos de entrada/salida
    • d) Creación de una instancia única para cada proceso

    Respuesta: d) Creación de una instancia única para cada proceso. ProcessBuilder permite la reutilización para múltiples procesos, no requiere una instancia única para cada uno.

  2. ¿Qué método de ProcessBuilder se utiliza para modificar las variables de entorno del proceso?
    • a) directory()
    • b) environment()
    • c) redirectError()
    • d) command()

    Respuesta: b) environment(). El método environment() permite obtener las variables de entorno del proceso.

  3. ¿Cuál es la principal ventaja de usar ProcessBuilder en comparación con Runtime para la creación de procesos?
    • a) Mayor simplicidad en la sintaxis
    • b) Mayor rendimiento en la ejecución
    • c) Mayor flexibilidad en la configuración del proceso
    • d) Soporte nativo para la ejecución en la nube

    Respuesta: c) Mayor flexibilidad en la configuración del proceso. ProcessBuilder ofrece una mayor flexibilidad al permitir configurar el proceso antes de su ejecución, incluyendo el directorio de trabajo y la redirección de flujos.

Y 14 flashcards y 28 preguntas más en el documento.

Texto del documento

GUIA COMPLETA - PROGRAMACIÓN MULTIPROCESO ÍNDICE 1. 1.1 - Introducción a sistemas multitarea 2. 1.1.1 - El procesador 3. 1.1.2 - Sistema operativo y lenguajes 4. 1.1.3 - Programas, ejecutables, procesos, servicios 5. 1.1.4 - Computación concurrente y paralela 6. 1.1.5 - Programación distribuida 7. 1.1.6 - Hilos 8. 1.1.7 - Bifurcación o fork 9.

1.2 - Procesos: conceptos teóricos 10.1.2.1 - Gestión y estados de procesos 11.1.2.2 - Comunicación entre procesos 12.1.2.3 - Sincronización entre procesos 13.1.3.1 - Creación de procesos con Runtime 14.1.3.2 - Creación de procesos con ProcessBuilder 1.1 INTRODUCCIÓN A SISTEMAS MULTITAREA RESUMEN CORTO (Solo leer) La multitarea es la capacidad de ejecutar múltiples tareas simultáneamente. Sistemas antiguos como MS-DOS eran monotarea, mientras que UNIX ya implementaba multitarea. 1.1.1 EL PROCESADOR RESUMEN El procesador ejecuta instrucciones de programas. Puede tener uno o varios núcleos.

RESUMEN DETALLADO (Parte importante) Núcleo: Unidad de procesamiento independiente dentro del CPU Multitarea mononúcleo: Se logra mediante concurrencia (alternancia rápida) Multitarea multinúcleo: Paralelismo real con ejecución simultánea Punto clave: Un procesador mononúcleo SÍ puede realizar multitarea mediante planificación del SO 1.1.2 SISTEMA OPERATIVO Y LENGUAJES DE PROGRAMACIÓN RESUMEN DETALLADO (Parte importante) Sistema Operativo como Intermediario Gestiona recursos hardware (CPU, memoria, E/S) Intermedia entre programas y hardware Detecta eventos (teclado, ratón) y gestiona recursos Lenguajes de Programación Compilados: Código Compilador Ejecutable Ejemplos: C, C++ Ventajas: Alto rendimiento Desventajas: No portable entre SO Interpretados: Código Intérprete Ejecución Ejemplos: Python, PHP Ventajas: Multiplataforma Desventajas: Menor rendimiento Máquina Virtual (Java): Código Bytecode JVM Ejecución Ventajas: "Write Once, Run Anywhere" Desventajas: Requiere JVM 1.1.3 PROGRAMAS, EJECUTABLES, PROCESOS, SERVICIOS RESUMEN DETALLADO (Parte importante) Término Definición Ejemplo Programa Código fuente Holamundo.java Ejecutable Binario compilado Holamundo.exe Proceso Programa en ejecución Word abierto Servicio Programa en segundo plano Antivirus Flujo de creación: Programador Código Compilador Ejecutable Usuario Proceso Proceso vs Servicio: Proceso: Interactivo, iniciado por usuario, tiempo limitado Servicio: Automático, sin interfaz, siempre activo 1.1.4 COMPUTACIÓN CONCURRENTE Y PARALELA RESUMEN CORTO (hasta el dibujo) Concurrencia: tareas alternan en un núcleo.

Paralelismo: tareas simultáneas en múltiples núcleos.

RESUMEN DETALLADO (Parte importante) Computación Concurrente: Ejecución en sistemas mononúcleo mediante time-slicing El SO alterna rápidamente entre procesos Crea ilusión de simultaneidad Responsabilidad principal del sistema operativo Computación Paralela: Ejecución real simultánea en múltiples núcleos Divide procesos en hilos que se ejecutan en paralelo Reduce tiempos de ejecución Responsabilidad compartida: SO + programador Definiciones clave: Procesamiento concurrente: Varios procesos se ejecutan alternativamente en una misma unidad de proceso Procesamiento paralelo: Divisiones de un proceso se ejecutan simultáneamente en diversos núcleos Tabla comparativa: Aspecto Concurrencia Paralelismo Unidades 1 Múltiples Ejecución Alternada Simultánea Responsable SO SO + Programa 1.1.5 PROGRAMACIÓN DISTRIBUIDA RESUMEN Ejecución de software en múltiples ordenadores conectados en red.

Características: Múltiples unidades de computación independientes Conectadas mediante red Elimina limitación física de núcleos Escalabilidad horizontal Ventajas: Mayor potencia, escalabilidad, coste reducido Desventajas: Complejidad, latencia de red 1.1.6 HILOS RESUMEN CORTO (Solo leer) Hilo = unidad de ejecución dentro de un proceso. Programas pueden ser monohilo (secuencial) o multihilo (paralelo). 1.1.7 BIFURCACIÓN O FORK RESUMEN CORTO (Solo leer, pero entender código) Fork crea copia exacta de un proceso. Original = "padre", copia = "hijo". Cada uno tiene PID diferente y memoria independiente.

Código C a entender: Salida: Antes de fork: 0 PADRE - Contador: 2 HIJO - Contador: 2 1.2 PROCESOS: CONCEPTOS TEÓRICOS RESUMEN DETALLADO (Parte importante) Definición: Proceso = programa en ejecución Componentes: Instrucciones a ejecutar Estado del proceso Estado de ejecución (registros CPU) Estado de memoria Elementos: PID (Process ID - identificador único) Memoria propia Recursos (archivos, conexiones) Contexto (estado completo) Cambio de Contexto: Guardar estado proceso actual Determinar siguiente proceso Restaurar estado siguiente proceso Continuar ejecución 1.2.1 GESTIÓN Y ESTADOS DE LOS PROCESOS RESUMEN DETALLADO (Parte importante) Planificador de Procesos: Componente del SO que gestiona asignación de CPU Objetivos: maximizar rendimiento, equidad, minimizar tiempos Estados de Procesos: Estado Descripción Nuevo Recién creado Listo En memoria, esperando CPU En ejecución Usando CPU Bloqueado Esperando evento externo Finalizado Terminado, recursos liberados Diagrama de Estados: Fenómeno Lag: Pausas momentáneas por sobrecarga del sistema 1.2.2 COMUNICACIÓN ENTRE PROCESOS RESUMEN DETALLADO (Parte importante) IPC (Inter-Process Communication): Mecanismos para que procesos intercambien información.

Métodos de IPC: Sockets Comunicación entre máquinas diferentes Bidireccional, bajo nivel Ejemplo: Cliente-Servidor Flujos E/S Redirección stdin/stdout/stderr Procesos deben estar relacionados Ejemplo: proceso1 " proceso2 RPC/RMI Llamadas a procedimientos/métodos remotos Transparencia de ubicación Ejemplo: Java RMI Sistemas de Persistencia Archivos, bases de datos compartidas Sencillo, pero menos eficiente Servicios Web HTTP, REST, APIs, Cloud Altamente escalable 1.2.3 SINCRONIZACIÓN ENTRE PROCESOS RESUMEN + TABLA La sincronización permite coordinar la ejecución de procesos según sus resultados y códigos de terminación.

Es esencial para construir flujos de trabajo donde la ejecución de un proceso depende del resultado de otro.

Mecanismos necesarios: Ejecución de procesos desde otros procesos Espera de finalización Generación y obtención de códigos de terminación Toma de decisiones basada en resultados TABLA 1.1 - MECANISMOS JAVA Mecanismo Clase Método Descripción Ejecución Runtime exec() Ejecuta comando sistema Ejecución ProcessBuilder start() Crea y ejecuta proceso Espera Process waitFor() Espera fin del proceso Generación código System exit(valor) Termina con código Obtención código Process waitFor() Devuelve código salida Ejemplo flujo: Explicación: PROCESO 1 se ejecuta primero Si termina con código 0 ejecuta PROCESO 1.1 o Si 1.1 termina con código 0 ejecuta PROCESO 1.1.1 o Si 1.1 termina con código 1 ejecuta PROCESO 1.1.2 Si termina con código 1 ejecuta PROCESO 1.2 o Cuando 1.2 finalice (cualquier código) ejecuta PROCESO 1.2.1 1.3.1 CREACIÓN DE PROCESOS CON RUNTIME Clase Runtime: Instancia única por aplicación JVM mediante Runtime.getRuntime() Propósito: Interacción con el entorno de ejecución del sistema operativo Método principal: exec() para ejecutar comandos externos Ejemplos de uso: Método Descripción destroy() Termina forzosamente el proceso exitValue() Devuelve valor de retorno del proceso getErrorStream() Obtiene flujo de salida de error getInputStream() Obtiene flujo de salida estándar getOutputStream() Obtiene flujo de entrada estándar isAlive() Verifica si el proceso está activo waitFor() Espera a que el proceso termine 1.3.2 CREACIÓN DE PROCESOS CON PROCESSBUILDER RESUMEN DETALLADO (Parte importante) + TABLA Clase ProcessBuilder: Alternativa más flexible que Runtime Permite configurar proceso antes de ejecutarlo Método start() inicia la ejecución Características avanzadas: Configuración de directorio de trabajo Acceso al entorno de ejecución Redirección de flujos de entrada/salida Reutilización para múltiples procesos Ejemplos de uso: TABLA 1.3 - MÉTODOS PRINCIPALES DE PROCESSBUILDER Método Descripción start() Inicia nuevo proceso con atributos configurados command() Get/Set del programa y argumentos directory() Get/Set del directorio de trabajo environment() Obtiene variables de entorno del proceso redirectError() Configura destino de salida de errores redirectInput() Configura origen de entrada estándar redirectOutput() Configura destino de salida estándar

Más apuntes de Programación de Servicios y Procesos

Exámenes, temas y apuntes de Programación de Servicios y Procesos