Este documento describe los conceptos básicos de programación, incluyendo los estados de un proceso, tipos de programas en Java como aplicaciones, applets, servlets y bytecode, y técnicas de programación concurrente como procesos y hilos. Explica que un proceso representa un programa en ejecución con valores, estado e información de recursos, y que pasa por estados como nuevo, en ejecución, listo, bloqueado y terminado. También cubre cómo la programación concurrente permite la ejecución simultánea de tareas dentro y entre proces
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 Programas en 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 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.
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 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.
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