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