Sabtu, 02 Maret 2024

2.4 LAYANAN SISTEM OPERASI DAN SYSTEM CALL

Salah satu fungsi dari sistem operasi adalah menyediakan layanan serta antarmuka bagi pengguna maupun program aplikasi. Pengguna berinteraksi dengan sistem operasi menggunakan suatu program antarmuka (Shell). Suatu shell dapat memiliki antarmuka berbasis perintah teks (CUI, Command User Interface) seperti pada Gambar 2.9 ataupun grafis (GUI, Graphical User Interface) seperti pada Gambar 2.10. Program-program shell ini merupakan program pengguna dan umumnya selalu disertakan pada paket instalasi suatu sistem operasi.


Gambar 2.9 Contoh CUI (Command User Interface)



Gambar 2.10 Contoh GUI (Graphical User Interface)

Di lain pihak, program-program aplikasi berinteraksi atau memanggil rutin-rutin sistem operasi menggunakan pustaka API (Application Programing Interface). Prosedur atau rutin yang disediakan oleh pustaka API ini disebut dengan systen call. Setiap sistem operasi umumnya memiliki spesifikasi sistem call standar, misalnya UNIX memiliki POSIX, sebagai standar system call-nya, sedangkan keluarga sistem operasi Windows memiliki spesifikasi Win32 API. Pustaka API atau sistem call, umumnya berisi trap (semacam sinyal interupsi perangkat lunak) untuk memanggilkan rutin-rutin dari sistem operasi.
Pada sistem yang menerapkan sistem proteksi, rutin kernel sistem operasi berjalan dalam modus kernel, tempat seluruh instruksi prosesor dapat dieksekusi secara legal. Rutin-rutin dari program aplikasi berjalan dalam modus user di mana hanya/tidak seluruh instruksi prosesor dapat dieksekusi secara legal. Instruksi seperti pengaksesan peranti I/O tidak dapat dieksekusi jika prosesor dalam modus user. Perpindahan dari modus kernel ke user ataupun sebaliknya hanya terjadi dengan trap, semacam sinyal interupsi perangkat lunak ke prosesor. Sebelum trap dilakukan, parameter-parameter yang mengidentifikasi rutin sistem operasi yang hendak dipanggil (nomor system call) beserta argumennya harus disalinkan ke register prosesor. Instruksi seperti ini umumnya ditulis dalam bahasa assembly. Jadi umumnya pustaka API yang berisi instruksi trap, terdiri atas sebagian kode bahasa C dan sebagian lagi kode assembly. Proses pemanggilan rutin sistem operasi menggunakan system call diperlihatkan Pada Gambar 2.11.


Gambar 2.11 Prosedur pemanggilan rutin sistem operose lewat system call

