Está en la página 1de 9

UNIVERSIDAD ESTATAL DE MILAGRO

CARRERA:

TEGNOLOGIA DE LA INFORMACIÓN
ASIGNATURA:

SISTEMAS OPERATIVOS
AUTOR:

MARCELO JAVIER ORDOÑEZ BUCHELLY


TEMA:

Hilos Posix
DOCENTE:

ING. BERMEO PAUCAR JAVIER RICARDO


FECHA DE ENTERGA:

06/01/2023
INDICE

INTRODUCCIÓN……………………………………………………………..1
DESARROLLO………………………………………………………………..2
Descripción de Hilos Posix…………………………………………………..3
Atributos……………………………………………………………………….4

Terminación de un hilo…………………………………………………….4.1

Espera por la terminación de un hilo…………………………………….4.2

Ejemplo………………………………………………………………………..5
Conclusión…………………………………………………………………….6
Bibliografía……………………………………………………………………7
INTRODUCCIÓN

El presente trabajo de investigación tiene como objetivo el conocer y


analizar los diferentes mecanismos de sincronización de los Hilos POSIX. Para
entrar en contexto un hilo nos permite crear programas con varios puntos deformas
simultaneas de ejecución, los cuales están sincronizados a través de una memoria
compartida. Además, el uso de los hilos en programación genera dificultades.

En la programación concurrente se tiene técnicas y problemas que no


ocurre en la programación secuencial, existen algunos problemas que son más
sencillos, pero existen otros que traen penalización al rendimiento de un programa.

Un hilo tiene un solo flujo de control que es secuencial, el cual existe en


cualquier instante y tiene un único punto de ejecución. Los programadores no tienen
la necesidad de aprender nada nuevo para poder programar un solo hilo.

No obstante, si tenemos múltiples hilos en un programa, lo cual


significara que el programa consta con múltiples puntos de ejecución, uno en cada
uno de sus hilos. Esto dependerá de la decisión del programador en cundo sea
necesaria la implementación y la creación de los hilos múltiples. (Hugo Ryckeboer,
s.f.)
DESARROLLO

Para comenzar primero es necesario describir algunos conceptos que son


importantes:

 Hilo

El flujo de instrucciones se puede programar para que sea ejecutado por el


sistema operativo. Es aquella unidad mínima de procesamiento cuya ejecución
puede ser programa por un sistema operativo, cual también es llamado proceso
Ligero.

 Asincronía/Asincronismo

Agudeza en los eventos que son de forma independientes.

 Concurrencia

Describe los comportamientos de las tareas en un sistema el cual esta


compuesta de un solo procesador. Estos parecen que ocurren de forma
simultanea al mismo tiempo. Pero en la forma de ejecución es secuencial (M.A,
2016)

 Monoprocesador

Este término se refiere un ordenador con una sola unidad visible para el
Programador.

 Multiprocesador

Es un ordenador con más de dos procesadores los cuales comparten las


instrucciones y entran a un mismo espacio de memoria.

 Paralelismo

Son las secuencias que ocurren de forma simultánea, las cuales son procesos
que se ejecutan de dos o más cálculos al mismo tiempo.

 Overhead

Este se define como el tiempo indirecto el cual es necesario para que se lleve
al cabo una ejecución.
Descripción de Hilos Posix

En los procesos de POSIX de forma convencional, existen un hilo el


cual ejecuta una sola función, este hilo tiene la capacidad de crear más hilos para
así poder ejecutar otras que van a estar en el espacio de dirección de un proceso.
Todos estos hilos se encontrarán en un solo nivel, esto quiere decir que son
“hermanos” a diferencia de otros procesos la cuales están relacionadas
como “padres-hijos”.

El proceso de un hilo comparte las variables y los recursos que son


globales del proceso. En funcionalidad cada uno de estos hilos contienen una copia
de sus parámetros iniciales y de las variables de la función que se ejecuta. Para que
sea posible escribir programas con hilos portátiles, el IEEE definió un estándar para
el uso de estos hilos conocido como 10031.c. cada uno de los hilos tiene un
identificador, un conjunto de registros y un conjunto de atributos. (FRANCISCO,
2016)

 Creación de hilos

Para la creación de hilo es necesario saber sobre algunas funciones


importantes para la utilización de estos:

 Pthread_create

Esta función es capaz de crear de forma inmediata el hilo, el cual estará


en el estado de preparación, con los atributos attr dentro del proceso que
es invocado y después devolverá a través de un thread su identificación. Si en algún
caso el valor de attr es nulo los atributos se pasarán por defecto.
En el caso de producirse un fallo, esta función retornara un número que
será distinto de cero, esto indicara que se ha producido un error. En lo consiguiente
el hilo ejecutará el código de rutina por start_rutine a los que se pasan os
argumentos referenciados por arg. (Wolf, 2014)
Atributos

 Pthread_attr_get

