so3 - Escuela de Educación Técnica Nº2

Anuncio
Escuela de Educación Técnica Nº2 – Sistemas Operativos – Especialidad: Informática
SISTEMAS OPERATIVOS - PROCESOS
COMUNICACIÓN ENTRE PROCESOS
Todas las computadoras modernas pueden hacer varias cosas al mismo
tiempo. Mientras ejecuta un programa de usuario, una computadora también
puede leer un disco y enviar texto.
Si bien la CPU solo puede ejecutar un programa en un instante determinado,
a lo largo de un segundo puede trabajar en varios programas, lo que da al
usuario la ilusión de paralelismo.
El modelo de procesos: Es un modelo conceptual desarrollado por los
diseñadores de sistemas operativos para poder explicar el paralelismo.
En este modelo, todo el software ejecutable de la computadora se organiza
en varios procesos secuenciales. Un proceso es un programa en ejecución e
incluye los valores que tienen el contador de programa, los registros y las
variables.
Simulamos que cada proceso tiene su propia CPU virtual aunque en realidad la
verdadera CPU cambia en forma continua de un proceso a otro. Esta
conmutación se denomina multiprogramación.
Con la CPU conmutando entre los procesos, la rapidez con que un proceso
realiza sus cálculos no es uniforme ni reproducible si el proceso se ejecuta otra
vez.
Un proceso es una actividad de algún tipo: tiene entrada, salida y estado.
Los sistemas operativos deben poder crear o destruir procesos que se van
generando durante la ejecución. En Unix los procesos pueden crearse
mediante una llamada a bifurcación FORK. Un proceso hijo también puede
llamar a una instrucción FORK y así puede crearse un arbol de procesos.
Estados de los procesos
Cada proceso es una entidad independiente con su contador de programa, y
estado interno pero en ocasiones necesitan interactuar con otros procesos. Un
proceso podría generar salidas que otro proceso utiliza como entrada.
Cuando un proceso se bloquea generalmente es porque está esperando la
entrada de otros procesos que no están disponibles.
Creación de procesos:
No todos los procesos que se requieren durante operación de una PC están
presentes desde cuando el sistema arranca.
Hay cuatro sucesos principales que causan la creación de procesos:
Inicialización del sistema
Ejecución de una llamada al sistema para crear procesos por parte de un
proceso en ejecución.
Solicitud de un usuario para crear un proceso.
Inicio de un trabajo por lotes.
(1)Cuando se arranca un sistema operativo, se crean varios procesos. Algunos
son de primer plano (procesos que interactuan con usuarios). (2) Otros son de
segundo plano (tienen una función específica) Estos procesos que quedan en
segundo plano como por ejemplo para recibir correo electrónico entrante o para
aceptar solicitudes de páginas web albergadas en nuestro equipo se llaman
Escuela de Educación Técnica Nº2 – Sistemas Operativos – Especialidad: Informática
“daemons” (demonios). En Windows se pueden ver usando el administrador de
tareas. (3) Un proceso en ejecución puede crear llamadas a otros procesos que
lo ayuden a realizar su labor. Esto tiene utilidad especial cuando varios
procesos están relacionados pero son independientes. Ej. descarga de gran
cantidad de datos, proceso de esos datos (suma, resta, etc.) en otro proceso.
(4) Solicitud del operador haciendo clic en un ícono o escribiendo un comando.
En Unix la llamada al sistema para crear un proceso se llama fork.
En Windows una llamada de Win32, CreateProcess se encarga de crear el
proceso y de cargar el programa correcto dentro del proceso creado.
Terminación de Procesos: Todo proceso termina y puede ser debido a las
siguientes condiciones:
Terminación normal
Terminación por error
Error Fatal
Terminado por otro proceso.
Terminación normal: Cuando se termina de ejecutar un programa se envía una
llamada para avisar al sistema operativo sobre la terminación. Esta llamada es
exit en Unix y ExitProcess en Windows. Los programas terminan en pantalla
cuando elegimos salir del menú o cuando cerramos la ventana de Windows.
Terminación por error: cuando el proceso durante su ejecución se encuentra
con un error, termina. Por ejemplo si un proceso tiene que llamar a un archivo,
y este archivo no es encontrado, el proceso termina.
Error fatal: Cuando un proceso tiene un error dentro de si mismo y por eso no
puede terminar de ejecutarse.
Terminado por otro proceso: Puede ocurrir que otro proceso pida que un
proceso que se está ejecutando, termine.
Jerarquía de procesos:
En algunos sistemas, cuando un proceso crea otro proceso, el proceso padre
y el hijo se mantienen asociados. El proceso hijo puede a su vez crear otro
proceso y así se crea un árbol de procesos. Así funciona Unix.
Windows no tiene jerarquía de procesos pero cuando un proceso crea a otro
recibe una ficha (identificador) que le sirve para controlar a su hijo.
Estados de los procesos:
Los procesos pueden encontrarse:
En ejecución: usando la CPU en un instante determinado.
Listo: Puede ejecutarse pero se encuentra detenido en forma temporal
esperando que se ejecute otro proceso.
Bloqueado: no puede ejecutarse hasta que no ocurra un suceso externo.
Todo el manejo de interrupciones y suspensión y reanudación de procesos
quedan ocultos en el calendarizador. El resto del sistema operativo adopta una
estructura precisa en forma de procesos.
Implementación de procesos:
El sistema operativo mantiene una tabla llamada tabla de procesos con una
entrada por proceso. Esta tabla informa cual es el estado del proceso, su
contador de programa, apuntador de pila, asignación de memoria, estado de
sus archivos abiertos, información contable y de calendarización y todas las
demás cosas que deben guardarse cuando el proceso pasa de estado en
Escuela de Educación Técnica Nº2 – Sistemas Operativos – Especialidad: Informática
ejecución a listo o bloqueado para que se vuelvan a poner en marcha después
como si nunca se hubieran detenido.
Comunicación entre procesos:
En ocasiones los procesos tienen que comunicarse entre ellos. Algunos,
deben transferir su salida a otro proceso. Las situaciones en las cuales dos o
mas procesos están leyendo o escribiendo datos compartidos y el resultado
final depende de quién y cuándo se ejecuta.
Exclusión mutua:
La parte del programa que tiene acceso a la memoria compartida se llama
“región crítica”. La exclusión mutua es una manera de asegurar que durante el
lapso en que el programa recorre la región crítica, excluya a otro proceso del
uso de las variables y datos compartidos.
Se necesita cumplir cuatro condiciones para encontrar una solución a las
regiones críticas:
1) Dos procesos no pueden estar al mismo tiempo dentro de sus regiones
críticas.
2) No pueden hacerse suposiciones sobre las velocidades ni el número de las
CPU.
3) Ningún proceso que se esté ejecutando fuera de su región crítica puede
bloquear a otros procesos.
4) Ningún otro proceso deberá tener que esperar de manera indefinida para
entrar en su región crítica.
El problema de la cena de los filósofos:
Existe un problema de sincronización llamado “problema de la cena de los
filósofos”.
Cinco filósofos están sentados en torno a una mesa circular. Cada uno tiene
un plato de espagueti. El espagueti es tan escurridizo que se necesitan dos
tenedores para comerlo. Entre cada par de platos hay un tenedor.
La vida de un filósofo consisten períodos alternados de comer y pensar. (Esto
es una abstracción). Cuando un filósofo siente hambre, trata de tomar los
tenedores que tiene a su izquierda y a su derecha uno a la vez en cualquier
orden. Si logra tomar los dos tenedores come durante un tiempo, luego los deja
sobre la mesa y sigue pensando. La pregunta clave es ¿podemos escribir un
programa para un filósofo que haga lo que debe hacer y nunca se atore?
(Tener en cuenta que es necesario tomar los dos tenedores).
La respuesta obvia es que el procedimiento “tomar tenedor” espera hasta que
el tenedor en cuestión esté libre y luego se apodera de él. Pero ¿qué sucedería
si todos los procedimientos deciden tomar el tenedor izquierdo al mismo
tiempo? Ninguno podría tomar el derecho nunca y se produciría un bloqueo
irreversible.
Podríamos generar un programa en el cual cuando un proceso observa que el
tenedor está ocupado, deja el tenedor durante un tiempo aleatorio y vuelve a
agarrarlo y a verificar si el otro está también libre.
Fuente: Sistemas Operativos modernos - Tanenbaum
Descargar