Monografias.com > Computación > Sistemas Operativos
Descargar Imprimir Comentar Ver trabajos relacionados

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 

    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.

    Categorias
    Newsletter