Disponible la nueva versión "donationware" 7.3 de OrganiZATOR
Descubre un nuevo concepto en el manejo de la información.
La mejor ayuda para sobrevivir en la moderna jungla de datos la tienes aquí.

Tecnología del PC

[Home]  [Inicio]  [Índice]


2.4.2  Servicios del Sistema

§1  Sinopsis

La tabla de vectores de interrupción IDT ("Interrupt Description Table") del PC es una zona de 1024 bytes en la memoria baja, que contiene un máximo de 256 vectores (punteros de 4 bytes) a los programas que atienden las interrupciones (ISR's "Interrupt service routine").

La primera misión de la IDT es contener los punteros a los servicios del BIOS ( H2.4.1). Aunque en realidad estos ocupan solo algunas de las 256 posiciones disponibles.  El resto se completa con los denominados servicios del Sistema; quedando espacio para la inclusión de servicios especiales del usuario. Como es natural, los vectores de servicios del BIOS señalan a direcciones de memoria situadas en el espacio de la propia BIOS ( H4) [1] y son idénticos para un modelo determinado de ordenador, con independencia del SO cargado. Por ejemplo: MS-DOS; Windows o Linux. Mientras que los vectores de servicios del Sistema dependerán naturalmente del SO cargado y señalan a zonas de memoria RAM.

§2  Detalle de servicios del MS-DOS

La tabla de vectores de interrupción del PC tiene posiciones que son estándar, esto significa que algunos números de interrupción corresponden a un mismo servicio en todas las máquinas.  En la tabla adjunta se han señalado algunos de estos servicios, indicando el número de interrupción, la dirección del vector y el uso de la ISR correspondiente.

Numero

Dirección

Uso

0

0000h

Cuando se realiza una división por cero, el procesador genera una excepción que tiene este número.

1

0004h

.Se utiliza para ejecutar programas paso a paso (depuradores).

2

0008h

Generado cuando se produce una interrupción no enmascarable NMI.

5

0014h

Servicio de impresión del contenido de la pantalla.  La invocación de este servicio provoca el mismo resultado que la combinación de teclas  SHIFT+CTRL (que utilizan este servicio).
8 0020h El reloj del sistema genera interrupciones con este número con una frecuencia de 18.21 veces por segundo aproximadamente (se conocen como "ticks").  Este servicio incrementa en una unidad la cuenta del reloj (almacenada en la memoria de datos de la ROM-BIOS).  Del valor de este contador, que es puesto a cero cada 24 horas, se basan los servicios de hora del sistema (servicio 26 ).

16

0040h

Servicios de video.  Contiene 16 subservicios tales como ajuste del tamaño y desplazamiento del cursor, escritura y lectura de un carácter o de un píxel, desplazamiento vertical ("Scroll"), ajuste y lectura del modo de video, etc.

17

0044h

Servicio de componentes del equipo.  Proporciona una palabra de 16 bits que contiene información básica sobre los componentes instalados en el ordenador.

18

0048h

Este servicio informa del tamaño de la memoria instalada en el sistema.

19

004Ch

La ROM BIOS proporciona seis servicios estándar de disquete: Reinicialización; obtención del estado; lectura; escritura y verificación de sectores, y formateo de pistas.
20 0050h En esta interrupción se agrupan diversos subservicios de comunicaciones para puertos serie proporcionados por la BIOS:  Inicializar los parámetros de inicio del puerto; enviar un carácter; recibir un carácter; obtener el estado del puerto.
21 0054h Incluye los servicios de cassette.  En realidad es una reliquia prehistórica, ya que el PC tenía posibilidad de una cassette opcional.
22 0058h Incluye los servicios de teclado que incluye tres subservicios:  Lectura de un carácter del buffer del teclado; Informar si hay algún carácter en el buffer; selección mayúsculas/minúsculas (estado del "Shift").
23 005Ch Incluye tres subservicios para impresora:  Enviar un carácter al puerto paralelo; Inicializar el puerto;  obtener un informe esquemático del estado de la impresora.
24 0060h Esta es otra reliquia prehistórica.  Se trata del cargador del intérprete BASIC; este lenguaje que estaba presente en la ROM de los primeros PC's.
25 0064h Este servicio es la rutina de puesta en marcha ("bootstrap") del equipo.  El resultado de su activación es equivalente a su puesta en marcha.  Se denomina reinicio en caliente, y es parecido al efecto que se consigue por el teclado con la combinación CTRL+ALT+DEL.
26 0068h Este servicio suministra la hora del sistema mediante la inspección del contador de ticks de reloj pasados desde media noche (ver servicio 8 ).  Incluye dos subservicios, que permiten respectivamente leer y escribir el valor del contador de ticks.

Nota:  La librería estándar C++ dispone de una función clock() que devuelve el valor del tiempo transcurrido desde el inicio del programa.  Esta función se basa en la inspección del contador de ticks.

  Inicio.


[1]   En el caso de flash BIOS ( H4) esta memoria es copiada a RAM, por lo que sus vectores apuntan también a zonas de memoria RAM.