Cada hilo está asociado con un conjunto de atributos. Los atributos están
representados por la siguiente variable pthread_attr_t.

Los atributos controlan lo siguiente:

 Vinculación (detach_state)

 Tamaño de la pila (stacksize)

 Dirección de la pila (stackaddr)

 Ámbito de contienda (scope)

 Herencia de la planificación (inherisched)

 Política de distribución (schedpolicy)

 Parámetros de planificación (schedparam)

Terminación de un hilo

 Pthread_exit

Esta función es la que termina la ejecución del hilo ya invocado, con la


función value_ptr es capaz de devolver los datos que están referenciados en ella, al
hilo el cual está en esperando su finalización.

La finalización de la ejecución del proceso es terminada por el ultimo


hilo. En caso de que el hilo sea sincronizado (joinable) este identificador
del hilo retornara un valor el cual es capaz de ser examinado por otro hilo mediante
la invocación pthear_join a través del parámetro de estado.
Espera por la terminación de un hilo

 Pthread_cancel

Es un mecanismo de cancelación por el cual un hilo puede pedir la


terminación de otro que este en ejecución. El cual dependiendo de la configuración
del hilo al que se le pide su cancelación las cuales pueden aceptar la solicitud de
cancelación o rechazarla. Además de esta forma que existe de cancelación hay dos
formas diferentes que son: forma asincrónica, forma diferida. Cuando un hilo
acepta la cancelación seria como si invocara la siguiente función
pthread_exit.

Ejemplo

#include <stdio.h>

#include <pthread.h>

int status= 0; /*Variable global, donde se almacena el estado

de terminación hilos */

void *escribir_mensaje( void *arg ) { /* función con el código de los hilos

creados*/

printf("%s \n", (char *)arg);

pthread_exit(&status);

int main(void) {

pthread_t tid1, tid2;

char *mensaje1 = "Hilo 1";

char *mensaje2 = "Hilo 2";

int *ptr_status;
pthread_create( &tid1, NULL, escribir_mensaje, (void *)mensaje1);

pthread_create( &tid2, NULL, escribir_mensaje, (void *)mensaje2);

pthread_join(tid1, (void **)&ptr_status); /* Nótese cómo se recupera*/

printf(“Estado de terminación Hilo 1: %d\n”, *ptr_status); /* estado terminación */

pthread_join(tid2, (void **)&ptr_status);

printf(“Estado de terminación Hilo 2: %d\n”, *ptr_status);

Conclusión

La finalidad de este proyecto es analizar y aprender sobre los hilos


posix, en el presente documento se describe el uso y sus descripciones de este
sistema.

Para entrar en contexto podemos decir que los hilos (pthread) están
definidos de la siguiente forma y se genera definiendo una función y sus
argumentos que serán procesados en el hilo.

El propósito de usar la biblioteca de subprocesos POSIX en un software


está en la forma de ser ejecutar y hacer que el software sea más rápido. Para que
sea posible escribir programas con hilos portátiles. Como hemos visto
anteriormente en la arquitectura de los multiprocesadores y multinúcleos de
memoria que están compartida, en los cuales se utilizan los subprocesos para poder
implementar lo que llamamos paralelismo. La preocupación de los
desarrolladores de software en la portabilidad provoco la creación de la interfaz
POSIX

Muchos sistemas operativos son muy compatibles con POSIX la cual


ha sido especificada por los estándares IEEE POSIX 1003.1c, la implementación
que son adquiridas a estos estándares se denomina procesos pthread.

Este documento habla y se describe sobre cómo se crean los hilos, sus
atributos, terminación de un hilo, la espera por terminación y su respectiva
cancelación.
Para finalizar estos pthread permite la generación de un nuevo flujo de
proceso concurrente. Además, es más eficaz en sistemas multiprocesador o
multinúcleo donde el flujo del proceso se puede programar para que se ejecute en
otro procesador, ganando así velocidad a través del procesamiento paralelo
o distribuido. (Bershad Brian Natan, 2010)

Bibliografía

Bibliografía
Bershad Brian Natan, S. R. (2010). Transactions on Computer Systems (. 5.

FRANCISCO. (1 de OCTUBRE de 2016). Servicios POSIX para gestión de hilos.

Obtenido de

https://sisoperativoutp1995.wordpress.com/2016/10/01/servicios-posix-para-

gestion-de-hilos/

Hugo Ryckeboer, N. C. (s.f.). Conflictos de hilos. Obtenido de - XVI CONGRESO

ARGENTINO DE CIENCIAS DE LA COMPUTACIÓN :

http://sedici.unlp.edu.ar/bitstream/handle/10915/19354/Documento_complet

o.pdf?sequence=1

M.A, A. C. (2016). CONCURRENCIA ENTRE PROCESO. En A. C. M.A.

Wolf, G. R. (2014). SISTEMAS OPERATIVOS. En G. R. Wolf.

También podría gustarte