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

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