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