Mi respuesta here cubre su pregunta.
En la práctica, los núcleos recientes están implementando un VDSO, especialmente para optimizar dinámicamente las llamadas al sistema (el kernel establece el VDSO a algún código mejor para el procesador actual). Por lo tanto, debe usar VDSO, y será mejor utilizar, para las llamadas de sistema existentes, la interfaz proporcionada por la libc.
Tenga en cuenta que, AFAIK, una parte significativa del costo de las llamadas de sistema simples va del espacio de usuario al núcleo y viceversa. Por lo tanto, para algunas llamadas de sistema (probablemente gettimeofday
, getpid
...) el VDSO podría evitar incluso eso (y técnicamente podría evitar hacer una llamada de sistema real). Para la mayoría de llamadas al sistema (como open
, read
, send
, mmap
....) el coste del núcleo de la syscall es lo suficientemente grande para que cualquier mejora del espacio de usuario al núcleo transición espacio (por ejemplo, usando SYSENTER
o SYSCALL
instrucciones de la máquina en lugar de INT
) insignificante.
¿Dónde ¿Está buscando en el núcleo que se está viendo el uso de '0x80' int? ¿Puedes especificar algunos archivos? – Mike
@Mike De hecho, encontré un tipo de tutorial en Linux kernel donde, como ejemplo, se utilizó. Fue 2.6 basado. – Alex
Similar a http://stackoverflow.com/q/12776340/841108 pregunta –