GNU/Linux >> Tutoriales Linux >  >> Linux

Linux:¿métodos de invocación de llamadas al sistema en el nuevo kernel?

Leí que en los núcleos más nuevos, las llamadas al sistema se invocan usando la instrucción INT X80 y también usando la instrucción sysenter. Y también la instrucción sysenter brinda una invocación más rápida en comparación con el otro método.

¿Cómo podría verificar qué llamadas al sistema son invocadas por ese método?

Respuesta aceptada:

A menos que esté ejecutando un kernel anterior a 2.6, no utilizará el int x80 método para invocar la mayoría de las llamadas al sistema. Han sido reemplazados a favor del systenter/sysexit método desde kernel 2.6 (comenzado en la serie 2.5) para cosas que importan.

Tenga en cuenta que si tiene archivos binarios antiguos que se compilaron con kernels más antiguos, aún podrían estar usando el int x80 método:lo único que puede hacer al respecto es reconstruirlos (u obtener archivos binarios actualizados).
Ejecute ldd your_exe en el programa que le preocupa. Si enumera linux-gate.so.1 o linux-vdso.so.1 , está usando las nuevas llamadas al sistema. Si no, es (lo más probable) que esté usando el método antiguo.
Para los binarios estáticos, es más difícil saberlo. Una forma sería objdump your_exe | less y busque envoltorios de llamadas al sistema (__gettimeofday es un buen candidato). Verá en el desensamblado si está usando una interrupción o no.

Un buen resumen de cómo funcionaban las antiguas llamadas INT 80 y cómo surgió y se configuró la nueva interfaz syscall se puede encontrar aquí:Llamadas al sistema (por Andries Brouwer).
Otra buena lectura:What is linux-gate. so.1?.

Ambos artículos están vinculados en este otro:Mecanismo de llamada al sistema basado en Sysenter en Linux 2.6, y apunta al libro Comprender el kernel de Linux de Daniel P. Bovet, Marco Cesati, que es bueno para obtener más información general.

Así que en resumen:no te preocupes por eso. Si tiene un sistema lo suficientemente reciente (CPU, kernel y distribución), está utilizando las llamadas al sistema "rápidas".


Linux
  1. Cómo hacer una copia de seguridad de todo su sistema Linux usando Rsync

  2. Tabla de llamadas del sistema Linux o hoja de trucos para ensamblaje

  3. La llamada al sistema Linux más rápida

  4. ¿Cómo pasar parámetros a la llamada del sistema Linux?

  5. Sistema de colas de Linux

Encuentre detalles del sistema Linux usando Python

Cómo monitorear el tiempo de actividad del sistema Linux usando Uptimed

Mostrar información del sistema Linux en la terminal usando Macchina

Cómo encontrar detalles del sistema Linux usando inxi

Cómo agregar un nuevo dispositivo al sistema de archivos BTRFS en Linux

¡Linux Kernel 5.0 lanzado, nuevas características y mejoras!