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

Kernel<br />

Señal Señal Señal<br />

Proceso<br />

Inicio<br />

Fin<br />

Ignorar la<br />

señal<br />

Tratamiento<br />

Fin<br />

Tratamiento<br />

por <strong>de</strong>fecto<br />

core<br />

Volcado <strong>de</strong><br />

Memoria<br />

Fin<br />

Fin<br />

Figura <strong>2.</strong>15. Tratamiento <strong>de</strong> las señales recibidas por un proceso.<br />

Saltos globales. setjmp(env) ⇒ función estándar que salva el entorno <strong>de</strong> la pila en la variable que se le pasa<br />

como parámetro (env) para un uso posterior <strong>de</strong> longjmp, con el objetivo <strong>de</strong> hacer que el proceso vuelva a<br />

alguno <strong>de</strong> los estados por los que ha pasado con anterioridad. setjmp <strong>de</strong>vuelve el valor 0 en su primera<br />

llamada. longjmp(env, val) ⇒ función estándar que restaura el entorno guardado en la variable pasada como<br />

parámetro a setjmp(env). Después <strong>de</strong> haberse ejecutado la llamada a longjmp, el flujo <strong>de</strong> la ejecución <strong>de</strong>l<br />

programa vuelve al punto don<strong>de</strong> se hizo la llamada a setjmp, pero en este caso setjmp <strong>de</strong>vuelve el valor val<br />

que se pasó como parámetro a longjmp. Esta es la forma <strong>de</strong> averiguar si setjmp está saliendo <strong>de</strong> una llamada<br />

para guardar el entorno o <strong>de</strong> una llamada a longjmp. longjmp no pue<strong>de</strong> hacer que setjmp <strong>de</strong>vuelva 0, ya que<br />

en el caso <strong>de</strong> que val valga 0, setjmp va a <strong>de</strong>volver 1. Las funciones setjmp y longjmp se pue<strong>de</strong>n ver como<br />

una forma elaborada <strong>de</strong> implementar una sentencia goto capaz <strong>de</strong> saltar <strong>de</strong>s<strong>de</strong> una función a etiquetas que<br />

están en la misma o en otra función. Las etiquetas serán los entornos guardados por setjmp en la variable<br />

pasada como parámetro (env).<br />

<strong>2.</strong>9.<strong>2.</strong> Tipos <strong>de</strong> Señales.<br />

Cada señal (SIGXXXX) tiene asociado un número entero positivo, que es el número intercambiado cuando<br />

uno <strong>de</strong> los procesos envía una señal a otro. En el UNIX System V hay <strong>de</strong>finidas 19 señales, en el 4.3BSD, 30<br />

y en Linux en su versión <strong>2.</strong>0 tenía <strong>de</strong>finidas 34. Las 19 señales <strong>de</strong>l UNIX System V las tienen prácticamente<br />

todas las versiones <strong>de</strong> UNIX, y a éstas cada fabricante le incorporan las que consi<strong>de</strong>re necesarias. Po<strong>de</strong>mos<br />

clasificar a las señales en los siguientes grupos:<br />

• Señales relacionadas con la terminación <strong>de</strong> procesos.<br />

• Señales relacionadas con las excepciones inducidas por los procesos. Por ejemplo, el intento <strong>de</strong><br />

acce<strong>de</strong>r fuera <strong>de</strong>l espacio <strong>de</strong> direcciones virtuales, los errores producidos al manejar números en<br />

coma flotante, etc.<br />

• Señales relacionadas con los errores irrecuperables originados en el trascurso <strong>de</strong> una llamada al<br />

sistema.<br />

• Señales originadas <strong>de</strong>s<strong>de</strong> un proceso que se está ejecutando en modo usuario. Por ejemplo, cuando<br />

un proceso envía una señal a otro proceso vía kill, cuando un proceso activa un temporizador y se<br />

queda a la espera <strong>de</strong> la señal <strong>de</strong> alarma, etc.<br />

• Señales relacionadas con la interacción con el terminal. Por ejemplo, pulsar la tecla break.<br />

• Señales para ejecutar un programa paso a paso, son utilizadas por los <strong>de</strong>puradores.<br />

• Señales vinculadas con la acción en la que proceso ha excedido los límites <strong>de</strong> CPU o <strong>de</strong> espacio en<br />

disco que tiene permitido.<br />

• Señales con las que el mismo proceso solicita (relacionadas con la ocurrencia <strong>de</strong> un evento).<br />

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

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

Saved successfully!

Ooh no, something went wrong!