Читать книгу Desarrollo y optimización de componentes software para tareas administrativas de sistemas. IFCT0609 - José Luis Villada Romero - Страница 20

2.7.Gestión de errores

Оглавление

Cuando se ejecuta una aplicación en el sistema operativo, puede ocurrir que el proceso realice su trabajo correctamente o bien, que se produzca algún error. En la mayoría de los casos, un error incontrolado en un sistema puede ocasionar la pérdida de información e incluso la inestabilidad del sistema operativo si se está haciendo uso de recursos del mismo.

Los SS. OO. modernos incorporan mecanismos dirigidos fundamentalmente a minimizar el impacto que pueden ocasionar estos errores y, a la misma vez, proporcionan las herramientas necesarias para que los desarrolladores puedan probar y mejorar los programas que utilizará el resto de usuarios.

Cuando se produce un error, el resultado es una interrupción de la ejecución normal del programa que lo causa. A continuación, el SO otorga el control de ejecución a la rutina adecuada para que trate el error. Todo el tratamiento de estos errores se conoce como gestión de excepciones y existen sistemas operativos que lo soportan y otros que no.

Las excepciones se pueden clasificar en los siguientes tipos:

Fallos, que pueden ser corregidos y que retoman la ejecución normal del programa que las generó.

Traps, que son utilizadas por los programadores para depuración.

Aborts, que son errores graves que ocurren cuando hay un fallo de hardware.

La clasificación anterior se refiere a excepciones que son detectadas por el procesador. Sin embargo, también pueden ocasionarse de forma programada. Para ello, se usa la instrucción int o int3. Algunas de las excepciones más comunes en Linux aparecen en la siguiente tabla.

Tabla con algunas de las excepciones más comunes en Linux
#ExceptionException handlerSignal
0Divide errordivide_error( )SIGFPE
1Debugdebug( )SIGTRAP
2NMInail( )None
3Breakpointint3( )SIGTRAP
4Overflowoverflow( )SIGSEGV
5Bounds checkbounds( )SIGSEGV
6Invalid opcodeinvalid_op( )SIGILL
7Device not availabledevice_not_available( )None
8Double faultdoublefault_fn( )None
9Compressor segment overruncopressor_segment_overrun( )SIGFPE
10Invalid TSSinvalid_TSS( )SIGSEGV
11Segment not presentsegment_not_present( )SIGBUS
12Stack segment faultatack_segment( )SIGBUS
13General protectiongeneral_protection( )SIGSEGV
14Page Faultpage_fault( )SIGSEGV
15Intel-reservedNoneNone
16Floating-point errorcoprocessor_error( )SIGFPE
17Aligment checkalignment_check( )SIGBUS
18Machine checkmachine_check( )None
19SIMD floating pointaimd_coproceasor_error( )SIGFPE
Desarrollo y optimización de componentes software para tareas administrativas de sistemas. IFCT0609

Подняться наверх