Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SISTEMAS OPERATIVOS
DOCENTE:
JAVIER RICARDO BERMEO PAUCAR
FECHA DE ENTREGA:
INDICE GENERAL
Introducción
Los distintos hilos de ejecución comparten una serie de recurso 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.
Discutiremos los estándares POSIX, que intentan estandarizar las API de UNIX
de uso común. Una de estas reglas se aplica al sujeto. El estándar es tan
conocido que tiene un nombre especial, Pthreads. Sin embargo, fuera de UNIX,
las bibliotecas POSIX están disponibles en muchos sistemas operativos debido
a la gran cantidad de programas implementados con estas llamadas al sistema
API. Puede recordar que incluso Windows NT tiene una biblioteca para manejar
algunas llamadas al sistema API POSIX en el nivel del código fuente. Debido a
esta amplia disponibilidad, las cadenas POSIX tienen un nicho real: brindan una
aplicación altamente portátil. El estándar es tan conocido que el compilador IBM
Fortran incluso tiene una implementación de subprocesos. Sin embargo, tenga
en cuenta que POSIX no es un paquete sino un estándar. Cada desarrollador
puede implementar servicios como mejor le parezca.
IV
Desarrollo
En POSIX, los procesos funcionan de la manera habitual: hay un hilo que ejecuta una
función, ese hilo tiene la capacidad de crear hilos adicionales para ejecutar
otros hilos que residirán en el espacio de direcciones del proceso. Todos
estos subprocesos estarán en el mismo nivel, lo que significa que son "hermanos", a
diferencia de otros procesos que están relacionados entre padres e hijos.
CREACIÓN DE HILOS
Un proceso típico de Unix se puede considerar como un único flujo de control: cada
proceso solo realiza una operación a la vez. Con múltiples hilos
de control, podemos hacer muchas cosas al mismo tiempo, y cada hilo se ocupa de
una tarea.
Beneficios de Hilos:
Multi hilos:
Stack pointer
Registros
Propiedades de itineración (como política y prioridad)
Conjunto de señales pendientes y bloquedas.
Datos específicos del hilo.
VII
Administración de Hilos:
IDENTIFICACIÓN DE HILOS:
Al igual que un proceso tiene un PID (Identificación de Proceso). Cada subproceso tiene
un identificador de subproceso. Aunque el PID es un número entero no negativo, el ID
del subproceso depende del sistema operativo y puede ser una estructura, por lo que
se utiliza una función para la comparación.
CREACIÓN DE HILOS
Los procesos normalmente corren como un hilo único. La creación de un nuevo hilo se
logra vía pthread_create.
# include <pthread.h>
int pthread_create(pthread_t * tidp: salida, puntero a id del hilo
restrict tidp, attr: entrada, para definir atributos del hilo, null para
default
const pthread_attr_t * restrict attr,
start_routine: entrada, función con que corre el hilo
void * ( * start_routine ) (void *), arg: entrada, argumento de la función del hilo.
void * restrict arg);
la función debe retornar un * void, el cual es
interpretado
como el estatus de término por pthread_join
Ejemplo: Impresión de thread ID. Puede bajar todos los fuentes del texto guía, una
mirada al Makefile es educativa, se aprende a crear una biblioteca, y cómo generar
una compilación parametrizada por la plataforma en que usted trabaje.
Término de un Hilo:
Si un hilo invoca a exit, _Exit o _exit, todo el proceso terminará.
Un hilo puede terminar de tres maneras sin terminar el proceso: Retornando de su
rutina de inicio, cancelada por otro hilo del mismo proceso, o llamando pthread_exit.
PTHREAD_CANCEL_DISABLE, en este
estado el hilo ignora
llamados a pthread_cancel.
Todo hilo ocupa recursos del SO para su operación. Entre ellos se encuentra el
estatus de término el cual es retenido hasta el llamado a pthread_join; sin embargo,
los recursos ocupados por un hilo pueden ser retornados inmediatamente después
que éste termina si llamamos a pthread_detach. En este caso un llamado a
pthread_join fallará y retornará EINVAL.
ATRIBUTOS
DESCRIPCIÓN
DESCRIPCIÓN
DESCRIPCIÓN
Esta función suspende la ejecución del hilo que la invoca hasta que el hilo
identificado por el valor tid finaliza, bien por la invocación a la función
pthread_exit o por estar cancelado
Si status no es NULL, el valor devuelto por el hilo (el argumento de la
función pthread_exit, cuando el hilo hijo finaliza) se almacena en la
dirección indicadapor status
El valor devuelto es o bien el argumento de la función pthread_exit o el valor
PTHREAD_CANCELED si el hilo tid está cancelado
El hilo por el que se espera su terminación debe estar en estado sincronizable
(joinable state):
Cuando un hilo en este estado termina, no se liberan sus propios recursos
(descriptor del hilo y pila) hasta que otro hilo espere por él .
La espera por la terminación de un hilo para el cual ya hay otro hilo
esperando, genera un error.
XIII
DESCRIPCIÓN
La cancelación es el mecanismo por el cual un hilo puede solicitar la
terminación de la ejecución de otro.
Dependiendo de la configuración del hilo al que se solicita su cancelación,
puede aceptar peticiones de cancelación
(PTHREAD_CANCEL_ENABLE, estado por defecto) o rechazarlas
(PTHREAD_CANCEL_DISABLE)
CONCLUSIÓN
reduce el tiempo necesario para hacer lo que se requiere y sin tener que crear
creación de procesos, porque los hilos tienen cosas en común. También puede
Java o Delphi. También podemos decir que los subprocesos pasan por diferentes
menos recursos que crear un proceso. Al igual que un proceso tiene un PID (que
ANEXOS
EJERCICIO PRÁCTICO
XVI
BIBLIOGRAFÍA
Barney, B., & Lawrence Livermore National Laboratory. (n.d.). POSIX threads
https://hpc- tutorials.llnl.gov/posix/
https://www.infor.uva.es/~fdiaz/aso/2005_06/doc/ASO_PR01_20060228.pdf
#:~:text=
Hilos%20POSIX%20%28pthreads%29%20%C2%84%20Dentro%20de%20u
n%20pr
oceso,de%20un%20proceso%20se%20encuentran%20al%20mismo%20niv
el
Mt1014, E. /., Operativos, S., Ma, ©., & Castaño, A. (n.d.). Concurrencia entre
procesos 1.
https://repositori.uji.es/xmlui/bitstream/handle/10234/171556/TrasparenciasT
ema3.p df?sequence=1&isAllowed=y
Servicios POSIX para gestión de hilos. (2016, October 1). Sistemas Operativos
#1. https://sisoperativoutp1995.wordpress.com/2016/10/01/servicios-posix-
para-gestion- de-hilos/
XVII
Rodríguez García, J. M., Díaz Martín, J. C., & Irala Veloso, I. (1999). Programación
de la Informática (AENUI).
Pimentel, A., & Jesús, J. (2018). Explorando tres niveles de paralelismo empleando