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.
Belum ada tanggapan untuk "Cara Kerja sistem Operasi Pada Komputer"
Post a Comment