Essays.club - Ensayos gratis, notas de cursos, notas de libros, tareas, monografías y trabajos de investigación
Buscar

Resumen de Capitulo de tarea 3

Enviado por   •  5 de Marzo de 2018  •  7.076 Palabras (29 Páginas)  •  515 Visitas

Página 1 de 29

...

Resumen de Capitulo 15

Ya en este capítulo se habla un poco más de los errores que se presenta a la hora de crear un sistema operativos algunos consejos de saber qué hacer y poder hacerlo de la mejor manera así es como estamos trabajando en el maravilloso mundo de la tierra del núcleo, las cosas son aún peores como un simple error puede causar software impredecible a problemas de hardware. Estoy seguro de que muchos de nuestros lectores ya han experimentado esto a través de Fallos triples. En la programación de aplicaciones, no estamos trabajando directamente con el hardware. Debido a esto, hay menos problemas que pueden resultar de errores. En la tierra del núcleo, las cosas son un poco diferentes. Fallas triples son causadas ​​hacer a errores con nuestras instrucciones o datos. Si hay un problema que el procesador no puede resolver, se reinicia el sistema antes de que empeore.

Fallas triples y ningún control de errores es muy mala en el desarrollo del sistema operativo, ya que los problemas pueden ser mucho peor corrupción de datos ROM a fallos de hardware, incluso de destruir por completo el sistema. Conociendo la importancia de la gestión de errores es fundamental en la resolución de estos, y asegurar que nuestro sistema se mantiene estable hasta su liberación final. Cuando se produce una excepción, el flujo de cambios de ejecución como una subrutina la excepción controlador se ejecuta. Esto permite a la subrutina para manejar la condición de error de alguna manera. Normalmente, el estado actual se guarda antes de la controlador se llama. Este permitirá que el controlador para continuar la ejecución más tarde, si es posible.

Recuerde que las excepciones están diseñados desde el hardware. Es decir, son mecanismos de hardware. Esto es similar a las interrupciones de hardware, y las bases de manejo de interrupciones, ya que están relacionadas. Debido a esto, con el fin de entender el manejo de excepciones del hardware, tenemos que mirar a las interrupciones. Hay dos tipos de interrupciones: Interrupciones de hardware y software interrupciones. En el tutorial 8259A PIC, hemos cubierto las interrupciones de hardware. Este tutorial se centra en interrupciones de software.

Una alarma de proceso es una interrupción provocada por un dispositivo de hardware. Normalmente, estos son dispositivos de hardware que requieren atención. Se requerirá que el hardware de controlador de interrupciones para atender esta solicitud hardware. Este tutorial no cubre la gestión de interrupciones de hardware, ya que es un hardware específico. Para la arquitectura x86, las interrupciones de hardware están a cargo de la programación del controlador de interrupción programable 8259A (PIC). Por favor, vea nuestro tutorial 8259A PIC para obtener más información sobre la gestión de interrupciones de hardware.

Las interrupciones de software son implementadas y las interrupciones provocadas por software. Normalmente, el conjunto de instrucciones del procesador proporcionará una instrucción para dar servicio a interrupciones de software. Para las arquitecturas x86, estos son normalmente INT min, e INT 3. Se utiliza instrucciones al su IRET y IRETD.

INT INT 3 min y las instrucciones se utilizan para generar una interrupción, mientras que la clase IRET de instrucciones se utiliza para volver de las rutinas de interrupción (IRS).

Cuando el procesador ejecuta una instrucción de interrupción, como INT, se ejecuta la rutina de interrupción (IR) en ese lugar dentro de la tabla de vectores de interrupción (IVT). Esto significa, simplemente se ejecuta una rutina que definimos. Por no dura, ¿eh? Esta rutina especial determina la función de interrupción para ejecutar normalmente basa fuera del valor en el registro AX. Esto nos permite definir múltiples funciones en una llamada de interrupción. Tales como, la función DOS INT 21h 0x4c00.

Hay que recordar la ejecución de una interrupción simplemente ejecuta una rutina de interrupción que ha creado. Por ejemplo, la instrucción 2 INT ejecutará el IR en el índice 2 en el IVT. Un manejador de interrupciones es un IR para el manejo de interrupciones e IRQ. En otras palabras, son los métodos de devolución de llamada que definimos para el manejo tanto de las interrupciones de hardware y software.

Los dos primeros bytes es nuestra m_baseLow elemento que se muestra en el código de seguridad. En cuanto a la tabla anterior, podemos ver que se trata de los primeros 16 bits del descriptor. Debido a que esta es una puerta de interrupción, esto representa los bits 0-15 de la dirección base del IR . Esto significa que, si esto era nuestro campo, nuestra IR se encuentra en la dirección 0. Los siguientes 2 bytes es nuestra m_selector campo. Esto es bytes 16 a 31 del descriptor. En cuanto a nuestra mesa, podemos ver que esto representa nuestro selector de segmento. Nuestro manejador de interrupciones contamines código, por lo que debe utilizar uno de nuestros selectores de código. Esto se define en 0x8 desplazamiento dentro del GDT, de modo que es nuestro selector de segmento. Los dos últimos bytes dentro de nuestro ejemplo son los dos últimos bytes dentro de la tabla anterior. Se trata de los 16 bits más altos de la dirección base de IR (que, en nuestro caso, es 0.) Esta es la m_baseHi miembro está representada anteriormente.

Como se puede ver, realmente no hay mucho pasando aquí. El selector siempre va a ser la del selector de código dentro de la GDT (0x8 para nuestras necesidades); entonces todo lo que tenemos que hacer es configurar los bits de bandera y la dirección base IR dentro m_baseLow y m_baseHi. Vamos a ver un ejemplo completo un poco más tarde que le ayudará en la comprensión de todo.

Cuando se dispara una interrupción o excepción, el procesador utiliza el número de excepción o de interrupción como un índice en el IDT. Como saben, nuestra IDT es nada más que un conjunto de 256 descriptores del formato que se muestra arriba. El procesador realiza el cálculo IDTR.baseAddress + índice * 8, donde 8 es el tamaño de un descriptor (Recuerde que los descriptores son 8 bytes de tamaño?), Y el índice es el número de interrupción. IDTR.baseAddress es la dirección base de la IDT almacenado dentro de los bits superiores de IDTR. Esto permite que el procesador para recuperar la dirección base del índice de descriptor para el manejador de interrupciones. Si el valor del cálculo es mayor que el tamaño límite de IDT almacenado en IDTR.limit, el procesador ejecutará un error de protección general (GPF) ya que esto resultará en una llamada más allá del tamaño de la IDT.

Resumen de Capitulo 16

Ya que

...

Descargar como  txt (41.9 Kb)   pdf (97.3 Kb)   docx (27.8 Kb)  
Leer 28 páginas más »
Disponible sólo en Essays.club