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.
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