System
call adalah “an instruction that interrupts the program being executed and
passes control to the supervisor.”
Komputer
digunakan untuk melakukan suatu proses yang dikehendaki user. Oleh karena itu
harus ada suatu bentuk komunikasi antara user dan hardware. Komunikasi itu
terjadi dalam bentuk system calls. SO melalui shell-nya akan menangkap perintah
dari user yang kemudian akan dikomunikasikan melalui system calls. Disinilah
peran SO sebagai jembatan komunikasi antara user dan hardware itu terjadi.
System calls itu sendiri umumnya ditulis dalam bahasa C dan C++.
Mengenai shell, shell itu sendiri secara umum adalah layer yang berfungsi sebagai interface antara user dan inti dalam sistem operasi (kernel). Melalui shell, user dapat memberi perintah-perintah yang akan dikirim ke sistem operasi, sehingga shell ini merupakan layer yang menerima interaksi dari user secara langsung. Shell dalam SO secara umum dibagi menjadi 2, Command Line(CLI) dan Graphical(GUI). Jadi dengan kata lain, system calls berperan sebagai interface dalam layanan-layanan yang disediakan oleh sistem operasi.
Untuk
lebih jelasnya lihat gambar berikut. Contoh di atas adalah sytem calls di dalam
program yang membaca data dari satu file lalu meng- copy-nya ke file lain.
Biasanya tersedia sebagai instruksi bahasa rakitan. Beberapa sistem mengizinkan system calls dibuat langsung dari program bahasa tingkat tinggi. Beberapa bahasa pemrograman (contoh : C, C++) telah didefenisikan untuk menggantikan bahasa rakitan untuk sistem pemrograman.
Tiga metode umum yang digunakan dalam memberikan parameter kepada sistem operasi
Biasanya tersedia sebagai instruksi bahasa rakitan. Beberapa sistem mengizinkan system calls dibuat langsung dari program bahasa tingkat tinggi. Beberapa bahasa pemrograman (contoh : C, C++) telah didefenisikan untuk menggantikan bahasa rakitan untuk sistem pemrograman.
Tiga metode umum yang digunakan dalam memberikan parameter kepada sistem operasi
- Melalui register
- Menyimpan parameter dalam blok atau tabel pada memori dan alamat blok tersebut diberikan sebagai parameter dalam register
- Menyimpan parameter (push) ke dalam stack (oleh program), dan melakukan pop off pada stack (oleh sistem operasi)
Memberikan
parameter melalui tabel
Sumber: Silberschatz,et.al,
Operating System Concepts, 6th ed, .2003, New York: John Wiley & Son.Inc ,
halaman 65
Jenis System Calls
- Kontrol Proses
System
calls yang berhubungan dengan kontrol
proses antara lain ketika penghentian pengeksekusian program. Baik secara
normal (end) maupun tidak normal (abort). Selama proses
dieksekusi kadang kala diperlukan untuk meload atau mengeksekusi program
lain, disini diperlukan lagi suatu system calls. Juga ketika membuat
suatu proses baru dan menghentikan sebuah proses. Ada juga system calls
yang dipanggil ketika kita ingin meminta dan merubah atribut dari suatu proses.
MS-DOS
adalah contoh dari sistem single-tasking. MS-DOS menggunakan metode yang
sederhana dalam menjalankan program dan tidak menciptakan proses baru. Program
di-load ke dalam memori, kemudian program dijalankan.
Eksekusi
MS-Dos
Sumber: Silberschatz,et.al,
Operating System Concepts, 6th ed, .2003, New York:John Wiley & Son.Inc ,
halaman 68
Barkeley
Unix adalah contoh dari sistem multi-tasking. Command interpereter masih tetap
bisa dijalankan ketika program lain dieksekusi.
Multi
program pada Unix
Sumber: Silberschatz,et.al,
Operating System Concepts, 6th ed, .2003, New York:John Wiley & Son.Inc ,
halaman 69
- Manajemen Berkas
System
calls yang berhubungan dengan berkas
sangat diperlukan. Seperti ketika kita ingin membuat atau menghapus suatu
berkas. Atau ketika ingin membuka atau menutup suatu berkas yang telah ada,
membaca berkas tersebut, dan menulis berkas itu.System calls juga
diperlukan ketika kita ingin mengetahui atribut dari suatu berkas atau ketika
kita juga ingin merubah atribut tersebut. Yang termasuk atribut berkas adalah
nama berkas, jenis berkas, dan lain-lain
Ada juga system
calls yang menyediakan mekanisme lain yang berhubungan dengan direktori
atau sistim berkas secara keseluruhan. Jadi bukan hanya berhubungan dengan satu
spesifik berkas. Contohnya membuat atau menghapus suatu direktori, dan
lain-lain.
- Manajemen Peranti
Program
yang sedang dijalankan kadang kala memerlukan tambahan sumber daya. Jika banyak
pengguna yang menggunakan sistem dan jika diperlukan tambahan sumber daya maka
harus meminta peranti terlebih dahulu. Dan setelah selesai penggunakannnya
harus dilepaskan kembali. Ketika sebuah peranti telah diminta dan dialokasikan
maka peranti tersebut bisa dibaca, ditulis, atau direposisi.
- Informasi Maintenance
Beberapa system
calls disediakan untuk membantu pertukaran informasi antara pengguna dan
sistem operasi. Contohnya system calls untuk meminta dan mengatur waktu
dan tanggal. Atau meminta informasi tentang sistem itu sendiri, seperti jumlah
pengguna, jumlah memori dan disk yang masih bisa digunakan, dan lain-lain. Ada
juga system calls untuk meminta informasi tentang proses yang disimpan
oleh sistem dan system calls untuk merubah ( reset ) informasi tersebut.
- Komunikasi
Dua model komunikasi :
- message-passing
Pertukaran
informasi dilakukan melalui fasilitas komunikasi antar proses yang disediakan
oleh sistem operasi.
- shared-memory
Proses
menggunakan memori yang bisa digunakan oleh berbagai proses untuk pertukaran
informasi dengan membaca dan menulis data pada memori tersebut.
Mekanisme
komunikasi
Sumber: Silberschatz,et.al,
Operating System Concepts,6th e, .2003, New York:John Wiley & Son.Inc,
halaman 72
Dalam message-passing,
sebelum komunikasi dapat dilakukan harus dibangun dulu sebuah koneksi.Untuk itu
diperlukan suatu system calls dalam pengaturan koneksi tersebut, baik
dalam menghubungkan koneksi tersebut maupun dalam memutuskan koneksi tersebut
ketika komunikasi sudah selesai dilakukan. Juga diperlukan suatu system
calls untuk membaca dan menulis pesan( message ) agar pertukaran
informasi dapat dilakukan.
Fungsi
fork()(system call)
Sistem
operasi UNIX mempunyai system call fork yang berfungsi untuk membuat
proses baru. Proses yang memanggil system call fork ini akan dibagi jadi
dua, proses induk dan proses turunan yang identik. Analoginya seperti
pembelahan sel, dimana satu sel membelah jadi dua sel yang identik. Proses
induk dan turunan independen satu sama lain dan berjalan bersamaan. Return
code dari system call ini adalah suatu integer. Untuk proses anak return
code-nya adalah 0 sementara untuk proses induk return code-nya
adalah nomor identifikasi proses (PID) dari turunannya. Ada juga system call
exec yang berguna untuk membuat proses turunan yang terbentuk memiliki
instruksi yang berbeda dengan proses induknya. Dengan kata lain, proses induk
dan proses turunan tidak lagi identik tapi masing-masing punya instruksi
berbeda.
Daftar Pustaka :
http://www.artikata.com/arti-181713-system+call.html
http://bebas.ui.ac.id/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi-4.X-1/ch10s05.html
http://menembuswaktu.wordpress.com/2010/03/08/system-calls-2/
http://www.artikata.com/arti-181713-system+call.html
http://bebas.ui.ac.id/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi-4.X-1/ch10s05.html
http://menembuswaktu.wordpress.com/2010/03/08/system-calls-2/