PROCESOS PROCESADORES
CONCEPTOS BÁSICOS
Procesos:
Esta definición varía ligeramente en el caso de sistemas
operativos multihilo, donde un proceso consta de uno o más hilos, la memoria de
trabajo (compartida por todos los hilos) y la información de planificación.
Cada hilo consta de instrucciones y estado de ejecución.
Los procesos son creados y destruidos por el sistema
operativo, así como también este se debe hacer cargo de la comunicación entre
procesos, pero lo hace a petición de otros procesos. El mecanismo por el cual
un proceso crea otro proceso se denomina bifurcación (fork). Los nuevos
procesos pueden ser independientes y no compartir el espacio de memoria con el
proceso que los ha creado o ser creados en el mismo espacio de memoria.
En los sistemas operativos multihilo es posible crear tanto
hilos como procesos. La diferencia estriba en que un proceso solamente puede
crear hilos para sí mismo y en que dichos hilos comparten toda la memoria
reservada para el proceso.
Procesadores:
Es el cerebro del computador, se encarga de convertir la
materia prima de éste y dar un producto que puede ser sometido a otro
procesamiento o ser el producto final del sistema o maquina. Realiza cálculos
matemáticos a altísimas velocidades.
HILOS Y MULTIHILOS
Un hilo de ejecución, en sistemas operativos, es una
característica que permite a una aplicación realizar varias tareas
concurrentemente. Los distintos hilos de ejecución comparten una serie de
recursos tales como el espacio de memoria, los archivos abiertos, situación de
autenticación, etc. Esta técnica permite simplificar el diseño de una
aplicación que debe llevar a cabo distintas funciones simultáneamente.
Los hilos de ejecución que comparten los mismos recursos,
sumados a estos recursos, son en conjunto conocidos como un proceso. El hecho
de que los hilos de ejecución de un mismo proceso compartan los recursos hace
que cualquiera de estos hilos pueda modificar éstos. Cuando un hilo modifica un
dato en la memoria, los otros hilos acceden e ese dato modificado
inmediatamente.
Sincronización de hilos: todos los hilos comparten el mismo
espacio de direcciones y otros recursos como pueden ser archivos abiertos.
Cualquier modificación de un recurso desde un hilo afecta al entorno del resto
de los hilos del mismo proceso. Por lo tanto, es necesario sincronizar la
actividad de los distintos hilos para que no interfieran unos con otros o
corrompan estructuras de datos.
Una ventaja de la programación multihilo es que los programas
operan con mayor velocidad en sistemas de computadores con múltiples CPUs
(sistemas multiprocesador o a través de grupo de máquinas) ya que los hilos del
programa se prestan verdaderamente para la ejecución concurrente. En tal caso
el programador necesita ser cuidadoso para evitar condiciones de carrera
(problema que sucede cuando diferentes hilos o procesos alteran datos que otros
también están usando), y otros comportamientos no intuitivos. Los hilos
generalmente requieren reunirse para procesar los datos en el orden correcto.
Es posible que los hilos requieran de operaciones atómicas para impedir que los
datos comunes sean cambiados o leídos mientras estén siendo modificados, para
lo que usualmente se utilizan los semáforos. El descuido de esto puede generar
interbloqueo.
Formas de multihilos
Los sistemas operativos generalmente implementan hilos de dos
maneras:
.Multihilo apropiativo: permite al sistema operativo
determinar cuándo debe haber un cambio de contexto. La desventaja de esto es
que el sistema puede hacer un cambio de contexto en un momento inadecuado,
causando un fenómeno conocido como inversión de prioridades y otros problemas.
.Multihilo cooperativo: depende del mismo hilo abandonar el
control cuando llega a un punto de detención, lo cual puede traer problemas
cuando el hilo espera la disponibilidad de un recurso.
No hay comentarios:
Publicar un comentario