int X en el conjunto se traduce en un número de llamada del sistema n.
El syscall de lectura ex puede tener un número 4.
Al iniciar el sistema, OS crea una tabla de indicadores llamada tabla de descriptores de interrupción (IDT) que tiene una lista de direcciones para llamadas al sistema junto con el privilegio necesario para ejecutarlas.
El Nivel de privilegio actual (CPL) se guarda en uno de los bits del registro CS (técnicamente 2 bits en x86).
Estos son los pasos seguidos por una instrucción int:
• Obtener el enésimo descriptor del IDT, donde n es el argumento de int.
• Compruebe que CPL en% cs es < = DPL, donde DPL es el nivel de privilegio en el descriptor.
• De lo contrario, el usuario no tiene suficiente privilegio para ejecutar esto y dará como resultado la ejecución de una instrucción int 13 (error de protección general), (el usuario no tuvo suficiente privilegio)
• En caso afirmativo, el código de usuario suficiente privilegio para hacer esta llamada al sistema, el contexto de ejecución actual se guarda (registros, etc.), porque ahora cambiamos al modo kernel.
La información incluye registros, banderas porque cuando la llamada del sistema finaliza, queremos continuar la ejecución desde donde nos fuimos. • Los parámetros de la llamada al sistema se guardan en la pila del kernel, porque la llamada al sistema se ejecuta en modo kernel.
VSYSCALL (SISTEMA RÁPIDO DE LLAMADA)
Cada llamada al sistema vez que se ejecuta por el usuario, el sistema operativo guarda el estado actual de la máquina (es decir, el registro, puntero de pila, etc.) y cambia al modo de núcleo para la ejecución . Para algunas llamadas al sistema, no es necesario guardar todo el registro. La llamada al sistema de tiempo de salida ex lee la hora actual y regresa la llamada del sistema. Por lo tanto, algunas llamadas al sistema se implementan a través de lo que se denomina vsyscalls. Aquí, cuando se realiza una llamada al sistema, se ejecuta en el espacio del usuario mismo sin cambiar al kernel. Entonces el tiempo se guarda.
Ver aquí para más detalles sobre vsyscall http://www.trilithium.com/johan/2005/08/linux-gate/
y aquí Anyone can understand how gettimeofday works?
¿Cómo es el código de kernel, ejecutable binario, ensamblado o biblioteca dinámica enlazada? – MainID
El núcleo es el kernel en ejecución en su sistema, es decir, la imagen del sistema operativo en la memoria. – tvanfosson