Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Hilos PDF
Hilos PDF
HILOS
Un hilo es una unidad básica de utilización de CPU, la cual contiene un id de hilo, su propio program counter,
un conjunto de registros, y una pila; que se representa a nivel del sistema operativo con una estructura llamada
TCB (thread control block).
Los hilos comparten con otros hilos que pertenecen al mismo proceso la sección de código, la sección de datos,
entre otras cosas. Si un proceso tiene múltiples hilos, puede realizar más de una tarea a la vez (esto es real
cuando se posee más de un CPU).
Programa en ejecución que comparte la imagen de memoria y otros recursos del proceso con otros hilos.
Desde el punto de vista de programación: Función cuya ejecución se puede lanzar en paralelo con otras.
Todos los hilos de un proceso comparten el mismo entorno de ejecución (variables globales, espacio
de direcciones, ficheros abiertos, etc.).
Cada hilo tiene su propio juego de registros de CPU, pila, variables locales, etc.
No existe protección entre hilos: un error en un hilo puede estropear la pila de otro.
Para ordenar la forma en la que los hilos acceden a datos comunes hay que emplear mecanismos de
sincronización.
Los hilos permiten paralelizar la ejecución de una aplicación. Mientras un hilo está bloqueado, otro podría
ejecutarse.
Respuesta: el tiempo de respuesta mejora, ya que el programa puede continuar ejecutándose, aunque parte de
él esté bloqueado.
Compartir recursos: los hilos comparten la memoria y los recursos del proceso al que pertenecen, por lo que se
puede tener varios hilos de ejecución dentro del mismo espacio de direcciones.
Economía: Es más fácil la creación, cambio de contexto y gestión de hilos que de procesos.
Utilización múltiples CPUs: permite que hilos de un mismo proceso ejecuten en diferentes CPUs a la vez. En un
proceso mono-hilo, un proceso ejecuta en una única CPU, independientemente de cuantas tenga disponibles.
Hilos a nivel de usuario: son implementados en alguna librería. Estos hilos se gestionan sin soporte del SO, el
cual solo reconoce un hilo de ejecución. Su cambio de contexto es más sencillo que el cambio de contexto entre
hilos de kernel.
Hilos a nivel de kernel: el SO es quien crea, planifica y gestiona los hilos. Se reconocen tantos hilos como se
hayan creado. Permiten aprovechar mejor las arquitecturas multiprocesadores, y proporcionan un mejor
tiempo de respuesta, ya que si un hilo se bloquea, los otros pueden seguir ejecutando.
PROCESOS
El proceso es un programa en ejecución, incluyendo el valor del program counter, los registros y las variables.
Conceptualmente, cada proceso tiene un hilo (thread) de ejecución que es visto como un CPU virtual.
El recurso procesador es alternado entre los diferentes procesos que existan en el sistema, dando la idea de
que ejecutan en paralelo (multiprogramación).
CPU (thread)
Archivos
Espacio de memoria
Cada proceso tiene su program counter, y avanza cuando el proceso tiene asignado el recurso procesador. A su
vez, a cada proceso se le asigna un número que lo identifica entre los demás: identificador de proceso (process
id)
Memoria de los procesos
Ejecutando (running): El proceso tiene asignado un procesador y está ejecutando sus instrucciones.
Bloqueado (waiting): El proceso está esperando por un evento (que se complete un pedido de E/S o una señal).
Listo (ready): El proceso está listo para ejecutar, solo necesita del recurso procesador.
ALGORITMOS DE PLANIFICACIÓN
El planificador (scheduler) es la parte del SO que decide a qué proceso preparado se le da paso a CPU.
Planificación apropiativa: el planificador puede desalojar al proceso en CPU durante su ejecución y cambiarlo
por otro. Necesita una interrupción de reloj para poder ejecutarse en períodos regulares de tiempo (quantum).
Round Robin
Es uno de los algoritmos más antiguos y equitativos en el reparto de la CPU entre los procesos, muy válido para
entornos de tiempo compartido. Cada proceso tiene asignado un intervalo de tiempo de ejecución, llamado
cuantum o cuanto. Si el proceso agota su cuantum de tiempo, se elige a otro proceso para ocupar la CPU. Si el
proceso se bloquea o termina antes de agotar su cuantum también se alterna el uso de la CPU.
Round Robin es uno de los algoritmos de planificación de procesos más complejos y difíciles, dentro de un
sistema operativo asigna a cada proceso una porción de tiempo equitativa y ordenada, tratando a todos los
procesos con la misma prioridad.
Se define un intervalo de tiempo denominado cuanto, cuya duración varía según el sistema. La cola de procesos
se estructura como una cola circular. El planificado la recorre asignando un cuanto de tiempo a cada proceso.
La organización de la cola es FIFO.
Este algoritmo, se basa en los ciclos de vida de los procesos, da prioridad a los más cortos a la hora de ejecución
y los coloca en la cola.
El SJF se puede comportar de dos formas:
Con Desalojo: Si se incorpora un nuevo proceso a la cola de listos y este tiene un ciclo de CPU menor que el
ciclo de CPU del proceso que se está ejecuando, entonces dicho proceso es desalojado y el nuevo proceso toma
la CPU.
Sin desalojo: Cuando un proceso toma la CPU, ningún otro proceso podrá apropiarse de ella hasta que el
proceso que la posee termine de ejecutarse.
Este algoritmo da servicio a las solicitudes de acceso a disco de la cola según el orden de llegada.
Cuando se tiene que elegir a qué proceso asignar la CPU se escoge al que llevara más tiempo listo. El proceso
se mantiene en la CPU hasta que se bloquea voluntariamente.
La ventaja de este algoritmo es su fácil implementación, sin embargo, no es válido para entornos interactivos
ya que un proceso de mucho cálculo de CPU hace aumentar el tiempo de espera de los demás procesos. Para
implementar el algoritmo se necesita mantener una cola con los procesos listos ordenada por tiempo de
llegada. Cuando un proceso pasa de bloqueado a listo se sitúa el último de la cola.
Por prioridad
En este tipo de algoritmos el proceso de mayor prioridad es el que se ejecuta. En un escenario con prioridades
estáticas los procesos con menor prioridad podrían no llegar a ejecutarse, por ejemplo porque entren
continuamente procesos de mayor prioridad. Para solucionar este problema se introduce el concepto de
prioridad dinámica que consiste en modificar la prioridad inicial de los procesos a medida que transcurre el
tiempo y se suele hacer atendiendo a diferentes criterios:
Múltiples niveles
Las siglas MLQ y MLFQ son los acrónimos ingleses de multi level queues (colas multinivel) y multi level
feedback queues (colas multinivel realimentadas).
Los algoritmos de colas multinivel realimentadas se basan en los algoritmos de colas multinivel, pero permiten
el movimiento de los trabajos de unas colas a otras.
Webgrafía
https://es.wikipedia.org/wiki/Planificaci%C3%B3n_mediante_colas_multinivel
http://gwolf.sistop.org/laminas/08_algoritmos_planif_proc.pdf
https://es.slideshare.net/FernandoJMoralesOldenburg/algoritmos-de-planificacin-de-procesos-en-sistemas-
operativos
http://lsi.vc.ehu.es/pablogn/docencia/manuales/SO/TemasSOuJaen/PLANIFICACIONDEPROCESOS/6Algori
tmosdePlanificacionI.htm
https://eva.fing.edu.uy/pluginfile.php/75119/mod_resource/content/4/5-SO-Teo-Procesos.pdf
https://www.fing.edu.uy/tecnoinf/mvd/cursos/so/material/teo/so05-hilos.pdf
https://sisoperativoluis.wordpress.com/2016/09/24/concepto-de-hilo-de-ejecucion/