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
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