Sering saya di tanya apa itu kernel dan
sungguh tragis sekali banyak yang tidak tahu apa itu kernel dan
bagaimana cara kerjanya. akhirnya saya tulisa artikel ini dengan
kompilasi berbagai sumber. semoga bermanfaat
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 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.
Beberapa desain kernel sistem operasi
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. Pada hybrid 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 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.
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.
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.











Tidak ada komentar:
Posting Komentar