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

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

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

Saved successfully!

Ooh no, something went wrong!