GNU/Linux >> Linux Esercitazione >  >> Linux

Linux:metodi di chiamata di sistema nel nuovo kernel?

Ho letto che nei kernel più recenti le chiamate di sistema vengono invocate utilizzando l'istruzione INT X80 e anche utilizzando l'istruzione sysenter. Inoltre, l'istruzione sysenter fornisce un'invocazione più rapida rispetto all'altro metodo.

Come posso verificare quali chiamate di sistema vengono richiamate da quel metodo?

Risposta accettata:

A meno che tu non stia eseguendo un kernel precedente alla 2.6, non utilizzerai int x80 metodo per richiamare la maggior parte delle chiamate di sistema. Sono stati sostituiti a favore del systenter/sysexit metodo dal kernel 2.6 (iniziato nella serie 2.5) per le cose che contano.

Nota che se hai vecchi binari che sono stati compilati su kernel più vecchi, quelli potrebbero ancora usare int x80 metodo:l'unica cosa che puoi fare è ricostruirli (o ottenere binari aggiornati).
Esegui ldd your_exe sul programma di cui sei preoccupato. Se elenca linux-gate.so.1 o linux-vdso.so.1 , sta usando le nuove syscall. In caso contrario, sta (molto probabilmente) utilizzando il vecchio metodo.
Per i binari statici, è più difficile dirlo. Un modo sarebbe objdump your_exe | less e cerca i wrapper delle chiamate di sistema (__gettimeofday è un buon candidato). Vedrai dallo smontaggio se sta utilizzando un'interruzione o meno.

Un buon riassunto di come funzionavano le vecchie chiamate INT 80 e di come è nata e configurata la nuova interfaccia syscall può essere trovato qui:Chiamate di sistema (di Andries Brouwer).
Un'altra buona lettura:Cos'è linux-gate. così.1?.

Entrambi questi articoli sono collegati in quest'altro:Sysenter Based System Call Mechanism in Linux 2.6, e punta al libro Understanding The Linux Kernel di Daniel P. Bovet, Marco Cesati che è utile per informazioni più generali.

Quindi in breve:non preoccuparti. Se hai un sistema sufficientemente recente (CPU, kernel e distribuzione), stai utilizzando le chiamate di sistema "veloci".


Linux
  1. Tabella delle chiamate di sistema Linux o cheatsheet per Assembly

  2. Chiamata di sistema Linux più veloce

  3. Come passare i parametri alla chiamata di sistema Linux?

  4. Sistema di accodamento Linux

  5. Perché è necessario modificare le tabelle delle chiamate di sistema in Linux?

Trova i dettagli del sistema Linux usando Python

Come monitorare l'uptime del sistema Linux utilizzando Uptimed

Visualizza le informazioni sul sistema Linux nel terminale utilizzando Macchina

Come trovare i dettagli del sistema Linux usando inxi

Come aggiungere un nuovo dispositivo al file system BTRFS in Linux

Rilascio del kernel Linux 5.0, nuove funzionalità e miglioramenti!