Académique Documents
Professionnel Documents
Culture Documents
Agenda:
Definición de proceso.
Ciclo de vida de un proceso.
Descripción de procesos.
Control de procesos: modos de ejecución,
creación y destrucción de procesos, cambio de
proceso y cambio de contexto.
Procesos e hilos.
Procesos e Hilos
Agenda:
Tipos de hilos.
Descripción y control de hilos.
Servicios Posix y Win32 para gestión de procesos
e hilos.
Procesos independientes y dependientes.
Condiciones de Bernstein.
Condición de carrera.
Recursos críticos y sección critica.
Algoritmo de Decker. .
Procesos e Hilos
Agenda:
Soluciones por hardware al problema de exclusión
mutua.
Semáforos.
Monitores.
Comunicación entre procesos.
Mensajes.
Tuberías.
Señales.
Servicios Posix y Win32 para la coordinación
entre procesos.
Interbloqueo: Prevención, detección y predicción
de un abrazo mortal
Concepto de estado y proceso
Estado: En Ciencias de la computación y en Teoría de
autómatas, un estado es una configuración única de
información en un programa o máquina. wikipedia
Proceso: En computación un proceso es una instancia de
un programa que esta siendo usado secuencialmente. Knott,
1974.
Proceso: Es una instancia de un programa en ejecución, un
proceso puede ser uno o varios hilos.
Procesos
A un proceso que funciona en TS se le premia cuando deja
el procesador (asignandole una prioridad mas alta) y se le
castiga cuando se queda mucho tiempo en el precesador
(se le baja la prioridad).
Esto es conocido como multiprogramación.
Estado de procesos
Creado Terminado
(created) (terminated)
Corriendo
(running)
Bloqueado
Esperando (blocked)
(waiting)
Estado de procesos
Creado
Hay cuatro principales eventos que causan que un
proceso sea creado:
Inicialización del sistema.
Ejecución de un proceso, creación de llamadas a
procesos (system call) por un proceso corriendo.
Un usuario crea un nuevo proceso.
Iniciación de un trabajo por lotes (batch job).
Estado de proceso
Creado (algunos conceptos importantes)
En unix:
Fork: Un proceso crea una copia de si mismo,
llamado proceso hijo. Esto se hace para ejecución de
los procesos en Unix.
En windows:
CreateProcess: Crea procesos padres e hijos, similar
a fork de unix.
Estado de proceso
Creado (algunos conceptos importantes)
fork()
Usualmente se terminan procesos siguiendo las
siguientes condiciones:
Salida normal.
Salida por error.
Errores fatales.
Detenidos por otros procesos.
Estado de procesos
Terminado (Algunos conceptos)
Exit: Función encargada de finalizar procesos en
Unix.
ExitProcess: Función encargada de finalizar
procesos en Windows.
Kill: Función encargada de detener procesos en
Unix.
TerminateProcess: Función encargada de detener
procesos en Windows.
Estado de los procesos
Esperando (waiting): Un proceso listo (ready) o
esperando (waiting), esta en memoria principal
esperando por el CPU para ser ejecutado.
Corriendo (running): Esta siendo ejecutado en el
CPU.
Bloqueado: También conocido como sleeping,
estará en este estado cuando es necesario que se
ejecute otro proceso tal como un archivo un
semáforo o un dispositivo.
Estado de procesos
Corriendo
(running)
1
2
3
4
Bloqueado Esperando
(blocked) (waiting)
1 El proceso es bloqueado.
2 El scheduler selecciona otra proceso
3 El scheduler selecciona este proceso
4 el segundo proceso se ejecuta
Implementación de procesos
El sistema operativo mantiene una tabla, llamada
tabla de procesos (process table), mejor conocida
como PCB (Process Control Block), aquí se
mantiene información por procesos, información
tal como:
Identificación del proceso, identificación del padre,
comando que lo crea, información de memoria
consumida, etc.
Hilos
Porque esta compuesto el hilo
Por el identificador.
Por un contador.
Por el conjunto de registros.
Por un pila.
La pila en el hilo
Tipos de Hilos
Hilos de usuarios: hilo creado por una aplicación
Hilo del sistema: hilo creado por el sistema o si
hablamos de microkernel por el espacio reservado
a los servicios.
Ejemplo de un procesador
multihilo
Un hilo maneja el teclado, otro maneja la información y otro maneja el disco.
Kernel manejado por hilos
En la primera figura un espacio de usuario manejado por hilos, en la
segunda figura el espacio del kernel es manejado por hilos también.
Hilos Posix y Win32
Para posix los hilos son conocidos como pthreads y
son igualmente conjuntos de funciones y constantes.
Tipos:
pthread_t: manejador del hilo.
pthread_attr_t: atributos del hilo.
Algunas funciones:
pthread_create(): crea un hilo.
pthread_exit(): termina el hilo actual.
pthread_cancel(): cancela la ejecución de otro hilo.
Hilos Posix y Win32
Los Windows thread o hilos de windows son APIs
para el manejo de programas dividos en hilos.
Funcionan también para Posix.
Implementación hibrida
Procesos dependientes e
independientes
Independientes:
P.ej. dos procesos de dos usuarios diferentes.
Dependientes:
P. ej. Un fork.
Procesos concurrentes
Dos procesos son concurrentes si su tiempo se
solapa.
Se le llama concurrencia al proceso computacional
donde muchos procesos se ejecutan al mismo
tiempo y potencialmente interactúan con otro.
En Informática, se habla de concurrencia
cuando hay una existencia simultánea de varios
procesos en ejecución.
Dos procesos serán concurrentes cuando la
primera instrucción de uno de ellos se ejecuta
después de la primera instrucción del otro y
antes de la última.
Condiciones de Berstein
Berstein supone las tres condiciones siguientes:
Si el proceso Pi escribe en una celda de memoria M i,
entonces ningún proceso Pj puede leer en la celda Mi.
Si el proceso Pi lee desde una celda de memoria Mi,
entonces ningún proceso Pj puede escribir a la celda
Mi.
Si el proceso Pi escribe en una celda de memoria M i,
entonces ningún proceso Pj puede escribir a la celda
Mi.
Condición de carrera
Trabajos: Unidad de
variable
que maneja arch
a imprimir
alamacenamiento,
supongamos solo
Saliente: Los
arch
destinado a la cola de
impresos
impresión
Suponiendo que las variables saliente y trabajo manejen la cola de impresión y que llegue un
trabajo a ser impreso a la variable trabajos y tome el lugar 1 en la unidad de almacenamiento
y esta se vea interrumpida por alguna interrupción y pase un trabajo 2 a ocupar la variable
trabajos cuando aun el trabajo 1 esta en la variable y que el trabajo se imprima. Esto puede
crear un conflicto con respecto al trabajo 1 que nunca actualiza que otro trabajo tomó su
posición, por ende el trabajo 1 quizás nunca se imprime.