Pada gambar diilustrasikan pemanggilan system call read unfuk membaca berkas. Pertama, program aplikasi memanggil rutin read (1) yang disediakan oleh pustaka API. Isi dari tutin read adalah mengisi ke register nomor system call yang berkaitan dengan rutin read lalu melakukan fungsi trap. Ketika trap terjadi maka akan dilakukan perpindahan modus eksekusi dari modus user ke modus kernel (2). Ketika berpindah ke modus kernel, komponen sistem operasi yang disebut dengan dispatch, akan memeriksa nomor system call yang disalin ke register lalu memeriksa rutin penanganannya di suatu tabel rutin interupsi (IST, Interrupt Service Table) (3). Selanjutnya rutin penanganan system call (ISR, interrupt Service Routine) akan dieksekusi (4). Setelah selesai, modus eksekusi dikembalikan ke modus user, dan kontrol eksekusi kembali lagi ke rutin pustaka API (5). Jika seluruh instruksi dalam read sudah dieksekusi, kontrol eksekusi dikembalikan ke program aplikasi (6).
Skenario trap dapat dianalogikan dengan mekanisme penarikan uang tunai di bank. Kita sebagai pelanggan (ibaratnya program aplikasi yang meminta layanan penarikan uang tunai, tidak dapat mengambil uang kita yang ada di brankas bank. Yang diperlukan adalah mengisi slip penarikan (ibarat pemanggilan pustaka API dengan mengisi nomor system call dan parameternya), dan menyerahkannya (sinyal trap) ke kasir (ibaratnya sebagai dispatcher). Kasir yang kemudian melakukan pengambilan uang di brankas (ibaratnya melakukan rutin sistem operasi).
Sejumlah layanan yang diberikan oleh sistem operasi Lewat system call pustaka API antara lain:

1. Penciptaan dan penghentian proses
Eksekusi suatu program diawali dengan penciptaan proses. Berkas kode instruksi program aplikasi umumnya disimpan pada media penyimpan sekunder. Ketika suatu program akan dieksekusi, seluruh ataupun sebagian kode instruksi program tersebut disalinkan ke memori, kemudian instruksi dieksekusi satu persatu oleh prosesor. Sistem operasi menyediakan antarmuka dan layanan untuk mengeksekusi program yang diminta oleh pengguna maupun program aplikasi. Seluruh aktivitas penyalinan kode program ke memori utama, eksekusi kode serta pemberhentian eksekusi difasilitasi oleh sistem operasi. Pengguna hanya butuh menentukan lokasi file program yang akan dieksekusi. Di UNIX ada system call bernama fork() dan execve() untuk menciptakan proses baru. Di windows ada fungsi CreateProcess() untuk melakukan hal serupa' untuk penghentian proses, digunakan system call exit() di UNIX, ataupun ExitProcess() di windows. Selain itu masih banyak system call lain yang berkaitan dengan pengelolaan proses seperti waitpid(), atau WaitForSingleObject() untuk operasi sinkronisasi proses.

2. Pengaksesan terhadap sistem berkas
Data-data keluaran program aplikasi maupun kode-kode instruksi program disimpan sebagai berkas pada media penyimpan sekunder seperti harddisk (umumnya magnetic disk), flash disk, CDROM, ataupun floppy disk. Gambar 2.12 menunjukan hierarki penataan sistem berkas pada keluarga sistem operasi windows. Media penyimpan seperti floppy disk dikelola sebagai suatu volume atau drive A. Sedangkan partisi-partisi dari harddisk dikelola sebagai driveC dan D dan F pada contoh diatas. Media optis seperti CDROM/DVDROM dikelola sebagai drive E. Pada setiap volume, berkas-berkas dikelompokkan dalam direktori-direktori sehingga membentuk suatu hierarki berkas.


Gambar 2.12 Hierarki sistem berkas pada sistem operasi Windows

Gambar 2.13 menunjukan contoh hierarki sistem berkas pada sistem operasi turunan UNIX. Pada sistem operasi UNIX, seluruh sistem. Berkas dari berbagai media (floppy,CDROM, disk) dikelola dalam satu hierarki tunggal dibawah direktori root(/). Sistem berkas dari suatu. media missalnya floppy disk ataupun CDROM, dapat dipasang atau dilepas dari hierarki dengan system call mount() ataupun umount(). Pada contoh gambar, diilustrasikan penggabungan sistem berkas floppy disk dengan mengasosiasikannya ke direktori mnt pada hierarki. Hal ini dapat dilakukan dengan perintah mount(‘dev/fd0’, ‘/mnt’,0). Semua media penyimpan diperlakukan sebagai subdirektori pada hierarki tunggal sistem berkas
UNIX.

Gambar 2.13 Hierarki sistem berkas pada sistem operasi Linux

System call memberikan pula layanan seperti membuka atau menutup berkas, mengubah nama, serta menghapus berkas. Selain itu, system call memberikan layanan pengelolan direktori seperti membuat, menghapus, dan mengubah nama direktori.
Untuk operasi I/O seperti pencetakan ke printer ataupun pembacaan dari scanner, UNIX memperlakukan peranti I/O sebagai suatu berkas, sedangkan pada sistem operasi Windows memperlakukan masing-masing peranti sebagai objek khusus. Misalkan pada UNIX, pencetakan data ke printer dapat dilakukan dengan perintah untuk menulis ke berkas printer yang berada dilokasi ‘/dev/lp’. Abstraksi semacam ini menghindarkan pemrogram dari kompleksitas beragam peranti I/O yang terhubung ke komputer.

3. Layanan lainnya

Layanan lain yang disediakan oleh sistem operasi lewat system call antara lain membaca waktu, mengirimkan sinyal ke sistem, mengubah direktori aktif. Pada sistem operasi Windows terdapat pula banyak system call untuk menciptakan elemen antarmuka grafis seperti Windows, warna, garis dan sebagainya.

Tidak ada komentar:

Posting Komentar