Di Linux setidaknya mekanisme system call bekerja di bawah sebagian besar arsitektur dengan menempatkan beberapa data yang diformat secara khusus (biasanya beberapa jenis c struct) di beberapa register atau alamat memori yang telah ditentukan.
Masalahnya sebenarnya adalah memaksa CPU untuk melakukan pergantian ke ruang kernel sehingga dapat menjalankan kode kernel istimewa untuk melayani panggilan. Ini dilakukan dengan memaksa kesalahan dari beberapa jenis (kesalahan menjadi pembagian dengan 0, overflow yang tidak ditentukan atau segfault, dll) ini memaksa kernel untuk mengambil alih eksekusi untuk menangani kesalahan.
Biasanya kernel menangani kesalahan dengan mematikan proses penyebab atau menjalankan handler yang disediakan pengguna. Namun dalam kasus syscall ia akan memeriksa register yang telah ditentukan dan lokasi memori dan jika mereka berisi permintaan syscall itu akan dijalankan menggunakan data yang disediakan oleh proses pengguna dalam in-memory struct. Ini biasanya harus dilakukan dengan beberapa perakitan kerajinan tangan khusus dan untuk memudahkan penggunaan syscall untuk pengguna perpustakaan C sistem harus membungkusnya sebagai fungsi. Untuk antarmuka tingkat yang lebih rendah, silakan lihat http://man7.org/linux/man-pages/man2/syscall.2.html untuk beberapa informasi tentang cara kerja syscalls dan bagaimana Anda dapat menelepon kemudian tanpa bungkus C.
Ini diberikan penyederhanaan yang berlebihan, itu tidak benar di semua arsitektur (mips memiliki instruksi syscall khusus) dan tidak harus bekerja sama pada semua OS. Namun, jika Anda memiliki komentar atau pertanyaan, silakan tanyakan.
Diubah: Catatan, mengenai komentar Anda tentang hal-hal di / dev / ini sebenarnya adalah antarmuka tingkat tinggi ke kernel, bukan yang lebih rendah. Perangkat ini sebenarnya menggunakan (sekitar) 4 syscall di bawahnya. Menulis kepada mereka sama dengan syscall tulis, membaca syscall baca, membuka / menutupnya setara dengan buka dan tutup syscall dan menjalankan ioctl menyebabkan syscall ioctl khusus yang dengan sendirinya merupakan antarmuka untuk mengakses salah satu dari banyak sistem ioctl panggilan (khusus, biasanya panggilan khusus perangkat dengan penggunaan terlalu sempit untuk menulis syscall keseluruhan untuk mereka).