JENIS-JENIS KERNEL
Jumat, 01 Maret 2013
0
komentar
Kernel
monolitik
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.
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 bug dalam 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 halnya Linux, 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).
Mikrokernel
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 antar address 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.
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
server tersebut 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 sebagai sistem 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.
Exokernel biasanya menggunakan library yang
disebut dengan libOS untuk melakukan abstraksi. libOS memungkinkan para pembuat
aplikasi untuk menulis abstraksi yang berada pada level yang lebih tinggi,
seperti halnya abstraksi yang dilakukan pada sistem operasi tradisional, dengan
menggunakan cara-cara yang lebih fleksibel, karena aplikasi mungkin memiliki
abstraksinya masing-masing. Secara teori, sebuah sistem operasi berbasis
Exokernel dapat membuat sistem operasi yang berbeda seperti halnya Linux, UNIX, dan Windows dapat berjalan di atas sistem operasi tersebut.POLSRI
0 komentar:
Posting Komentar