APLICACIONES
DISTRIBUIDAS

Leonel Loor S.
7mo Nivel “A”
Programas

●   Un programa software es:
    ●   Artefacto construido por un desarrollador de software
    ●   Es desarrollado utilizando lenguaje de programación de alto nivel
    ●   Requiere de un compilador o intérprete
    ●   Cuando se ejecuta un programa se representa como un proceso.
●   Un proceso consiste en un programa con:
    ●   Valores
    ●   Información de su estado
    ●   Asignación de recursos
●    Un proceso es una entidad dinámica, que solo existe cuando se ejecuta
    un programa.
Estados
Un proceso sufre de transición de estados durante su 
vida:
  ●   Nuevo: Cuando se crea el proceso.
  ●   En ejecución: El proceso ocupa la CPU, se está 
      ejecutando.
  ●   Listo: El proceso dispone de los recursos para 
      ejecución, solo falta la CPU.
  ●   Bloqueado: Al proceso le falta algún recurso 
      además de la CPU para seguir ejecutándose.
  ●   Terminado: Termina de ejecutarse el proceso.
Transición de Estados

●   Nuevo ­> Listo: Al crearse un proceso pasa al estado listo de forma inmediata.
●   Listo ­> Ejecutando: A la espera de la asignación de la CPU. Al liberar un procesador el 
    planificador selecciona el próximo proceso.
●   Ejecutando ­> Listo: Ante una interrupción el proceso puede perder el recurso CPU.
●   Ejecutando ­> Bloqueado: el proceso realiza pedidos en distintos componentes, por lo que 
    se mantiene a la espera para continuar ejecutándose.
●   Bloqueado ­> Listo: Una vez que ocurre el evento que estaba esperando, el proceso es 
    puesto en la cola de procesos listos.
●   Ejecutando ­> Terminado: Cuando ejecuta la última instrucción el proceso para a estado 
    terminado. Libera la estructura que representa el proceso.
Tipos de Programas en JAVA
Existen cuatro tipos de programas en JAVA:
  ●   Aplicaciones
  ●   Applets
  ●   Servlets
  ●   Bytecode
Aplicaciones


●   Tiene un método principal (main)


●   Se ejecuta como proceso independiente 
    (stand ­ alone)
Applets


●   No tiene un método principal (main)


●   Se ejecuta mediante el uso de un 
    navegador o una herramienta para 
    visualizar applets
Servlets


●   Tampoco tiene método principal (main)


●   Se ejecuta en el contexto de un servidor 
    web.
Bytecode


●   Se compila sin importar el tipo de 
    programa.
●   Se ejecuta en la máquina virtual de JAVA 
    JVM.
●   Traduce el bytecode a código nativo de 
    máquina, siguiendo la transición de estados
Programación Concurrente
 
●   La computación concurrente, supone programación 
    concurrente.
●   Existen tres clases de procesos concurrente:
    ●   Procesos Concurrentes ejecutados en múltiples 
        computadores
    ●   Procesos Concurrentes ejecutados en un solo 
        computador
    ●   Programación concurrente dentro de un proceso
Procesos Concurrentes
ejecutados en múltiples computadores

 ●   Procesos separados ejecutados en forma 
     concurrente en computadores independientes 
     interconectados a través de una red.
 ●   Interactúan con otros procesos mediante 
     intercambio de datos sobre la red.
 ●   Requiere soporte de programación.
 ●   Los programas interactuantes debe contener la 
     lógica necesaria para la interacción entre procesos.
Procesos Concurrentes
    ejecutados en un solo computador
●   En sistemas operativos multitareas, se permite la ejecución 
    concurrente de múltiples tareas o procesos.
●   La concurrencia puede ser virtual o real.
●   La verdadera concurrencia es posible con múltiples CPUs.
●   En computador con un solo CPU, se utiliza tiempo 
    compartido, para ejecutar procesos por turnos.
●   La ejecución de procesos concurrentes es una funcionalidad 
    del sistema operativo.
●   No es necesaria a lógica especial de software para iniciar la 
    multitarea de un programa.
Programación concurrente
    dentro de un Proceso
Además de programación concurrente, entre 
diferentes procesos, un mismo programa puede 
requerir iniciar diferentes tareas concurrentes.
●   Se puede necesitar la ejecución de varias tareas 
    en paralelo.
●   Se lleva a cabo a través de dos tipos de 
    herramientas:
    ●   Procesos Padres e Hijos
    ●   Threads
Procesos Padres e Hijos

●   Un proceso puede crear procesos subordinados o HIJOS.
●   En multitarea, tanto el proceso PADRE como el hijo se 
    ejecutan concurrentemente.
●   Un proceso hijo e un proceso completo, es un programa en 
    ejecución, con valores propios, información de estado, 
    heredados del padre.
●   El proceso padre sabe cuando el proceso hijo ha terminado.
Thread o hilos

●   En lugar de procesos hijos, se pueden crear threads o hilos, 
    conocidos como procesos ligeros.
●   Poseen ligera información de estado, con similar 
    comportamiento a los procesos.
●   Se preferible utilizar hilos en lugar de procesos hijos.
●   Se requiere soporte de programación para la creación de los 
    hilos.
