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

• 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

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

Saved successfully!

Ooh no, something went wrong!