Vous êtes sur la page 1sur 27

Procesos e Hilos

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

El  tiempo  compartido  (time­sharing)  en  computación 


permite  que  se  alterne  (switch)  distintos  procesos  en  el 
procesador  (modelo  de  un  solo  procesador),  esto  puede 
ocurrir  muy  rápido  lo  que  crea  la  ilusión  de  que  se  están 
ejecutando varios procesos al mismo tiempo. 

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()

Es el PID=0?      si Exec()


Child() execute
No

     si El PID < 0 Exit()


El proceso informa 
No Al fork ()
Waitid()
Estados de procesos
Terminado

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 micro­kernel 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.

Vous aimerez peut-être aussi