Pregunta

¿Cómo cambiar de ventana a modo supervisor durante una llamada al sistema? He oído algo sobre una "trampa 0", pero que ni siquiera se parece como una instrucción x86. Di un paso a través de algunas llamadas al sistema, pero no puedo encontrar ninguna. Hacer un montón de llamadas de sistema de Windows se ejecuta en modo de usuario? El cual se ejecutan en modo de supervisor?

¿Fue útil?

Solución

llamada al sistema es también conocido como interrupción de software . La instrucción x86 que se pide una interrupción de software tiene la tecla de acceso INT . ¿Cómo se pasa los datos al sistema operativo está definido por el sistema operativo ABI. Por lo que yo sé, Windows utiliza el 0x80 inmediata para todas sus rutinas y enviar datos adicionales a través de los registros, pero no estoy seguro. 0x20 es el primero inmediato disponible, ya que el rango de 0 a 31 está reservado y se utiliza para excepciones generales como división entera por cero y los fallos de memoria.

Lo que básicamente que pasa es que la CPU pasa al modo privilegiado y lee el IDTR (Interupt descriptor de tabla de registro). Allí se encuentra la dirección de memoria física para el IDT (Interupt la tabla de descriptor) y realiza una búsqueda en el IDT, basado en el de 8 bits inmediata al horno en la instrucción de interrupción de software. El IDT se puede almacenar en cualquier parte de la memoria. El IDTR puede ser leído / escrito por las instrucciones lidt y SIDT. El IDT puede almacenar una variedad de información, pero para interrupciones que almacena la dirección de la rutina de servicio asociado con el INT inmediata.

Ejemplos de Win32 funciones que dispara una alarma de software .. hm. printf y amigos seguro de sí, al igual que EnterCriticalSection . En Windows Vista y Windows 7, algunos API de OpenGL y DirectX llama ahora requiere una ida y vuelta en la tierra del núcleo debido al nuevo gestor de composición. Para OpenGL, que se aplica para todas las funciones que lee el backbuffer actual, como glReadPixels, glCopy (Sub) TexImage2D, etc.

P.S: Tome este post con una pizca de sal. Ha sido un tiempo desde que la pata alrededor con Windows esta manera, y yo no llevó a cabo una gran cantidad de verificación de datos. Ediciones y comentarios son bienvenidos.

Y aquí es un enlace a la Intel 386 manual (el cual he citado de todos modos)

Otros consejos

CPU x86 proporcionan las instrucciones SYSENTER y SYSEXIT. Estas instrucciones se ejecutan un interruptor muy rápido desde el modo de usuario al modo kernel y la espalda, y los sistemas operativos modernos que se ejecutan en los CPU modernos más probable es que utilizan estos en lugar de interrupciones muy costosas llamadas o lejanos.

Puede ver más detalles en Manuales de Intel del desarrollador de software , específicamente volumen 2B

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