GNU/Linux >> Belajar Linux >  >> Linux

Linux – Metode Panggilan Sistem di Kernel Baru?

Saya membaca bahwa di kernel yang lebih baru, panggilan sistem dipanggil menggunakan instruksi INT X80 dan juga menggunakan instruksi sysenter. Dan juga instruksi sysenter memberikan pemanggilan yang lebih cepat dibandingkan dengan metode lainnya.

Bagaimana saya bisa memeriksa semua panggilan sistem yang dipanggil oleh metode itu?

Jawaban yang Diterima:

Kecuali Anda menjalankan kernel pra-2.6, Anda tidak akan menggunakan int x80 metode untuk memanggil sebagian besar panggilan sistem. Mereka telah diganti demi systenter/sysexit metode sejak kernel 2.6 (dimulai pada seri 2.5) untuk hal-hal yang penting.

Perhatikan bahwa jika Anda memiliki binari lama yang dibangun dengan kernel lama, itu masih bisa menggunakan int x80 metode – satu-satunya hal yang dapat Anda lakukan adalah membangunnya kembali (atau memperbarui binari).
Jalankan ldd your_exe pada program yang Anda khawatirkan. Jika daftar linux-gate.so.1 atau linux-vdso.so.1 , itu menggunakan syscalls baru. Jika tidak, (kemungkinan besar) menggunakan metode lama.
Untuk binari statis, lebih sulit untuk mengatakannya. Salah satu caranya adalah dengan objdump your_exe | less dan cari pembungkus panggilan sistem (__gettimeofday adalah calon yang baik). Anda akan melihat dari pembongkaran apakah itu menggunakan interupsi atau tidak.

Ikhtisar yang baik tentang bagaimana panggilan INT 80 lama bekerja dan bagaimana antarmuka syscall baru muncul dan diatur dapat ditemukan di sini:Panggilan sistem (oleh Andries Brouwer).
Bacaan bagus lainnya:Apa itu linux-gate. jadi.1?.

Kedua artikel ini ditautkan di artikel lain ini:Mekanisme Panggilan Sistem Berbasis Sysenter di Linux 2.6, dan merujuk ke buku Memahami Kernel Linux oleh Daniel P. Bovet, Marco Cesati yang bagus untuk informasi lebih umum.

Jadi singkatnya:jangan khawatir tentang itu. Jika Anda memiliki sistem yang cukup baru (CPU, kernel, dan distribusi), Anda menggunakan panggilan sistem "cepat".


Linux
  1. Tabel panggilan sistem Linux atau lembar contekan untuk Majelis

  2. Mengapa ada kebutuhan untuk memodifikasi tabel system call di Linux?

  3. Garpu vs Klon pada 2.6 Kernel Linux

  1. Cara Mencadangkan Seluruh Sistem Linux Anda Menggunakan Rsync

  2. Bagaimana menangani kepanikan kernel Linux

  3. Contoh penggunaan getnstimeofday di kernel Linux

  1. Cara memeriksa versi Kernel di Linux

  2. Panggilan sistem Linux tercepat

  3. Bagaimana cara meneruskan parameter ke panggilan sistem Linux?