0% encontró este documento útil (0 votos)
280 vistas24 páginas

Procesos e Hilos en SO

Este documento describe los conceptos básicos de procesos e hilos. Explica que un proceso es un programa en ejecución gestionado por el sistema operativo. Los procesos pueden estar en diferentes estados como ejecución, listo, bloqueado o terminado. Los hilos permiten a un proceso realizar múltiples tareas de forma concurrente compartiendo recursos como memoria y archivos. Finalmente, la comunicación entre procesos y hilos requiere mecanismos de sincronización para evitar problemas al compartir recursos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
280 vistas24 páginas

Procesos e Hilos en SO

Este documento describe los conceptos básicos de procesos e hilos. Explica que un proceso es un programa en ejecución gestionado por el sistema operativo. Los procesos pueden estar en diferentes estados como ejecución, listo, bloqueado o terminado. Los hilos permiten a un proceso realizar múltiples tareas de forma concurrente compartiendo recursos como memoria y archivos. Finalmente, la comunicación entre procesos y hilos requiere mecanismos de sincronización para evitar problemas al compartir recursos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd

PROCESOS E HILOS

Procesos e hilo
Concepto procesos

Todos los programas, cuya ejecución solicitan los usuarios, se ejecutan en forma de
procesos, de ahí la importancia para el informático de conocerlos en detalle. El
proceso se puede definir como un programa en ejecución y, de una forma un poco
más precisa, como la unidad de procesamiento gestionada por el sistema operativo.

El sistema operativo mantiene por cada proceso una serie de estructuras de


información que permiten identificar las características de éste, así como los
recursos que tiene asignados. En esta última categoría entran los descriptores de los
segmentos de memoria asignados, los descriptores de los archivos abiertos, los
descriptores de los puertos de comunicaciones, etc.
ESTADO DE UN PROCESO
Procesos e hilo
Estado de un proceso

 El principal trabajo del procesador es ejecutar las instrucciones de máquina


que se encuentran en memoria principal. Estas instrucciones se encuentran en
forma de programas. Para que un programa pueda ser ejecutado, el sistema
operativo crea un nuevo proceso, y el procesador ejecuta una tras otra las
instrucciones del mismo.
 En un entorno de multiprogramación, el procesador intercalará la ejecución de
instrucciones de varios programas que se encuentran en memoria. El sistema
operativo es el responsable de determinar las pautas de intercalado y
asignación de recursos a cada proceso.
Procesos e hilo
Modelo de dos estados

El modelo de estados más simple es el de dos estados. En este modelo, un proceso


puede estar ejecutándose o no. Cuando se crea un nuevo proceso, se pone en
estado de No ejecución. En algún momento el proceso que se está ejecutando
pasará al estado No ejecución y otro proceso se elegirá de la lista de procesos
listos para ejecutar para ponerlo en estado Ejecución.

De esta explicación se desprende que es necesario que el sistema operativo pueda


seguirle la pista a los procesos, conociendo su estado y el lugar que ocupa en
memoria. Además los procesos que no se están ejecutando deben guardarse en
algún tipo de cola mientras esperan su turno para ejecutar.
Procesos e hilo
Modelo de cinco estado

 Nuevo: El proceso recién fue creado y todavía no fue admitido por el sistema
operativo. En general los procesos que se encuentran en este estado todavía no
fueron cargados en la memoria principal.
 Ejecución: es un proceso que está haciendo uso del procesador.
 Bloqueado: No puede ejecutarse hasta que un evento externo sea llevado a cabo.
 Listo: ha dejado disponible al procesador para que otro proceso pueda ocuparlo.
 Terminado: El proceso fue expulsado del grupo de procesos ejecutables, ya sea
porque terminó o por algún fallo, como un error de protección, aritmético, etc.
Procesos e hilo
Procesos

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.

El mecanismo por el cual un proceso crea otro proceso se denomina bifurcación.

El sistema operativo es el responsable de determinar las pautas de intercalado y


asignación de recursos a cada proceso.
Procesos e hilo
Procesos

Si existe un esquema con diferentes niveles de prioridad de procesos es


conveniente mantener varias colas de procesos listos, una para cada nivel de
prioridad, lo que ayuda a determinar cuál es el proceso que más conviene
ejecutar a continuación.

La sincronización explícita entre procesos es un caso particular del estado


"bloqueado". En este caso, el suceso que permite desbloquear un proceso no
es una operación de entrada/salida, sino una señal generada a propósito por el
programador desde otro proceso.
HILO
Procesos e hilo
Hilio

Un hilo en un sistema operativo es la característica que permite a una


aplicación realizar varias tareas a la vez concurrentemente, los distintos hilos
de ejecución comparten una serie de recursos tales como el espacio de
memoria, los archivos abiertos, situación de autentificación. Esta acción
permite simplificar el diseño de una aplicación que debe llevar a cabo distintas
funciones simultáneamente.

Los hilos son básicamente una tarea que puede ser ejecutada en paralelo con
otra tarea; teniendo en cuenta lo que es propio de cada hilo es el contador de
programa, la pila de ejecución y el estado de la CPU (incluyendo el valor de
los registros).
Procesos e hilo
Hilo (Continuación)

En muchos de los sistemas operativos que dan facilidades a los hilos, es más
rápido cambiar de un hilo a otro dentro del mismo proceso, que cambiar de un
proceso a otro. Este fenómeno se debe a que los hilos comparten datos y
espacios de direcciones, mientras que los procesos, al ser independientes, no lo
hacen.

