El documento trata sobre conceptos básicos de sistemas operativos. Explica la diferencia entre programas y procesos, y los diferentes estados que pueden tener los procesos como nuevo, listo, ejecutando, bloqueado y terminado. También describe tipos de programas en Java como aplicaciones, applets y servlets, y diferentes formas de programación concurrente como procesos en múltiples computadoras, procesos en un solo computador, y programación concurrente dentro de un proceso usando procesos hijos y hilos.
Conceptos básicos de sistemas operativos: programas, procesos, estados y programación concurrente
1. CONCEPTOS BÁSICOS DE
SISTEMAS OPERATIVOS
Vinicio Valdivieso V.
Aplicaciones Distribuidas I
7mo Nivel A, Ingenieria de Sistemas
3era Semana
Tarea 4
2. Programas y Procesos de
computación
Un programa software,
es un artefacto
construido por un
desarrollador de
software, utilizando algún
lenguaje de
programación.
3. Programas y Procesos de
computación
Un proceso consiste en
un programa que se
ejecuta, con valores,
información de su
estado, y asignación de
los recursos necesarios
para que el sistema
operativo pueda
gestionar la ejecución de
dicho proceso.
4. Transiciones de estado de
los procesos
Durante su vida, un proceso puede pasar por una serie de estados
discretos.
Solamente puede haber un proceso en ejecución a la vez, pero pueden
existir varios listos y varios pueden estar bloqueados.
Admitido
Listo
tiempo
exedido
Bloqueado Ejecución Salir
5. Transición de estados
ESTADO DESCRIPCION
Nuevo –> Listo Al crearse un proceso pasa inmediatamente al estado listo.
Listo –> Ejecutando En el estado de listo, el proceso solo espera para que se le asigne un procesador para
ejecutar (tener en cuenta que puede existir más de un procesador en el sistema).
Al liberarse un procesador el planificador (scheduler) selecciona el próximo proceso,
según algún criterio definido, a ejecutar.
Ejecutando –> Listo Ante una interrupción que se generé, el proceso puede perder el recurso procesador
y pasar al estado de listo. El planificador será el encargado de seleccionar el próximo
proceso a ejecutar.
Ejecutando –> Bloqueado A medida que el proceso ejecuta instrucciones realiza pedidos en distintos
componentes (ej.: genera un pedido de E/S). Teniendo en cuenta que el pedido puede
demorar y, además, si está en un sistema multiprogramado, el proceso es puesto en
una cola de espera hasta que se complete su pedido. De esta forma, se logra utilizar
en forma más eficiente el procesador.
Bloqueado –> Listo Una vez que ocurre el evento que el proceso estaba esperando en la cola de espera,
el proceso es puesto nuevamente en la cola de procesos listos.
Ejecutando > Cuando el proceso ejecuta sus última instrucción pasa al estado terminado. El sistema
Terminado libera las estructuras que representan al proceso.
6. Tipo de Programas en Java
El código para crear
procesos se lo realizará
en Java; tipos de
programa en Java:
Aplicaciones
Applets
Servlets
7. Tipo de Programas en Java
Aplicaciones
Los usuarios finales suelen
interactuar con la máquina
virtual de Java y el conjunto
estándar de bibliotecas.
Las aplicaciones Java pueden
usarse de forma variada,
como por ejemplo, ser
incrustadas en una página
Web.
Para el desarrollo de
aplicaciones, se utiliza un
conjunto de herramientas
conocidas como JDK (Java
Development Kit)
8. Tipo de Programas en Java
Applets
Un Java applet es una
pequeña aplicacion java que
realiza una tarea especifica,
esta es entregada al usuario
en forma de Java bytecode.
Los Applets son usados
para proveer características
interactivas a las
aplicaciones web que no
pueden ser provistas por
por HTML solamente.
9. Tipo de Programas en Java
Servlets
Servlets son objetos del
lenguaje de programación
Javaque procesan
requerimientos
dinámicamente y contruyen
procesos.
10. Programación Concurrente
La computación distribuida, supone el uso de
programación concurrente, que consiste en la
ejecución simultánea de procesos. Clases de
computación concurrente:
1. Procesos Concurrentes ejecutados en múltiples
computadores
2. Procesos Concurrentes ejecutados en un solo
computador
3. Programación concurrente dentro de un proceso
11. Procesos concurrente ejecutados
en multiples computadores
Son procesos separados ejecutándose concurrentemente en
computadores independientes interconectados a través de una red.
Los procesos interactúan con otros procesos mediante el intercambio de
datos sobre la red, pero su ejecución es completamente independiente.
12. Procesos concurrentes ejecutados
en un único computador
Ciertos computadores que utilizan sistemas operativos multitarea,
que permite la ejecución concurrente de múltiples tareas o
procesos.
La concurrencia puede ser real o virtual.
La verdadera concurrencia multitarea solo es posible si el
computador tiene múltiples CPU, de forma que cada CPU pueda
ejecutar un proceso
13. Programación concurrente
dentro de un proceso
Además de la programación concurrente entre diferentes
procesos, muchas veces un único programa necesita iniciar
diferentes tareas que se ejecuten concurrentemente.
La programación concurrente dentro de un proceso se
lleva a cabo a través de dos tipos de herramientas,
proporcionadas por el sistema operativo:
Procesos Padres e Hijos
Threads o Hilos
14. PROCESOS PADRES E HIJOS
En tiempo de ejecución, un proceso puede crear procesos
subordinados o procesos hijos. A través de la multitarea real
o virtual, el proceso original, denominado proceso padre,
continúa ejecutándose simultáneamente con el proceso
hijo.
Un proceso hijo es un proceso completo que consiste en un
programa en ejecución, con valores propios información de estado,
que hereda del proceso padre.
Un proceso padre puede saber cuando un proceso hijo ha
finalizado.
15. THREADS O HILOS
En vez de procesos hijos, un proceso puede crear threads o hilos,
también conocidos como procesos ligeros.
Los hilos poseen una mínima información de estado,
comportándose por lo demás de la misma forma que los procesos.
Debido a que implican menos sobrecarga, es preferible utilizar hilos
que utilizar procesos hijos.