Jawab:
Cara Kerja Sistem Operasi (SO)
Dalam
sebuah perangkat komputer, kernel merupakan komponen inti dari Sistem Operasi yang
berjalan dalam perangkat tersebut. Kernel bertugas untuk mengatur pembagian
sumber daya system komunikasi antara komponen hardware dan software. Kernel
menghubungkan antara software aplikasi dan hardware komputer. Ia menyediakan abstraction layer pada level terendah
untuk resource-resource seperti memori, prosesor dan perangkat I/O di mana
suatu software aplikasi harus mengontrol resource-resource tersebut agar dapat
berfungsi. Kernel mampu menyediakan fasilitas seperti ini bagi proses-proses
aplikasi melalui mekanisme IPC (Inter
Process Communication)
dan System call.
Dalam
banyak kasus, boot loader mulai mengeksekusi kernel dalam mode supervisor.
Kernel kemudian menginisialiasi diri sendiri dan memulai proses pertama.
Setelah itu, kernel tidak mengekseskusi secara langsung, tapi hanya merespon
kepada even eksternal. Sebagai tambahan, kernel biasanya menyediakan loop yang
dieksekusi ketika tidak ada proses yang tersedia untuk dijalankan; hal ini
biasnya disebut idle process.
Tujuan
utama dari adanya kernel adalah untuk mengatur pembagian sumber daya dan
program mana yang boleh mengakses dan menggunakan sumber daya tersebut. Pada
umumnya, sumber daya tersebut antara lain adalah CPU, memori dan Perangkat I/O.
· Central
Processing Unit (CPU).
Sebagai bagian utama komputer, CPU bertugas dalam mengeksekusi
program atau proses. Dalam hal ini, kernel bertugas menentukan setiap saat
berapa banyak program yang harus dialokasikan ke CPU.
· Memori Komputer.
Memori digunakan untuk menyimpan instruksi program dan juga data.
Keduanya dibutuhkan oleh memori agar suatu program dapat dieksekusi. Biasanya
beberapa program akan berusaha mengakses memori, bahkan seringkali meminta
memori melebihi yang dimiliki komputer. Di sinilah kernel bertugas untuk menentukan
porsi pemakaian memori yang dapat dipakai oleh tiap program dan menentukan apa
yang akan dikerjakan ketika tidak cukup tersedia memori.
·
Perangkat I/O.
Beberapa perangkat I/O yang umumnya dipakai, misalnya: keyboard, mouse,
monitor, Hard Disk, printer, scanner, dsb. Kernel melanjutkan request dari
suatu aplikasi yang ingin melakukan suatu aksi I/Okepada perangkat yang sesuai
dan menyediakan metode yang sesuai untuk memakai perangkat tersebut.
a. Pengaturan Proses
Tugas utama kernel adalah membantu eksekusi aplikasi dan
mendukungnya dengan fitur seperti abstraksi hardware. Suatu proses
mendefinisikan seberapa porsi memori yang dapat diakses oleh suatu aplikasi.
Pengaturan proses kernel harus memperhitungkan perangkat yang dibawa oleh hardware
untuk perlindungan memori. Untuk menjalankan aplikasi, sebuah kernel pertama
kali harus menyediakan space address untuk aplikasi, lalu me-load file yang
berisi kode aplikasi ke dalam memori, mempersiapkan stack untuk program dan
percabangan ke lokasi lain dalam program, dan kemudian baru memulai eksekusi
program.
Dalam sebuah
sistem pre-emptive multitasking, kernel akan memberi slot waktu kepada setiap
program dan berpindah dari satu proses ke proses yang lain dengan cepat hingga
terlihat seperti proses-proses ini dieksekusi secara bersamaan. Kernel
menggunakan algoritma penjadwalan untuk menentukan proses mana yang akan
dikerjakan berikutnya dan berapa lama waktu yang akan diberikan. Algoritma yang
dipilih mungkin akan mengijinkan beberapa proses memiliki prioritas yang lebih
tinggi daripada yang lain. Umumnya kernel juga menyediakan cara agar
proses-proses ini dapat saling berkomunikasi; hal ini dikenal sebagai
Inter-Process Communication (IPC). Pendekatan utama IPC ini adalah untuk shared
memory, message passing dan remote procedure call.
b.
Pengaturan Memori
Kernel memiliki
akses penuh ke memori sistem dan harus memberikan ijin kepada proses-proses
untuk mengakses memori secara aman ketika membutuhkan. Langkah pertama yang
dilakukan untuk melakukan hal ini di antaranya adalah virtual addressing.
Virtual addressing menijinkan kernel untuk menjadikan suatu alamat fisik untuk
tampil sebagai alamat lain, alamat virtual. Space alamat virtual mungkin
berbeda untuk masing-masing proses; memori yang diakses suatu proses pada
alamat virtual tertentu mungkin berbeda dengan memori
yang
diakses proses lain pada alamat yang sama. Hal ini menyebabkan tiap program
seakan
menjadi satu-satunya program yang berjalan dan karenanya dapat mencegah
terjadinya
crash antar program.
Dalam kebanyakan
sistem, alamat virtual suatu program dapat berupa data yang sebenarnya tidak
ada dalam memori. Layer abstraksi yang disediakan virtual addressing
mengijinkan Sistem Operasi untuk menggunakan penyimpan data, seperti Hard Disk,
untuk menyimpan apa yang mestinya ada di memori utama (RAM).
Akibatnya, Sistem
Operasi dapat mengijinkan program untuk memakai memori melebihi memori fisik
yang yang dimiliki oleh komputer. Virtual addressing juga mengijinkan dibuatnya
partisi vritual memori di dua area yang terpisah, satu dipakai oleh kernel
(kernel space) dan yang lain untuk aplikasi (user space). Aplikasi tidak
diijinkan oleh CPU untuk memakai alamat kernel, yang akhirnya hal ini akan
mencegah agar aplikasi tidak merusak kernel.
c. Pengaturan perangkat
Untuk menjalankan
fungsinya, aplikasi membutuhkan akses ke perangkat-perangkat yang terhubung ke
komputer, yang dikontrol oleh kernel melalui device driver. Sebagai contoh,
untuk menampilkan sesuatu di layar, sebuah aplikasi harus membuat request ke
kernel. Kernel lalu akan melanjutkan request tersebut ke driver display yang
kemudian akan bertanggung jawab mem-plot karakter/pixel. Kernel harus
memelihara sejumlah perangkat yang tersedia. Daftar perangkat ini dapat berupa
plug and play (dideteksi oleh Sistem Operasi saat perangkat dijalankan),
di-configure oleh user, atau bahkan advance (misal dalam system embedded di
mana kernel akan diubah jika hardware diubah).
d. System calls
Untuk mengakses
layanan yang disediakan oleh kernel, biasanya kernel menyediakan library C atau
API (Application Programming Interface) yang selanjutnya akan melibatkan fungsi
kernel yang berhubungan.
Metode untuk
melibatkan fungsi kernel berbeda-beda antar kernel. Jika isolasi memori sedang
dipakai, tidak mungkin bagi proses untuk memanggil kernel secara langsung,
karena hal itu merupakan pelanggaran aturan akses kontrol dari prosesor.
Beberapa
kemungkinan antara lain;
·
Menggunakan
interrupt software-simulated. Metode ini tersdia dalam hampir
semua hardware,
karenanya sangat umum.
· Menggunakan call
gate. Call gate adalah address khusus di mana alamat tersebut ditambahkan dalam
daftar yang disimpan dalam memori kernel yang diketahui prosesor. Ketika
prosesor mendeteksi call ke lokasi tersebut, prosesor kemudian mengalihkannya
ke lokasi target tanpa menyebabkan pelanggaran akses.
· Menggunakan
instruksi system call khusus. Teknik ini membutuhkan dukungan
hardware khusus,
yang mana arsitektur umum (khususnya x86) mungkin kesulitan.
· Menggunakan
memory-based queue. Sebuah aplikasi yang membuat request dalam jumlah besar
tapi tidak perlu menunggu hasilnya dapat menambahkan detil request-nya ke suatu
area memori yang di-scan secara priodik oleh kernel untuk menemukan request.
Tidak ada komentar:
Posting Komentar