You are on page 1of 4

UNIVERSIDAD REGIONAL AUTNOMA DE LOS ANDES

Nombre: Alex Bernal


Nivel: 3 Sistemas.
Materia: Sistemas Operativos.
Tema: POSIX
Introduccin
Qu es Posix?
POSIX es el acrnimo de Portable Operating System; Interface y X viene de UNIX
como sea de identidad de la API.
El trmino fue sugerido por Richard Stallman en la dcada de 1980, respuesta a la
demanda de la IEEE, que buscaba un nombre fcil de recordar. La traduccin del
acrnimo es "Interfaz de Sistema Operativo Portable".
Desarrollo
1. Identificacin de Procesos:
Todo proceso tiene un PID (Identificador de Procesos), cada hilo tiene un identificador
de hilo.
Los PID (Identificador de Procesos) son enteros no negativos, el ID de un hilo es
dependiente del Sistemas Operativo.
Ejemplo:
#include <pthread.h>
int pthread_equal(pthread_t tid1, pthread_t tid2);
Retorna: no cero si es igual, cero en otro caso

Compara dos identificados de hilos tid1 y


tid2

#include <pthread.h>
pthread_t pthread_self(void);

Para obtener identificador de un hilo

Retorna: la ID del hilo que la llam

2. Entorno de un Proceso:
Viene definido por una lista de variables que se pasan al mismo en el momento de
comenzar su ejecucin. Estas variables se denominan variables de entorno y son

accesibles a un proceso a travs de la variable externa environ, declarada de la


siguiente forma: extern char **environ.
Ejemplo:

Fig. 1 Imprime el entorno de un proceso.


3. Creacin de procesos:
Los procesos normalmente corren como un hilo nico. La creacin de un nuevo hilo se
logra va pthread_create.
Creacin.
Int pthread_create(pthread_t*thread,pthread_attr_t*attr,
void*(*func)(void*),void*arg);

Thread: devuelve el identificador de la hebra (thread ID)


Attr: es un proceso a los atributos de la hebra.
Func: es un puntero a la funcin que ejecutar la hebra.
Arg: es un producto a los argumentos de la hebra.

Nota: El valor de retorno es 0, si la hebra se ha creado correctamente o un valor


positivo en caso contrario. No se utiliza la variable errno

# include <pthread.h>
int pthread_create(pthread_t *
restrict tidp,

tidp: salida, puntero a id del hilo

const pthread_attr_t * restrict attr,


void * ( * start_routine ) (void *),
void * restrict arg);

start_routine: entrada, funcin a correr por el

attr: entrada, para definir atributos del hilo,


null para default

hilo
arg: entrada, argumento de la funcin del hilo.
La funcin debe retornar un * void, el cual es
interpretado
como el estatus de trmino por pthread_join

Fig.2 Proceso de Creacin

4. Terminacin de procesos
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, cancelado por otro hilo del mismo proceso, o llamando pthread_exit.

rval_ptr queda disponible para otros hilos al llamar


pthread_join
rval_ptr debe existir despus del trmino del hilo.
El hilo llamante se bloquea hasta el trmino del hilo
indicado.
int pthread_join(pthread_t tid, void ** Si el hilo en cuestin es cancelado, rval_prt toma el valor
rval_ptr);
PTHREAD_CANCELED
Si no estamos interesados en el valor retornado, poner
NULL.
Permite a un hilo cancelar otro hilo del mismo proceso.
Retorno 0 es OK, !=0 => error.
Equivale a si el hilo indicado llamara
pthread_exit(PTHREAD_CANCELED); sin embargo, un hilo
int pthread_cancel(pthread_t tid);
puede
ignorar este requerimiento o controlar cmo se cancela.
pthread_cancel slo hace un requerimiento, pero no lo
fuerza.
Permite cambiar el estado del hilo a
PTHREAD_CANCEL_ENABLE (default) o
int pthread_setcacelstate(int state, int *
PTHREAD_CANCEL_DISABLE, en este estado el hilo
oldstate);
ignora
llamados a pthread_cancel que le afecten.
Ejemplos: Recuperando el estatus de trmino de hilos: exitstatus.c
No debemos usar variables automticas (aquellas en stack) como en pthread_exit, ver badexit2.c
#include <pthread.h>
void pthread_exit (void * rval_ptr);

Bibliografa
Alvarez, R. P. (20 de Mayo de 2012). Slideshare. Recuperado el 20 de Noviembre de
2014, de http://es.slideshare.net/carmenclase/posix?next_slideshow=1
Arrakis. (s.f.). Arrakis.es. Obtenido de http://www.arrakis.es/~javmar/ISI/documents/2.2.1_Programacion_con_Hebras_POSIX.pdf
UTFSM. (s.f.). profesores.elo.utfsm.cl. Recuperado el 20 de Noviembre de 2014, de
http://profesores.elo.utfsm.cl/~agv/elo330/2s08/lectures/POSIX_Threads.html

You might also like