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".