●   El programa debe escribirse con la lógica para la creación de 
    los hilos y la coordinación o sincronización de la familia de hilos 
    creados por el hilo padre

Programas Y Procesos

  • 1.
  • 2.
    Programas ● Un programa software es: ● Artefacto construido por un desarrollador de software ● Es desarrollado utilizando lenguaje de programación de alto nivel ● Requiere de un compilador o intérprete ● Cuando se ejecuta un programa se representa como un proceso. ● Un proceso consiste en un programa con: ● Valores ● Información de su estado ● Asignación de recursos ● Un proceso es una entidad dinámica, que solo existe cuando se ejecuta un programa.
  • 3.
    Estados Un proceso sufre de transición de estados durante su  vida: ● Nuevo: Cuando se crea el proceso. ● En ejecución: El proceso ocupa la CPU, se está  ejecutando. ● Listo: El proceso dispone de los recursos para  ejecución, solo falta la CPU. ● Bloqueado: Al proceso le falta algún recurso  además de la CPU para seguir ejecutándose. ● Terminado: Termina de ejecutarse el proceso.
  • 4.
    Transición de Estados ● Nuevo ­> Listo: Al crearse un proceso pasa al estado listo de forma inmediata. ● Listo ­> Ejecutando: A la espera de la asignación de la CPU. Al liberar un procesador el  planificador selecciona el próximo proceso. ● Ejecutando ­> Listo: Ante una interrupción el proceso puede perder el recurso CPU. ● Ejecutando ­> Bloqueado: el proceso realiza pedidos en distintos componentes, por lo que  se mantiene a la espera para continuar ejecutándose. ● Bloqueado ­> Listo: Una vez que ocurre el evento que estaba esperando, el proceso es  puesto en la cola de procesos listos. ● Ejecutando ­> Terminado: Cuando ejecuta la última instrucción el proceso para a estado  terminado. Libera la estructura que representa el proceso.
  • 5.
    Tipos de Programasen JAVA Existen cuatro tipos de programas en JAVA: ● Aplicaciones ● Applets ● Servlets ● Bytecode
  • 6.
    Aplicaciones ● Tiene un método principal (main) ● Se ejecuta como proceso independiente  (stand ­ alone)
  • 7.
    Applets ● No tiene un método principal (main) ● Se ejecuta mediante el uso de un  navegador o una herramienta para  visualizar applets
  • 8.
    Servlets ● Tampoco tiene método principal (main) ● Se ejecuta en el contexto de un servidor  web.
  • 9.
    Bytecode ● Se compila sin importar el tipo de  programa. ● Se ejecuta en la máquina virtual de JAVA  JVM. ● Traduce el bytecode a código nativo de  máquina, siguiendo la transición de estados
  • 10.
    Programación Concurrente   ● La computación concurrente, supone programación  concurrente. ● Existen tres clases de procesos concurrente: ● Procesos Concurrentes ejecutados en múltiples  computadores ● Procesos Concurrentes ejecutados en un solo  computador ● Programación concurrente dentro de un proceso
  • 11.
    Procesos Concurrentes ejecutados enmúltiples computadores ● Procesos separados ejecutados en forma  concurrente en computadores independientes  interconectados a través de una red. ● Interactúan con otros procesos mediante  intercambio de datos sobre la red. ● Requiere soporte de programación. ● Los programas interactuantes debe contener la  lógica necesaria para la interacción entre procesos.
  • 12.
    Procesos Concurrentes ejecutados en un solo computador ● En sistemas operativos multitareas, se permite la ejecución  concurrente de múltiples tareas o procesos. ● La concurrencia puede ser virtual o real. ● La verdadera concurrencia es posible con múltiples CPUs. ● En computador con un solo CPU, se utiliza tiempo  compartido, para ejecutar procesos por turnos. ● La ejecución de procesos concurrentes es una funcionalidad  del sistema operativo. ● No es necesaria a lógica especial de software para iniciar la  multitarea de un programa.
  • 13.
    Programación concurrente dentro de un Proceso Además de programación concurrente, entre  diferentes procesos, un mismo programa puede  requerir iniciar diferentes tareas concurrentes. ● Se puede necesitar la ejecución de varias tareas  en paralelo. ● Se lleva a cabo a través de dos tipos de  herramientas: ● Procesos Padres e Hijos ● Threads
  • 14.
    Procesos Padres eHijos ● Un proceso puede crear procesos subordinados o HIJOS. ● En multitarea, tanto el proceso PADRE como el hijo se  ejecutan concurrentemente. ● Un proceso hijo e un proceso completo, es un programa en  ejecución, con valores propios, información de estado,  heredados del padre. ● El proceso padre sabe cuando el proceso hijo ha terminado.
  • 15.
    Thread o hilos ● En lugar de procesos hijos, se pueden crear threads o hilos,  conocidos como procesos ligeros. ● Poseen ligera información de estado, con similar  comportamiento a los procesos. ● Se preferible utilizar hilos en lugar de procesos hijos. ● Se requiere soporte de programación para la creación de los  hilos. ● El programa debe escribirse con la lógica para la creación de  los hilos y la coordinación o sincronización de la familia de hilos  creados por el hilo padre