Sebuah
kernel sistem operasi tidak bisa di contoh dan dibutuhkan untuk menjalankan
sebuah komputer. Program dapat langsung dijalankan secara langsung di dalam
sebuah mesin (contohnya adalah CMOS Setup) sehingga para pembuat program
tersebut membuat program tanpa adanya dukungan dari sistem operasi atau
hardware abstraction.
Cara kerja seperti ini, adalah cara kerja yang digunakan pada zaman awal-awal dikembangkannya komputer (pada sekitar tahun 1950). Kerugian dari diterapkannya metode ini adalah pengguna harus melakukan reset ulang komputer tersebut dan memuatkan program lainnya untuk berpindah program, dari satu program ke program lainnya. Selanjutnya, para pembuat program tersebut membuat beberapa komponen program yang sengaja ditinggalkan di dalam komputer, seperti halnya loader atau debugger, atau dimuat dari dalam ROM (Read-Only Memory). Seiring dengan perkembangan zaman komputer yang mengalami akselerasi yang signifikan, metode ini selanjutnya membentuk apa yang disebut dengan kernel sistem operasi.
Cara kerja seperti ini, adalah cara kerja yang digunakan pada zaman awal-awal dikembangkannya komputer (pada sekitar tahun 1950). Kerugian dari diterapkannya metode ini adalah pengguna harus melakukan reset ulang komputer tersebut dan memuatkan program lainnya untuk berpindah program, dari satu program ke program lainnya. Selanjutnya, para pembuat program tersebut membuat beberapa komponen program yang sengaja ditinggalkan di dalam komputer, seperti halnya loader atau debugger, atau dimuat dari dalam ROM (Read-Only Memory). Seiring dengan perkembangan zaman komputer yang mengalami akselerasi yang signifikan, metode ini selanjutnya membentuk apa yang disebut dengan kernel sistem operasi.
Selanjutnya,
para arsitek sistem operasi mengembangkan kernel sistem operasi yang pada
akhirnya terbagi menjadi empat bagian yang secara desain berbeda, sebagai
berikut:
1.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.
2.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.
3.Kernel
hibrida. Kernel hibrida adalah pendekatan desain microkernel yang dimodifikasi.
Pada hybrid kernel, terdapat beberapa tambahan kode di dalam ruangan kernel
untuk meningkatkan performanya.
4.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.
A.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:
1.Kernel
sistem operasi UNIX tradisional, seperti halnya kernel dari sistem operasi UNIX
keluarga BSD (NetBSD, BSD/I, FreeBSD, dan lainnya).
2.Kernel
sistem operasi GNU/Linux, Linux.
3.Kernel
sistem operasi Windows (versi 1.x hingga 4.x; kecuali Windows NT).
B.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:
1.IBM AIX,
sebuah versi UNIX dari IBM
2.Amoeba,
sebuah kernel yang dikembangkan untuk tujuan edukasi
3.Kernel
Mach, yang digunakan di dalam sistem operasi GNU/Hurd, NexTSTEP, OPENSTEP, dan
Mac OS/X
4.Minix,
kernel yang dikembangkan oleh Andrew Tanenbaum untuk tujuan edukasi
5.Symbian
OS, sebuah sistem operasi yang populer digunakan pada hand phone, handheld
device, embedded device, dan PDA Phone.
C.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:
1.BeOS,
sebuah sistem operasi yang memiliki kinerja tinggi untuk aplikasi multimedia.
2.Novell
NetWare, sebuah sistem operasi yang pernah populer sebagai sistem operasi
jaringan berbasis IBM PC dan kompatibelnya.
3.Microsoft
Windows NT (dan semua keturunannya).
D.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.
Tidak ada komentar:
Posting Komentar