Monografías Plus      Agregar a favoritos      Ayuda      Português      Ingles     

Gestión de Interrupciones en Sistemas Operativos

Enviado por Pablo Turmero



Partes: 1, 2

Monografias.com
1 Introducción Estructura interna de un proceso en Linux int main (int argc, char** argv) { int i, size, status,n_sons = 0; pid_t name_sons[16];   do { rank = fork(); name_sons[n_sons] = rank; n_sons++; } while ((rank != 0) && (n_sons < 16));   if (rank != 0) waitpid (name_sons[15], &status, 0); else Multiplica(); return (0); } (Gp:) código (Gp:) datos (Gp:) pila 4 Gb (Gp:) Modo usuario 0 3 Gb
Monografias.com
2 Introducción Estructura interna de un proceso en Linux código datos pila int main (int argc, char** argv) { int i, size, status,n_sons = 0; pid_t name_sons[16];   do { rank = fork(); name_sons[n_sons] = rank; n_sons++; } while ((rank != 0) && (n_sons < 16));   if (rank != 0) waitpid (name_sons[15], &status, 0); else Multiplica(); return (0); } (Gp:) código kernel (Gp:) datos kernel (Gp:) pila kernel (Gp:) Modo usuario Interrupción Llamada sistema (Gp:) asmlinkage void schedule(void) { struct schedule_data * sched_data; struct task_struct * prev, * next; int this_cpu; prev = current; /* move an exhausted RR process to be last.. */ prev->need_resched = 0; if (!prev->counter && prev->policy == SCHED_RR) { prev->counter = prev->priority; move_last_runqueue(prev); } switch (prev->state) { case TASK_INTERRUPTIBLE: ??? (Gp:) Modo kernel 0 4 Gb 3 Gb
Monografias.com
3 Introducción Estructura interna de un proceso en Linux El kernel se “mapea” en todos los procesos Cuando se ejecuta en modo kernel se ejecuta en el modo supervisor del procesador Arquitectura Intel: Anillo 0: Kernel Anillo 3: Procesos usuario (Gp:) código A (Gp:) datos A (Gp:) pila A (Gp:) código B (Gp:) datos B (Gp:) pila B código kernel datos kernel (Gp:) código kernel (Gp:) datos kernel (Gp:) pila kernel (Gp:) código kernel (Gp:) datos kernel (Gp:) pila kernel Proceso A Proceso B Kernel
Monografias.com
4 Esquema Interrupciones y excepciones Introducción Soporte hardware para la gestión de interrupciones Gestión de interrupciones y excepciones en Linux Gestión de excepciones Gestión de interrupciones Procedimientos diferidos: Bottom Half Finalización de gestión de interrupciones y excepciones
Monografias.com
5 Introducción Interrupción: Evento que altera la secuencia de instrucciones ejecutadas por el procesador Clasificación de interrupciones: Interrupciones síncronas (excepciones): Producidas por la unidad de control de la CPU mientras se ejecutan instrucciones. Se producen después de la ejecución de una instrucción. Interrupciones asíncronas (interrupciones): Son generadas por otros dispositivos hardware Se producen de forma independiente a las señales de reloj de la CPU a=a/0
Monografias.com
6 Introducción Situación típica: Interrupción de reloj (Gp:) var=3; If(var>2) printf(“mayor”); ??? (Gp:) Código de usuario (Gp:) jiffies++; lost_ticks++; mark_bh(TIMER_BH);??? (Gp:) Código de kernel
Monografias.com
7 Introducción Aspectos a considerar: Las interrupciones pueden llegar en cualquier instante El kernel necesita atenderlas lo más rápidamente posible Acciones urgentes: top-half Acciones diferidas: bottom-half Ejemplo: Marca la presencia de los datos Continúa con las operaciones previas Realiza el resto del procesado de la interrupción
Monografias.com
8 Introducción Aspectos a considerar Las interrupciones pueden producirse mientras se está atendiendo otras interrupciones/excepciones Secciones críticas Ejecución anidada de interrupciones Bloqueo de interrupciones
Monografias.com
9 Introducción Secciones críticas Ejecución anidada de interrupciones Bloqueo de interrupciones Gestor de interrupciones 1: Insertar elemento en lista C (Gp:) B (Gp:) A Gestor de interrupciones 2: Buscar elemento en lista
Monografias.com
10 Soporte hardware Interrupciones y excepciones en Intel Cada interrupción o excepción se identifica con un número de 0 a 255 ? vector de interrupción Linux usa los siguientes vectores (Gp:) Excepciones (Gp:) 0 31 (Gp:) Interrupciones (Gp:) 32 47 (Gp:) Inter. software (Gp:) 48 255 (Gp:) Llamadas al sistema (Gp:) 128
Monografias.com
11 Soporte hardware Tabla de Descriptores de Interrupción descriptor 1 descriptor 2 descriptor n Asocia cada vector de interrupción o excepción con la dirección del gestor correspondiente ? ? ? (Gp:) Dirección de la función Permisos IDTR
Monografias.com
12 Soporte hardware Gestión hardware de interrupciones y excepciones Antes de ejecutar una instrucción se comprueba si se ha producido una excepción o interrupción. Determina el vector (0 ? i ? 255) asociado Lee la entrada i de la IDT y obtiene la dirección de la función que atiende ese evento Comprueba los permisos asociados. No se puede atender una interrupción en un nivel de protección inferior a donde se produce Si CPL ? DPL ? Se cambia a la pila del nivel específico (pila de kernel)
Monografias.com
13 Soporte hardware Gestión hardware de interrupciones y excepciones Cambio de pila (Gp:) valor=suma*3; for(i=0; i<100;i++) valor=valor+ i; ??? (Gp:) Código de usuario (Gp:) marco main() (Gp:) marco func1() (Gp:) Pila usuario (Gp:) posx = x+desp; posy = y – desp; ??? (Gp:) Código de kernel (Gp:) jiffies++; lost_ticks++; mark_bh(TIMER_BH);??? (Gp:) Código de kernel (Gp:) marco raton() (Gp:) Pila kernel (Gp:) Cambio pila marco reloj()
Monografias.com
14 Soporte hardware Gestión hardware de interrupciones y excepciones Antes de ejecutar una instrucción se comprueba si se ha producido una excepción o interrupción. Determina el vector (0 ? i ? 255) asociado Lee la entrada i de la IDT y obtiene la dirección de la función que atiende ese evento Comprueba los permisos asociados. No se puede atender una interrupción en un nivel de protección inferior a donde se produce Si CPL ? DPL ? Se cambia a la pila del nivel específico (pila de kernel) Invoca la función gestora
Monografias.com
15 Gestión de excepciones Gestión de excepciones en Linux Linux aprovecha las excepciones para conseguir dos objetivos: Enviar una señal a un proceso para notificar una condición anómala Implementar la estrategia de paginación bajo demanda (Gp:) var=0; temp=suma/var; printf(“%d”, temp); ??? (Gp:) Código de usuario Proceso (Gp:) Señal SIGPFE
Monografias.com
16 Gestión de excepciones Gestión de excepciones en Linux Los gestores de excepciones tienen una estructura estándar que consiste en tres fases: Guarda los contenidos de la mayoría de los registros en la pila de kenel (Gp:) Pila kernel (Gp:) Cont. Programa (pc) (Gp:) pila usuario (sp) (Gp:) Registros (A,B,...) (Gp:) Cont. Programa (pc) (Gp:) pila usuario (sp) (Gp:) Registros (A,B,...) (Gp:) Registros procesador (Gp:) Gestión de excepción
Partes: 1, 2

Página siguiente 

Comentarios


Trabajos relacionados

  • Sistemas operativos - Componentes de una PC

    La Tarjeta Madre. El Procesador. Tipos de procesadores. Memoria Cache. Partes de la Tarjeta Madre. El Disco Duro. La Mem...

  • Windows 98

    Conocimiento del Escritorio de Windows 98. ¿Cómo trabajar con una ventana?. ¿Cómo utilizar las Barras de desplazamiento?...

  • Sistemas Operativos I (Netware - Novell)

    Concepto y definición de Sistemas operativos. Características de los Sistemas Operativos. Clasificación de los sistemas ...

Ver mas trabajos de Sistemas Operativos

 
 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.


Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Iniciar sesión

Ingrese el e-mail y contraseña con el que está registrado en Monografias.com

   
 

Regístrese gratis

¿Olvidó su contraseña?

Ayuda