Dalam ilmu komputer, kernel adalah
suatu perangkat lunak yang menjadi bagian utama dari sebuah sistem
operasi. Tugasnya melayani bermacam program aplikasi untuk mengakses perangkat
keras komputer secara aman.
Karena akses terhadap perangkat
keras terbatas, sedangkan ada lebih dari satu program yang harus dilayani
dalam waktu yang bersamaan, maka kernel juga bertugas untuk mengatur kapan dan
berapa lama suatu program dapat menggunakan satu bagian perangkat keras
tersebut. Hal tersebut dinamakan sebagai multi plexing.
Akses kepada perangkat keras
secara langsung merupakan masalah yang kompleks, oleh karena itu kernel
biasanya mengimplementasikan sekumpulan abstraksi hardware.
Abstraksi-abstraksi tersebut merupakan sebuah cara untuk menyembunyikan
kompleksitas, dan memungkinkan akses kepada perangkat keras menjadi mudah dan
seragam. Sehingga abstraksi pada akhirnya memudahkan pekerjaan programmer.
Untuk menjalankan sebuah komputer
kita tidak harus menggunakan kernel sistem operasi. Sebuah program dapat saja
langsung diload dan dijalankan di atas mesin 'telanjang' komputer,
yaitu bilamana pembuat program ingin melakukan pekerjaannya tanpa bantuan
abstraksi perangkat keras atau bantuan sistem operasi. Teknik ini digunakan
oleh komputer generasi awal, sehingga bila kita ingin berpindah dari satu
program ke program lain, kita harus mereset dan meload kembali
program-program tersebut.
Selanjutnya, para arsitek sistem
operasi mengembangkan kernel sistem operasi yang pada akhirnya terbagi menjadi
empat bagian yang secara desain berbeda, sebagai berikut:
Kernel monolitik
Kernel monolitik mengintegrasikan
banyak fungsi di dalam kernel dan menyediakan lapisan abstraksi
perangkat keras secara penuh terhadap perangkat keras yang berada di
bawah sistem operasi. Pendekatan kernel monolitik didefinisikan
sebagai sebuah antarmuka virtual yang berada pada tingkat tinggi di atas perangkat
keras, dengan sekumpulan primitif atau system call untuk
mengimplementasikan layanan-layanan sistem operasi, seperti halnya
manajemen proses, konkurensi (concurrency), dan manajemen memori pada
modul-modul kernel yang berjalan di dalam mode supervisor.
Di bawah ini ada beberapa sistem
operasi yang menggunakan Monolithic kernel :
- Kernel sistem operasi UNIX tradisional, seperti halnya kernel dari sistem operasi UNIX keluarga BSD (NetBSD), BSD/I, FreeBSD, dan lainnya).
- Kernel sistem operasi GNU/Linux, Linux.Kernel sistem operasi Windows (versi 1.x hingga 4.x; kecuali Windows NT).
Mikrokernel
Mikrokernel menyediakan sedikit
saja dari abstraksi perangkat keras dan menggunakan aplikasi yang
berjalan di atasnya—yang disebut dengan server—untuk melakukan beberapa
fungsionalitas lainnya.
Pendekatan mikrokernel berisi
sebuah abstraksi yang sederhana terhadap hardware, dengan sekumpulan
primitif atau system call yang dapat digunakan untuk membuat sebuah
sistem operasi agar dapat berjalan, dengan layanan-layanan seperti manajemen thread,
komunikasi antaraddress space, dan komunikasi antar proses.
Layanan-layanan lainnya, yang biasanya disediakan oleh kernel, seperti halnya
dukungan jaringan, pada pendekatan microkernel justru
diimplementasikan di dalam ruangan pengguna (user-space), dan disebut
dengan server.
Server atau disebut sebagai peladen adalah
sebuah program, seperti halnya program lainnya. Server dapat mengizinkan
sistem operasi agar dapat dimodifikasi hanya dengan menjalankan program atau
menghentikannya. Sebagai contoh, untuk sebuah mesin yang kecil tanpa dukungan
jaringan, server jaringan (istilah server di sini tidak
dimaksudkan sebagai komputer pusat pengatur jaringan) tidak perlu dijalankan.
Pada sistem operasi tradisional yang menggunakan monolithic kernel,
hal ini dapat mengakibatkan pengguna harus melakukan rekompilasi terhadap
kernel, yang tentu saja sulit untuk dilakukan oleh pengguna biasa yang awam.
Beberapa sistem operasi yang
menggunakan microkernel :
- IBM AIX, sebuah versi UNIX dari IBM
- Amoeba, sebuah kernel yang dikembangkan untuk tujuan edukasi.
- Kernel Mach, yang digunakan di dalam sistem operasi GNU/Hurd, NexTSTEP,OPENSTEP, dan Mac OS/X.
- Symbian OS, sebuah sistem operasi yang populer digunakan pada hand phone, handheld device, embedded device, dan PDA Phone.
Kernel hibrida
Kernel Hibrida adalah pendekatan
desain microkernel yang dimodifikasi. Pada hybrid kernel, terdapat
beberapa tambahan kode di dalam ruangan kernel untuk meningkatkan performanya.
Kernel hibrida aslinya
adalah mikrokernel yang memiliki kode yang tidak menunjukkan bahwa kernel
tersebut adalah mikrokernel di dalam ruangan kernel-nya. Kode-kode
tersebut ditaruh di dalam ruangan kernel agar dapat dieksekusi
lebih cepat dibandingkan jika ditaruh di dalam ruanganuser. Hal ini
dilakukan oleh para arsitek sistem operasi sebagai solusi awal terhadap masalah
yang terjadi di dalam mikrokernel kinerja.
Beberapa orang banyak yang
bingung dalam membedakan antara kernel hibrida dan kernel monolitik yang dapat
memuat modul kernel setelah proses booting, dan cenderung menyamakannya.
Antara kernel hibrida dan kernel monolitik jelas berbeda. Kernel hibrida
berarti bahwa konsep yang digunakannya diturunkan dari konsep desain kernel
monolitik dan mikrokernel. Kernel hibrida juga memiliki secara spesifik
memiliki teknologi pertukaran pesan (message passing) yang digunakan
dalam mikrokernel, dan juga dapat memindahkan beberapa kode yang seharusnya
bukan kode kernel ke dalam ruangan kode kernel karena alasan kinerja.
Di bawah ini adalah beberapa
sistem operasi yang menggunakan kernel hibrida :
- BeOS, sebuah sistem operasi yang memiliki kinerja tinggi untuk aplikasi multimedia.
- Microsoft Windows NT (dan semua keturunannya).
Exokernel
Exokernel menyediakan hardware
abstraction secara minimal, sehingga program dapat mengakses hardware secara
langsung. Dalam pendekatan desain exokernel, library yang dimiliki oleh sistem
operasi dapat melakukan abstraksi yang mirip dengan abstraksi yang dilakukan
dalam desain monolithic kernel.
Sebenarnya, Exokernel bukanlah
pendekatan kernel sistem operasi yang umum—seperti halnya microkernel atau
monolithic kernel yang populer, melainkan sebuah struktur sistem operasi yang
disusun secara vertikal.
Ide di balik exokernel adalah
untuk memaksa abstraksi yang dilakukan oleh developer sesedikit mungkin,
sehingga membuat mereka dapat memiliki banyak keputusan tentang abstraksi
hardware. Exokernel biasanya berbentuk sangat kecil, karena fungsionalitas yang
dimilikinya hanya terbatas pada proteksi dan penggandaan sumber daya.
source : wikipedia.org
Tidak ada komentar:
Posting Komentar