(Consulta) ¿Por qué Windows no usa interrupciones?

Iniciado por class_OpenGL, 22 Diciembre 2015, 08:06 AM

0 Miembros y 1 Visitante están viendo este tema.

class_OpenGL

Hola, muy buenas! La pregunta es bastante simple. ¿Por qué Windows no usa interrupciones para operaciones de bajo nivel? Por ejemplo, Los sistemas Unix usan su clásica interrupción 0x80 para, por ejemplo, operaciones de lectura o escritura. Sin embargo, para hacer operaciones de escritura o lectura en Windows, necesitas usar su API.

La duda se puede plantear de otra forma. ¿Tienen las interrupciones alguna desventaja clara frente al sistema que usa Windows? Gracias!

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL

Eternal Idol

#1
Si las usa/ba, a bajo nivel en versiones/procesadores mas antiguos usan la interrupcion 0x2E, hoy en dia (creo que en Linux tambien) se usan instrucciones especificas como systenter/syscall para pasar a modo Kernel.

http://wiki.osdev.org/SYSENTER

No deberias llamar a esta interrupcion (en produccion) ya que los numeros de los servicios varian entre diferentes versiones de Windows, en la NTDLL.dll podes ver como se hace ese trabajo de enrutado.

Ejemplo:
ntdll!NtCreateFile:
mov r10,rcx
mov eax,052h ;numero de servicio
syscall
ret
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

class_OpenGL

Interesante... Pero, ¿por qué no se siguen usando las interrupciones? ¿Por qué motivo se están sustituyendo por syscall o demás instrucciones? ¿Qué desventajas tienen?

Gracias por tu respuesta!

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL

Eternal Idol

Como te decia hay instrucciones modernas especificas, estas estan optimizadas para hacer el pasaje de modo Usuario a modo Kernel.

http://www.summitsoftconsulting.com/syscallopts.htm
http://wiki.osdev.org/SYSENTER
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

class_OpenGL

Muchas gracias. Me ha costado un poco xD (no es que sea complicado, es que me he comido el coco :P)

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL

Eternal Idol

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón