Jumat, 13 April 2012

System Call


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

  • 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/