Los hilos presentan estados, los principales de ellos son: Ejecución, Listo y
Bloqueado. No tiene sentido asociar estados de suspensión de hilos ya que es
un concepto de proceso. En todo caso, si un proceso está expulsado de la
memoria principal (ram), todos sus hilos deberán estarlo ya que todos
comparten el espacio de direcciones del proceso.
Procesos e hilo
Hilo Ejemplo

Un servidor web acepta solicitudes de los clientes que piden páginas web. Si este
servidor tiene varios clientes y funcionara con un solo hilo de ejecución, solo
podría dar servicio a un cliente por vez, y el tiempo que podría esperar un cliente
para ser atendido podría ser muy grande.

Una posible solución sería que el servidor funcione de tal manera que acepte una
solicitud por vez, y que cuando reciba otra solicitud, cree otro proceso para dar
servicio a la nueva solicitud. Pero crear un proceso lleva tiempo y utiliza muchos
recursos, entonces, si cada proceso realizará las mismas tareas ¿Por qué no utilizar
hilos?

Generalmente es más eficiente usar un proceso que utilice múltiples hilos (un hilo
para escuchar las solicitudes, y cuando llega una solicitud, el lugar de crear otro
proceso, se crea otro hilo para procesar la solicitud)
FUNCIONALIDAD DE LOS HILO
Procesos e hilo
Funcionalidad de los hilio

Al igual que los procesos, los hilos poseen un estado de ejecución


y pueden sincronizarse entre ellos para evitar problemas de
compartimiento de recursos. Generalmente, cada hilo tiene una
tarea específica y determinada, como forma de aumentar la
eficiencia del uso del procesador.
Procesos e hilo
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 CPU (sistemas Multiprocesador o
a través de grupo de maquinas ) ya que los hilos del programa se prestan
verdaderamente para la ejecución concurrente.
Procesos e hilo
Tareas e hilos.

Unidad mínima de asignación: tarea.


Unidad mínima de expedición: hilo.

Dos hilos de una misma tarea (denominados hilos pares) comparten el segmento
de código, el segmento de datos y un espacio de pila, es decir, los recursos
asignados a la tarea.

Podemos captar la funcionalidad de los hilos si comparamos el control de


múltiples hilos con el control de múltiples procesos. En el caso de los procesos,
cada uno opera independientemente de los otros; cada proceso tiene su propio
contador de programa, registro de pila, y espacio de direcciones. Este tipo de
organización es muy útil cuando los trabajos que los procesos efectúan no
tienen ninguna relación entre si.
COMUNICACIÓN ENTRE PROCESOS
Procesos e hilo
Comunicación entre procesos

La comunicación entre procesos es una función básica de los sistemas operativos


que provee un mecanismo que permite a los procesos comunicarse y
sincronizarse entre sí, normalmente a través de un sistema de bajo nivel de
paso de mensajes que ofrece la red subyacente.

Las técnicas de IPC están divididas dentro de métodos para: paso de mensajes,
sincronización, memoria compartida y llamadas de procedimientos remotos
(RPC).
Procesos e hilo
Comunicación entre procesos

En un sistema, los procesos pueden ejecutarse independientemente o cooperando


entre sí. Los intérpretes de comandos son ejemplos típicos de procesos que no
precisan la cooperación de otros para realizar sus funciones. En cambio, los procesos
que sí cooperan necesitan comunicarse entre sí para poder completar sus tareas.

La comunicación entre procesos puede estar motivada por la competencia o el uso


de recursos compartidos o porque varios procesos deban ejecutarse
sincronizadamente para completar una tarea.
PROGRAMACIÓN CONCURRENTE
Procesos e hilo
Programación concurrente

Se conoce por programación concurrente a la rama de la informática que


trata de las técnicas de programación que se usan para expresar el
paralelismo entre tareas y para resolver los problemas de comunicación y
sincronización entre procesos.

El principal problema de la programación concurrente corresponde a no


saber en que orden se ejecutan los programas (en especial los programas
que se comunican). Se debe tener especial cuidado en que este orden no
afecte el resultado de los programas.
Procesos e hilo
Problemas clásicos de IPC

El problema de la cena de los filósofos

En 1965 Dijkstra planteó y resolvió un problema de


sincronización llamado el problema de la cena de los filósofos,
que se puede enunciar como sigue. Cinco filósofos se sientan a
la mesa, cada uno con un plato de espaghetti. El espaghetti es
tan escurridizo que un filósofo necesita dos tenedores para
comerlo. Entre cada dos platos hay un tenedor. En imagen se
muestra la mesa.

Los filósofos se disponen a comer;

La vida de un filósofo consta de periodos alternos de comer y pensar. Cuando un filósofo


tiene hambre, intenta obtener un tenedor para su mano derecha, y otro para su mano
izquierda, cogiendo uno a la vez y en cualquier orden. Si logra obtener los dos tenedores,
come un rato y después deja los tenedores y continúa pensando. La pregunta clave es: puede
el lector escribir un programa para cada filósofo que permita comer equitativamente a los
filósofos y no se interbloquee?
Procesos e hilo
Problemas clásicos de IPC

 El problema de los lectores y los escritores

El problema de la cena de los filósofos es útil para modelar procesos que


compiten por el acceso exclusivo a un número limitado de recursos, como
una unidad de cinta u otro dispositivo de E/S. Otro problema famoso es el
de los lectores y escritores (Courtois et al., 1971), que modela el acceso a
una base de datos. Supóngase una base de datos, con muchos procesos
que compiten por leer y escribir en ella. Se puede permitir que varios
procesos lean de la base de datos al mismo tiempo, pero si uno de los
procesos está escribiendo (es decir, modificando) la base de datos,
ninguno de los demás debería tener acceso a ésta, ni siquiera los lectores.
fin

También podría gustarte