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
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Diseño <strong>de</strong> Sistemas Operativos<br />
Tema <strong>2.</strong> Gestión <strong>de</strong> Procesos<br />
• Algunas <strong>de</strong> la variables utilizadas por programas estándar:<br />
– HOME: Directorio <strong>de</strong> inicio <strong>de</strong> sesión <strong>de</strong> un usuario. /users/antonio.<br />
– LANG: I<strong>de</strong>ntifica el idioma <strong>de</strong>l Soporte en Lengua Nativa (NLS, Native Language Support).<br />
– PATH: I<strong>de</strong>ntifica la secuencia <strong>de</strong> directorios en los que programas como time, nice, nohup,<br />
etc., van a buscar cuando se especifica un archivo mediante su nombre y no mediante su path<br />
name. .:/bin:/usr/bin:usr/local/bin.<br />
– TERM: I<strong>de</strong>ntifica el tipo <strong>de</strong> terminal hacia el que se va a dirigir la salida. Es utilizado por<br />
programas vi, ed, etc. vt100.<br />
• Se pue<strong>de</strong>n ver el valor <strong>de</strong> todas las variables <strong>de</strong> entorno asociadas a nuestra sesión <strong>de</strong> trabajo<br />
mediante la or<strong>de</strong>n env.<br />
• El entorno <strong>de</strong> un proceso es heredado por todos los hijos, <strong>de</strong>spués <strong>de</strong> la llamada fork.<br />
• Para preguntar por el valor <strong>de</strong> una variable <strong>de</strong> entorno <strong>de</strong>terminada o para <strong>de</strong>clarar nuevas<br />
variables, po<strong>de</strong>mos utilizar las siguientes funciones: getenv y putenv.<br />
– La función getenv(name), busca en la zona <strong>de</strong> variables <strong>de</strong> entorno una ca<strong>de</strong>na <strong>de</strong> caracteres<br />
que tenga la forma name=value y <strong>de</strong>vuelve un puntero a value en esta zona. Si la ca<strong>de</strong>na no<br />
existe <strong>de</strong>vuelve un puntero a NULL.<br />
– La función putenv(string), permite <strong>de</strong>clarar una nueva variable <strong>de</strong> entorno o modificar el<br />
valor <strong>de</strong> una ya existente. El parámetro string <strong>de</strong>be tener la forma “name=value”. Hay que<br />
tener en cuenta que la zona <strong>de</strong> memoria a la que apunta string es añadida al entorno y se<br />
producirá un error si string es una variable local a una función, ya que al abandonar una<br />
función <strong>de</strong>ja <strong>de</strong> existir. La función putenv manipula el entorno referenciado por environ, pero<br />
no el referenciado por envp (tercer parámetro <strong>de</strong> la función main).<br />
• Debemos indicar también que las variables <strong>de</strong> entorno son locales a cada proceso, <strong>de</strong> forma que las<br />
modificaciones que se realicen sobre ellas no se conservan cuando muere un proceso. Esto no es<br />
aplicable a las variables que han sido <strong>de</strong>claradas como globales mediante la or<strong>de</strong>n export.<br />
<strong>2.</strong>7.5.4 Parámetros Relativos a Archivos.<br />
• Todo proceso tiene asociado un directorio <strong>de</strong> trabajo (CWD) y un directorio raíz.<br />
– El directorio <strong>de</strong> trabajo (CWD) indica dón<strong>de</strong> van a estar referidos los accesos a archivos que<br />
se realicen mediante un nombre <strong>de</strong> archivo y no mediante un path name (nombre <strong>de</strong> archivo<br />
absoluto). La llamada para cambiar el CWD asociado a un proceso es chdir.<br />
– El directorio raíz indica cuál es, <strong>de</strong>ntro <strong>de</strong>l sistema <strong>de</strong> archivos, el directorio que va a<br />
consi<strong>de</strong>rar el proceso como su directorio raíz. Por lo general, el directorio raíz va a coincidir<br />
con “/”, pero lo po<strong>de</strong>mos cambiar con la llamada chroot.<br />
• Relacionado con la creación <strong>de</strong> archivos, cada proceso va a tener una máscara que indica qué bits,<br />
<strong>de</strong>ntro <strong>de</strong> los bits <strong>de</strong> permiso en el modo <strong>de</strong>l archivo, <strong>de</strong>ben estar inactivos. La llamada umask es la<br />
permite fijar esta máscara. Por ejemplo, crear un archivo con la máscara <strong>de</strong> permisos (lectura,<br />
escritura y ejecución para el propietario, grupo y otros), rwxr--r--, ya que la máscara <strong>de</strong> creación <strong>de</strong><br />
archivo se ha fijado a 000 011 011 ⇔ 0033, umask(0033).<br />
• Los procesos van a tener limitado el tamaño máximo <strong>de</strong> los archivos que pue<strong>de</strong>n crear y el tamaño<br />
máximo <strong>de</strong> memoria que pue<strong>de</strong>n tener asignado. Para consultar estos parámetros se utiliza la<br />
función ulimit.<br />
<strong>2.</strong>8. SINCRONIZACIÓN <strong>DE</strong> <strong>PROCESOS</strong> EN LINUX.<br />
En un instante dado, sólo un proceso pue<strong>de</strong> ejecutarse en modo kernel. Aunque es posible que se apliquen<br />
interrupciones hardware y software a este proceso, Linux no provoca la planificación (scheduler) si el<br />
proceso actual está activo en modo kernel. Un proceso que se ejecuta en modo kernel pue<strong>de</strong> provocar, sin<br />
embargo, un cambio <strong>de</strong>l proceso actual suspendiendo su ejecución (dormir). Esta suspensión voluntaria se<br />
<strong>de</strong>be generalmente a la espera <strong>de</strong> un evento, tal como el fin <strong>de</strong> una entrada/salida o la terminación <strong>de</strong> un<br />
proceso hijo. Linux proporciona varios mecanismos que permiten a los procesos sincronizarse en modo<br />
kernel (implementadas en el código <strong>de</strong>l kernel = servicios internos): las “bottom-halves”, los temporizadores<br />
(timers), las colas <strong>de</strong> tareas, las colas <strong>de</strong> espera y los semáforos (control <strong>de</strong> acceso a un recurso).<br />
Departamento <strong>de</strong> Lenguajes y Computación. <strong>Universidad</strong> <strong>de</strong> Almería Página <strong>2.</strong>45