Pregunta

Estos son "programador" Visible registros x86-64:

alt text
(fuente: usenix.org )

¿Qué hay de los registros invisibles? Justo ahora he aprendido que los registros MMU, la tabla de descriptor de interrupción (IDT) utiliza estos registros invisibles. Estoy aprendiendo estas cosas de la manera difícil. ¿Hay algún recurso (libro / documentación / etc) que me da la imagen completa a la vez?

Soy consciente de los registros visibles programador y cómodo en la programación con ellos. Sólo quiero aprender sobre registros invisibles y su funcionalidad. Quiero obtener una imagen completa. ¿Dónde puedo obtener esta información?

EDIT:

  

Quiero obtener una imagen completa. ¿Dónde puedo obtener esta información?

Estos son los dos libros me ayudaron a entender estos detalles todo bajo nivel.

  1. Fundamentos de la Organización de Computadores y Diseño ~ Sivarama P. Dandamudi - 1 edición (2003 )
  2. Organización de Computadores y Diseño: El hardware / software de interfaz, 4ª edición, David A ~ . Patterson, John L. Hennessy
¿Fue útil?

Solución

IDT es una tabla de descriptores de interrupciones, que contiene algo así de una visión abstracta, primeros dieciocho interrupciones están reservados por el procesador, los siguientes dieciocho están reservados por Intel para la viabilidad futura de la arquitectura del chip ...

Interrupt    Handler
   0         divide_by_zero_handler
   1         debug_handler
   ..           ...
   13        general_exception_handler
   14        page_fault_handler
   ..           ...
   18        machine_check_handler

En este contexto, los manipuladores son parte de un núcleo de juguete, y cada uno de los manipuladores se establecen en el arranque, antes de código de usuario en tierra que se carga. (BIOS es el código de 16 bits aka código modo real), de almendra configura los manipuladores, cambia a 32bit modo protegido, cuando cualquiera de las interrupciones se emiten, el manejador apropiado se ejecuta en función del número de interrupción. Por ejemplo, si la interrupción 14 se generó, el núcleo se ejecutará un page_fault_handler, comprobar si la página está sucia y residir en el disco, a continuación, cargar esa página en la memoria, reparar las direcciones y borrar el bit de daños, ejecuta una IRET instrucción de interrupción Retorno para continuar, la limpieza de las banderas ....

Esto es una visión abstracta de cómo funciona IDT ... Hay cosas más complejas pasando detrás de las escenas ... dependiendo de la arquitectura y el tipo de gestión de memoria, como paginado / / Modo esquemas de direcciones virtuales plana / protegido. ..

Tener una mirada aquí en el rel="nofollow documentación Intel que da una vista excelente y exhaustivo de la programación de Intel ...

Editar En los viejos días de DOS (que era el código de 16 bits y no está bien, exactamente protegida de la memoria), fue posible modificar el trazado de los manejadores de interrupciones a sus propios manejadores de superposición por lo tanto el IDT original, para un ejemplo de tal interrupción, interrupción 9, que es la interrupción de teclado (BIOS interrumpe en este contexto) utilizando los getvect(...) y setvect(...) llamadas, podría también, manejar algunas (no todas las interrupciones del procesador, en particular, IDT 0 para dividir por cero) ... aunque esas interrupciones de la BIOS eran bastante similares en apariencia a las interrupciones de procesador, que compartían una característica común, tanto tenía la tabla de vectores de interrupción (como era conocido en ese entonces). Así fue como TSR (Terminate permanecer residente) programas fueron capaces de mantener reentrante en DOS como resultado de la BIOS interrumpe re-enrutado a los manipuladores de la TSR ...

Otros consejos

Usted tendría que estudiar el manual de referencia del procesador para el procesador en particular que le interesa. Aquí está la Manual de referencia del procesador Itanium .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top