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 sistemoperasi, seperti halnya manajemen proses, konkurensi
(concurrency), dan manajemen memori pada modul-modul kernel yang berjalan di dalam mode
supervisor.
Meskipun jika setiap
modul memiliki layanan operasi-operasi tersebut terpisah dari modul utama,
integrasi kode yang terjadi di dalam monolithic kernel sangatlah kuat, dan
karena semua modul berjalan di dalam address space yang sama,
sebuah bugdalam salah satu modul dapat merusak keseluruhan sistem.
Akan tetapi, ketika implementasi dilakukan dengan benar, integrasi komponen
internal yang sangat kuat tersebut justru akan mengizinkan fitur-fitur yang
dimiliki oleh sistem yang berada di bawahnya dieksploitasi secara efektif,
sehingga membuat sistem operasi dengan monolithic kernel sangatlah
efisien—meskipun sangat sulit dalam pembuatannya.
Pada sistem operasi
modern yang menggunakan monolithic kernel, seperti halnyaLinux, FreeBSD, Solaris, dan Microsoft
Windows, dapat memuat modul-modul yang dapat
dieksekusi pada saat kernel tersebut dijalankan sehingga
mengizinkan ekstensi terhadap kemampuan kernel sesuai kebutuhan, dan tentu saja
dapat membantu menjaga agar kode yang berjalan di dalam ruangan kernel (kernel-space)
seminim mungkin.
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).
Pendekatan mikrokernel berisi sebuah abstraksi yang sederhana terhadaphardware, dengan sekumpulan primitif
atau system call yang dapat digunakan untuk membuat sebuah sistem operasi
agar dapat berjalan, dengan layanan-layanan seperti manajemen thread, komunikasi antar address space, dan komunikasi antarproses. 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.
Dalam teorinya, sistem
operasi yang menggunakan microkernel disebut
jauh lebih stabil dibandingkan dengan monolithic kernel, karena
sebuah server yang gagal bekerja, tidak akan menyebabkan kernel menjadi
tidak dapat berjalan, dan servertersebut akan dihentikan oleh
kernel utama. Akan tetapi, dalam prakteknya, bagian dari system state dapat
hilang oleh server yang gagal bekerja tersebut, dan biasanya untuk melakukan
proses eksekusi aplikasi pun menjadi sulit, atau bahkan untuk menjalankan
server-server lainnya.
Sistem operasi yang
menggunakan microkernel umumnya secara dramatis memiliki
kinerja di bawah kinerja sistem operasi yang menggunakan monolithic
kernel. Hal ini disebabkan oleh adanya overhead yang
terjadi akibat proses input/output dalam kernel yang ditujukan
untuk mengganti konteks (context switch) untuk memindahkan data antara aplikasi dan server.
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
- Minix, kernel yang dikembangkan oleh Andrew Tanenbaum untuk tujuan edukasi
- Symbian OS, sebuah sistem operasi yang populer digunakan pada hand phone, handheld device, embedded device, dan PDA Phone.
Kernel hibrida
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 ruangan user. 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.
- Novell NetWare, sebuah sistem operasi yang pernah populer sebagaisistem operasi jaringan berbasis IBM PC dan kompatibelnya.
- Microsoft Windows NT (dan semua keturunannya).
Exokernel
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.
Kernel-kernel klasik
yang populer seperti halnya monolithic dan microkernel melakukan abstraksi
terhadap hardware dengan menyembunyikan semua sumber daya yang berada di bawah
hardware abstraction layer atau di balik driver untuk hardware. Sebagai contoh,
jika sistem operasi klasik yang berbasis kedua kernel telah mengalokasikan
sebuah lokasi memori untuk sebuah hardware tertentu, maka hardware lainnya
tidak akan dapat menggunakan lokasi memori tersebut kembali.
Exokernel mengizinkan akses
terhadap hardware secara langsung pada tingkat yang rendah: aplikasi dan
abstraksi dapat melakukan request sebuah alamat memori spesifik baik itu berupa
lokasi alamat physical memory dan blok di dalam hard disk. Tugas kernel hanya
memastikan bahwa sumber daya yang diminta itu sedang berada dalam keadaan
kosong—belum digunakan oleh yang lainnya—dan tentu saja mengizinkan aplikasi
untuk mengakses sumber daya tersebut. Akses hardware pada tingkat rendah ini
mengizinkan para programmer untuk mengimplementasikan sebuah abstraksi yang
dikhususkan untuk sebuah aplikasi tertentu, dan tentu saja mengeluarkan sesuatu
yang tidak perlu dari kernel agar membuat kernel lebih kecil, dan tentu saja
meningkatkan performa.
Tidak ada komentar:
Posting Komentar