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

• Hay otras ocasiones en que el kernel necesita <strong>de</strong>spertar el proceso al recibir una señal pero no hacer<br />

el longjmp. El kernel invoca el algoritmo con una prioridad especial que suprime la ejecución <strong>de</strong>l<br />

longjmp y produce que el algoritmo <strong>de</strong>vuelva 1. Esto es más efectivo que hacer un setjmp justo<br />

antes <strong>de</strong> la llamada a sleep para luego volver a hacer longjmp para restaurar contexto. El propósito<br />

<strong>de</strong> esto es permitir al kernel limpiar estructuras <strong>de</strong> datos locales. Por ejemplo, un manejador <strong>de</strong><br />

dispositivo pue<strong>de</strong> asignar estructuras locales privadas e ir a dormir a una prioridad interrumpible.<br />

Si es <strong>de</strong>spertado por una señal <strong>de</strong>bería liberar las estructuras y luego hacer el longjmp si fuera<br />

necesario. El usuario no tiene control sobre cuando un proceso hace o no un longjmp, ello <strong>de</strong>pen<strong>de</strong><br />

<strong>de</strong> la razón por la cual el proceso se va a dormir y que estructuras <strong>de</strong>l kernel necesitan modificarse<br />

antes <strong>de</strong> que el proceso regrese <strong>de</strong> la llamada al sistema.<br />

<strong>2.</strong>7.4. Llamadas a Otros Programas. Familia <strong>de</strong> Funciones exec.<br />

• Existe toda una familia <strong>de</strong> funciones exec que po<strong>de</strong>mos utilizar para ejecutar programas. Dentro <strong>de</strong><br />

esta familia, cada función tiene su interfaz propia, pero todas tienen aspectos comunes y obe<strong>de</strong>cen<br />

al mismo tipo <strong>de</strong> funcionamiento.<br />

• Llamada al sistema exec ⇒ permite a un proceso invocar o llamar a otro programa.<br />

• El resultado que se consigue con estas funciones: Copia <strong>de</strong>l archivo ejecutable ⇒ Cargar un<br />

programa en memoria en el espacio <strong>de</strong> direcciones <strong>de</strong>l proceso (zona <strong>de</strong> memoria) que ejecuta la<br />

llamada, sobrescribiendo los segmentos <strong>de</strong>l programa antiguo con los <strong>de</strong>l nuevo.<br />

• El contenido <strong>de</strong>l contexto <strong>de</strong>l nivel <strong>de</strong> usuario <strong>de</strong>l proceso que llama a exec <strong>de</strong>ja <strong>de</strong> ser accesible y<br />

es reemplazado <strong>de</strong> acuerdo con el nuevo programa. Es <strong>de</strong>cir, el programa antiguo es sustituido por<br />

el nuevo y nunca retornaremos a él para proseguir su ejecución, ya que es el programa nuevo el que<br />

pasa a ejecutarse.<br />

• La familia exec esta formada por las siguientes funciones: execl, execv, execle, execve, execlp y<br />

execvp. En todas ellas <strong>de</strong>stacamos que hay un parámetro que se correspon<strong>de</strong> con el nombre<br />

absoluto o relativo <strong>de</strong> un archivo ordinario ejecutable.<br />

• Si exec <strong>de</strong>vuelve el control al programa que la llama, es porque no se ha ejecutado correctamente.<br />

En este caso <strong>de</strong>vuelve el valor –1, y en errno estará el código <strong>de</strong>l tipo <strong>de</strong> error producido.<br />

Cabecera Principal<br />

Cabecera Sección 1<br />

Cabecera Sección 2<br />

Número Mágico<br />

Número <strong>de</strong> Secciones<br />

Valores iniciales Registros<br />

Tipo Sección<br />

Tamaño Sección<br />

Dirección Virtual<br />

Tipo Sección<br />

Tamaño Sección<br />

Dirección Virtual<br />

Cabecera Sección n<br />

Sección 1<br />

Sección 2<br />

Tipo Sección<br />

Tamaño Sección<br />

Dirección Virtual<br />

Datos (texto)<br />

Datos<br />

Sección n Datos<br />

Otra Información<br />

Figura <strong>2.</strong>14. Estructura <strong>de</strong> un archivo ejecutable en UNIX (a.out).<br />

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

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

Saved successfully!

Ooh no, something went wrong!