Apa itu System Call di Linux Dan Bagaimana Cara Kerjanya dengan Contohnya

What Is System Call Linux

Panggilan sistem adalah fungsi yang memungkinkan suatu proses untuk berkomunikasi dengan kernel Linux. Ini hanyalah cara program komputer untuk memesan fasilitas dari kernel sistem operasi. Panggilan sistem memaparkan sumber daya sistem operasi ke program pengguna melalui API (Application Programming Interface). Panggilan sistem hanya dapat mengakses kerangka kerja kernel. Panggilan sistem diperlukan untuk semua layanan yang membutuhkan sumber daya.

Kernel Linux adalah perangkat lunak berpemilik yang memuat dan beroperasi pada perangkat pada tahap yang paling tidak potensial. Tugasnya adalah mengatur semua yang terjadi pada mesin, dari keyboard, disk drive, dan acara jaringan hingga menyediakan irisan waktu untuk eksekusi program yang berbeda secara bersamaan. Pemisahan perangkat lunak dan perangkat keras menciptakan gelembung aman yang meningkatkan perlindungan dan keandalan. Aplikasi yang tidak memiliki hak istimewa tidak dapat menjangkau penyimpanan program lain, dan jika salah satu gagal, kernel akan menangguhkan proses sehingga tidak merusak seluruh sistem.



Pembungkus Wafer Tipis:

Panggilan sistem Linux tidak diberikan secara eksplisit ke kernel dalam program tertentu. Hampir semua program menggunakan pustaka C dasar dan menawarkan pembungkus yang ringan namun penting untuk panggilan sistem Linux. Repositori kemudian menyediakan panggilan mesin Linux yang menyertainya setelah memastikan bahwa parameter fitur diterjemahkan ke dalam register prosesor yang tepat. Setiap kali wrapper menerima data dari panggilan sistem, ia menganalisisnya dan memberikan kontribusinya ke program dengan jelas. Setiap operasi mesin-interaktif dalam suatu program pada akhirnya diubah menjadi panggilan sistem. Jadi, mari kita lihat beberapa di antaranya. Ada daftar panjang panggilan sistem Linux yang dapat kita gunakan di sistem Linux kita. Berikut adalah daftar beberapa panggilan sistem Linux yang umum dan banyak digunakan.



  • Membuka
  • Menutup
  • eksekutif
  • Menulis
  • Membaca
  • Lseek
  • Pilih

Mari kita bahas beberapa panggilan sistem Linux menggunakan bahasa C di artikel kami untuk mempelajarinya secara langsung.



Buka Panggilan Sistem:

Kita dapat menggunakan panggilan sistem Open di distribusi Linux kita untuk membuka dokumen dengan cepat, yang akan kita tentukan dalam kode bahasa C kita. Luncurkan terminal perintah terlebih dahulu. Anda dapat menggunakan pintasan Ctrl+Alt+T. Misalkan Anda memiliki file teks test.txt di direktori home, dan berisi beberapa konten di dalamnya. Jadi, pada awalnya, Anda harus membuat nama file tipe C baru new.c di terminal melalui editor nano. Oleh karena itu, cobalah instruksi nano sederhana di bawah ini.

$nanobaru.c

Sekarang, editor Nano telah diluncurkan. Ketik kode yang ditunjukkan di bawah ini di dalamnya. Kami memiliki dua deskriptor file dalam kode. Kedua file dapat dibuka menggunakan panggilan sistem terbuka. Deskriptor pertama berisi panggilan baca, dan yang kedua berisi fungsi tulis. Panggilan terbuka pertama adalah membuka file teks test.txt dan menyimpan isinya ke dalam file deskriptor fd. Panggilan sistem terbuka kedua adalah membuat file bernama target. Target dokumen telah diganti ke deskriptor file fd1. Instruksi tulis digunakan untuk menyalin byte data dalam buffer. Ketuk Ctrl+S untuk menyimpan kode dan tekan tombol pintas Ctrl+X untuk keluar dari file.



Jalankan instruksi kompilasi gcc untuk mengkompilasi kode C ini.

$gccbaru.c

Mari kita jalankan kode menggunakan kueri a.out sederhana di shell sebagai berikut:

$./a.keluar

Data keluaran telah dikirimkan ke file target. Mari kita periksa file target menggunakan kueri cat. Layar keluaran menampilkan data 20 karakter dalam file target.

$kucingtarget

Panggilan Sistem Eksekutif:

Panggilan sistem exec sedang dibuang untuk menjalankan file yang sedang diproses. File yang dapat dieksekusi sebelumnya diganti, dan file saat ini dioperasikan setiap kali exec dipanggil. Dengan menggunakan panggilan sistem exec, kita dapat berasumsi bahwa hal itu akan menimpa dokumen atau aplikasi lama dalam loop dengan yang baru. Perangkat lunak baru digunakan untuk menimpa seluruh materi proses. Dokumen yang judulnya diberikan dalam pernyataan setiap kali memanggil exec() diganti dengan bagian informasi pengguna yang menjalankan panggilan sistem exec() (). Jadi buka terminal perintah dan, menggunakan editor nano, buat file tipe C baru sebagai berikut:

$nanoexp.c

Editor telah dibuka sekarang. Tuliskan seluruh kode bahasa C di bawah ini di dalamnya. Ada tiga perpustakaan utama yang disertakan di dalamnya. Setelah itu, fungsi utama telah dipakai. Pernyataan cetak telah menunjukkan data string dan Id Proses dari file exp.c. Fungsi getpid() telah digunakan untuk tujuan ini. Kemudian kita memiliki array tipe karakter dengan beberapa nilai di dalamnya. Panggilan sistem exec telah digunakan untuk mengambil nama file dan larik satu baris di atas sebagai argumen. Sekarang file hello.c akan diproses. Setelah itu, pernyataan cetak lain datang sejauh ini, tetapi tidak akan pernah dieksekusi. Tekan Ctrl+S untuk menyimpan file ini. Tekan Ctrl+X untuk keluar.

Sekarang saatnya membuat file c lain, hello.c menggunakan editor nano. Gunakan kueri di bawah ini di Shell untuk melakukannya.

$nanohalo.c

Tulis kode di bawah ini di dalamnya. Kode ini berisi dua pernyataan cetak dalam fungsi utama. Yang pertama hanya mencetak string yang diberikan di dalamnya, dan yang kedua mencetak string sambil mengambil ID proses dari file yang sedang digunakan, yaitu hello.c.

Mari kita kompilasi kedua file satu demi satu menggunakan gcc.

$gcc–o exp exp.c

$gcc–O halo halo.c

Ketika kita mengeksekusi file exp.c, itu akan menampilkan pernyataan cetak pertama dari file exp.c dan kedua baris cetak dari file hello.c.

$./exp

Kesimpulan:

Kami telah menguraikan seluruh konsep panggilan sistem Linux dan bagaimana mereka dapat digunakan di sistem Linux Anda. Kami telah menggunakan Ubuntu 20.04 saat menerapkan konsep ini.