12.10.2014 Views

TEMA 2. GESTIÓN DE PROCESOS - Universidad de Almería

TEMA 2. GESTIÓN DE PROCESOS - Universidad de Almería

TEMA 2. GESTIÓN DE PROCESOS - Universidad de Almería

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Diseño <strong>de</strong> Sistemas Operativos<br />

Tema <strong>2.</strong> Gestión <strong>de</strong> Procesos<br />

<strong>2.</strong>7.5. Información sobre Procesos. I<strong>de</strong>ntificadores <strong>de</strong> Proceso, I<strong>de</strong>ntificadores <strong>de</strong> Usuario y<br />

Grupo, Variables <strong>de</strong> Entorno y Parámetros Relativos a Archivos.<br />

En este apartado vamos a estudiar las llamadas necesarias para consultar y fijar algunos <strong>de</strong> los parámetros<br />

más importantes <strong>de</strong> un proceso, los que <strong>de</strong>scriben cómo se relaciona el proceso con el resto <strong>de</strong>l sistema. Nos<br />

vamos a centrar en los siguientes aspectos: i<strong>de</strong>ntificadores asociados a un proceso, i<strong>de</strong>ntificadores <strong>de</strong> usuario<br />

y grupo asociados al proceso, variables <strong>de</strong> entorno y parámetros relativos a archivos.<br />

<strong>2.</strong>7.5.1. I<strong>de</strong>ntificadores <strong>de</strong> Proceso.<br />

• Todo proceso tiene asociado dos números <strong>de</strong>s<strong>de</strong> el momento <strong>de</strong> su creación:<br />

– El i<strong>de</strong>ntificador <strong>de</strong> proceso ⇒ Este i<strong>de</strong>ntificador (PID) es un número entero positivo que<br />

actúa a modo <strong>de</strong> nombre <strong>de</strong> proceso.<br />

– El i<strong>de</strong>ntificador <strong>de</strong>l proceso padre ⇒ Este i<strong>de</strong>ntificador (PPID) es el PID <strong>de</strong>l proceso que ha<br />

creado al actual (proceso hijo).<br />

• El PID <strong>de</strong> un proceso no cambia durante el tiempo <strong>de</strong> vida <strong>de</strong> éste; si embargo, su PPID sí pue<strong>de</strong><br />

variar. Esta situación se da cuando el proceso padre muere, pasando el PPID <strong>de</strong>l proceso hijo a<br />

tomar el valor 1 (PID <strong>de</strong>l proceso init).<br />

• Para leer los valores <strong>de</strong> PID y PPID se utilizarán las llamadas getpid y getppid respectivamente.<br />

• En UNIX, los procesos van a estar agrupados en conjuntos <strong>de</strong> procesos que tienen alguna<br />

característica común (por ejemplo, tener un mismo proceso padre). A estos conjuntos se les conoce<br />

como grupos <strong>de</strong> procesos y <strong>de</strong>s<strong>de</strong> el sistema son controlados a través <strong>de</strong> un i<strong>de</strong>ntificador <strong>de</strong> grupo<br />

<strong>de</strong> procesos (PGRP). Para <strong>de</strong>terminar a qué grupo pertenece un proceso, utilizaremos la llamada<br />

getpgrp.<br />

• El i<strong>de</strong>ntificador <strong>de</strong> grupo <strong>de</strong> procesos (PGRP) es heredado por los procesos hijo <strong>de</strong>spués <strong>de</strong> realizar<br />

una llamada a fork, pero también pue<strong>de</strong> cambiarse creando un nuevo grupo <strong>de</strong> procesos, con la<br />

llamada a setpgrp.<br />

• Con la llamada a setpgrp hace que el proceso actual se convierta en lí<strong>de</strong>r (lea<strong>de</strong>r) <strong>de</strong> un grupo <strong>de</strong><br />

procesos. El i<strong>de</strong>ntificador <strong>de</strong>l grupo <strong>de</strong> procesos (PGRP) va a coincidir con el PID <strong>de</strong>l proceso lí<strong>de</strong>r<br />

y es el valor retornado por setpgrp. Si la llamada a serpgrp falla, <strong>de</strong>volverá el valor –1 y en errno<br />

estará el código <strong>de</strong>l error producido.<br />

<strong>2.</strong>7.5.2 I<strong>de</strong>ntificadores <strong>de</strong> Usuario y <strong>de</strong> Grupo.<br />

• El kernel asocia a cada proceso dos i<strong>de</strong>ntificadores <strong>de</strong> usuario y dos i<strong>de</strong>ntificadores <strong>de</strong> grupo:<br />

– Los i<strong>de</strong>ntificadores <strong>de</strong> usuario son:<br />

+ I<strong>de</strong>ntificador <strong>de</strong> usuario real (UID).<br />

+ I<strong>de</strong>ntificador <strong>de</strong> usuario efectivo (EUID).<br />

– Los i<strong>de</strong>ntificadores <strong>de</strong> grupo son:<br />

+ I<strong>de</strong>ntificador <strong>de</strong> grupo real (GID).<br />

+ I<strong>de</strong>ntificador <strong>de</strong> grupo efectivo (EGID).<br />

• El i<strong>de</strong>ntificador <strong>de</strong> usuario real (UID) ⇒ I<strong>de</strong>ntifica al usuario que es responsable <strong>de</strong> la ejecución<br />

<strong>de</strong>l proceso. Y el i<strong>de</strong>ntificador <strong>de</strong> grupo real (GID) i<strong>de</strong>ntifica al grupo al cual pertenece el usuario.<br />

• El i<strong>de</strong>ntificador <strong>de</strong> usuario efectivo (EUID) se utiliza para:<br />

– Determinar el propietario <strong>de</strong> los archivos que se creen.<br />

– Comprobar la máscara <strong>de</strong> permisos <strong>de</strong> acceso a archivos y permisos para enviar señales a<br />

otros procesos. Es <strong>de</strong>cir, comprobar los permisos <strong>de</strong> usuario para permitir acce<strong>de</strong>r a archivos<br />

<strong>de</strong> otros usuarios.<br />

• Normalmente, el UID y el EUID coinci<strong>de</strong>n, pero si un proceso ejecuta un programa que pertenece a<br />

otro usuario y que tiene activo el bit S_ISUID (cambiar el UID <strong>de</strong>l usuario al ejecutar), el proceso<br />

va a cambiar su EUID y va a tomar el valor <strong>de</strong>l UID <strong>de</strong>l nuevo usuario. Es <strong>de</strong>cir, a efectos <strong>de</strong><br />

comprobación <strong>de</strong> permisos <strong>de</strong> usuario, va a tener los mismos permisos que tiene el usuario cuyo<br />

UID coinci<strong>de</strong> con el EUID <strong>de</strong>l proceso. S_ISUID ⇒ este es otro <strong>de</strong> los bits <strong>de</strong> la palabra <strong>de</strong> modo<br />

<strong>de</strong> un archivo y le indica al kernel que cuando un proceso acceda a este archivo, cambie el<br />

i<strong>de</strong>ntificador <strong>de</strong> usuario (UID) y le ponga el <strong>de</strong>l propietario <strong>de</strong>l archivo (UID). Esto tiene aplicación<br />

cuando intentamos acce<strong>de</strong>r a archivos que son <strong>de</strong> otro usuario y no tenemos permisos para escribir<br />

en ellos.<br />

Departamento <strong>de</strong> Lenguajes y Computación. <strong>Universidad</strong> <strong>de</strong> Almería Página <strong>2.</strong>43

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!