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
multiplexing.
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 programer.
Untuk menjalankan sebuah komputer kita tidak harus menggunakan kernel
sistem operasi. Sebuah program dapat saja langsung diload dan
dijalankan diatas 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.
Sebuah kernel sistem operasi tidak harus ada 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.
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.
- 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.
- Kernel hibrida. Kernel hibrida adalah pendekatan desain microkernel yang dimodifikasi. Padahybrid kernel, terdapat beberapa tambahan kode di dalam ruangan kernel untuk meningkatkan performanya.
- 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.
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 denganmonolithic
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 saatkernel 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 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.
Source : Wikipedia
Source : Wikipedia
No comments:
Post a Comment