Está en la página 1de 4

UNIVERSIDAD REGIONAL AUTONOMA DE LOS ANDES

MATERIA: SISTEMAS OPERATIVOS


FACULTAD: SISTEMAS MERCANTILES
NIVEL:
TERCERO

CARRERA: SISTEMAS

POSIX:
POSIX (IEEE96) es un estndar de interfaz de sistemas operativos portables basado en el sistema
operativo UNIX.
Aunque UNIX era prcticamente un estndar industrial, haba bastantes diferencias entre las
distintas implementaciones de UNIX, lo que provocaba que las aplicaciones no se pudieran
transportar fcilmente entre distintas plataformas UNIX.
Este problema motiv a los desarrolladores y usuarios a implementar un estndar internacional
con el propsito de conseguir la portabilidad de las aplicaciones en cuanto a cdigo fuente.
POSIX se ha desarrollado entro de la IEEE con la referencia 1003 y tambin est siendo
desarrollado como estndar internacional con la referencia ISO/IEC 9945.
POSIX es una familia de estndares en evolucin, cada uno de los cuales cubre diferentes aspectos
de los sistemas operativos.
POSIX es una interfaz ampliamente utilizada. Se encuentra disponible en todas las versiones de
UNIX y Linux, inclusive Windows NT ofrece un subsistema que permite programar aplicaciones
POSIX.
POSIX en una especificacin estndar, no define una implementacin. Los distintos sistemas
operativos pueden ofrecer los servicios POSIX con diferentes implementaciones.

IDENTIFICACIN DE PROCESOS
POSIX identifica cada proceso por medio de un entero nico denominado Identificador de
Proceso (Process ID,

PID) de tipo pid_t.


a- Obtener el identificador de un proceso:
pid_t getpid(void);
b- Obtener el identificador del proceso padre:
pid_t getppid(void)
Ejemplo:
#include <sys/types.h>
#include <stdio.h>
main(){
pid_t id_proceso;
pid_t id_padre;
id_proceso = getpid();
id_padre = getppid();
printf("Identificador de proceso: %d\n", id_proceso);
printf("Identificador del proceso padre %d\n", id_padre);
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;
Esta variable apunta a una lista de variables de entorno. Esta lista no es ms que un vector de
punteros a cadenas de caracteres de la forma nombre=valor, donde nombre hace referencia al
nombre de una variable de entorno y valor al contenido de la misma.
Ejemplo: Programa que imprime el entorno de un proceso
#include <stdio.h>
#include <stdlib.h>
extern char **environ;
int main(int argc, char **argv)SISTEMAS OPERATIVOS II

5 DE 48 CTEDRA SISTEMAS OPERATIVOS II 2006


{
int i;
printf("Lista de variables de entorno de %s\n",argv[0]);
for (i=0 ; environ[i] != NULL ; i++)
printf("environ[%d] = %s\n", i, environ[i]);

Cada aplicacin interpreta la lista de variables de entorno de forma especfica. POSIX establece el
significado de
Determinadas variables de entorno:
HOME: directorio de trabajo inicial del usuario
LOGNAME: nombre del usuario asociado al un proceso
PATH: prefijo de directorios para encontrar ejecutables
TERM: tipo de terminal
TZ: informacin de la zona horaria
El servicio getenv permite buscar una determinada variable de entorno dentro de la lista de
variables de entorno de un proceso.
char *getenv(const char *name);
Esta funcin devuelve un puntero al valor asociado a la variable de entorno de nombre name. si la
variable no se encuentra definida, la funcin devuelve NULL.
Ejemplo: Programa que imprime el valor de la variable HOME
#include <stdio.h>
#include <stdlib.h>
int main(){
char *home = NULL;
home = getenv("HOME");
if (home == NULL)
printf("$HOME no se encuentra definida\n");
else
printf("El valor de $HOME es %s\n", home);

}
Creacin de procesos: hace es salva los registro en la PCB del padre, al copiarse la PCB se copian
los valores salvado de los registro, por lo que el hijo tiene los mismos valores que el padre.
Esto significa que el contador de programa de los dos procesos tiene el mismo valor, por lo que
van a ejecutar la misma instruccin mquina. No hay que caer en el error de pensar que el proceso
hijo empieza la ejecucin del cdigo en su punto de inicio, sino que el proceso hijo comienza a
ejecutar, al igual que el padre, la sentencia que se encuentra despus de fork().
Las diferencias que existen entre el proceso hijo y el padre son:
El proceso hijo tiene su propio identificador (PID).
El proceso hijo tiene una nueva descripcin de la memoria. Aunque el hijo tenga los segmentos
con el mismo contenido, no tienen por qu esta en la misma zona de memoria.
El tiempo de ejecucin del proceso hijo es igual a cero.
Toda la alarma pendiente se desactiva en el proceso hijo.
El conjunto de seales pendientes se pone en cero.
El valor que retorna el sistema operativo como resultado de fork() e distinto en el hijo que el
padre (el hijo recibe un 0 y el padre el PID del hijo).
Este valor de retorno se puede utilizar mediante una clusula de condicin para que le padre y el
hijo sigan flujos de ejecucin distintos.
BIBLIOGRAFA
Gaston y Duchary ; CTEDRA SISTEMAS OPERATIVOS II 2006