KERNEL
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 di atas 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.
Kernel adalah sebuah perangkat lunak yang membuat
komunikasi / mediator antara aplikasi komputer dan perangkat keras, yang
menyediakan pelayanan sistem seperti pengaturan memori untuk proses-proses yang
sedang berjalan, pengaturan file-file, input-output terhadap dan dari suatu
device dan masih banyak lagi fungsi tambahan yang lainnya. Intinya adalah
kernel merupakan suatu penghubung (antara software dan hardware).
Definisi yang lain mengatakan Kernel merupakan
bagian inti dari suatu sistem operasi, dengan kata lain dia adalah jantung dari
sistem operasi. Kernel ini mengendalikan kerja dasar dari sistem operasi dan
yang erat kaitannya dengan perangkat keras, misal pengelolaan memori (memori
management), pengelolaan proses (process management) termasuk job scheduling
dan context switching, pengelolaan Input Output (I/O) termasuk file system dan
driver perangkat I/O serta beberapa fungsi mendasar lainnya seperti kontrol
akses. 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.
Kernel sebagai jantungnya sistem operasi
menyediakan format yang sesuai dengan kebutuhan anda. Sebelum kita memilih
kernel sebaiknya kita dapat menentukan terlebih dahulu, kira-kira format kernel
yang bagaimana yang sesuai dengan kebutuhan yang diinginkan. Sistem kernel ada
berupa Modular dan Monolitik ,sebagai contoh jika sering gonta-ganti hardware,
sistem kernel yang modular akan lebih cocok daripada sistem kernel yang builtin
(monolitik). Kedua system ini mempunyai keuntungan dan kelebihan masing-masing.
1. Kernel Modular
Seperti pada kernel Linux mempunyai rancangan
modular. Pada saat boot time, hanya minimal resident kernel yang di-load ke
dalam memori. Ini di karenakan hanya modul-modul yang dibutuhkan saja serta di
inginkan user yang akan diproses, sebuah modul kernel dapat secara dinamik
di-load ke dalam memori.
Kemudian secara periode spesifik modul tidak ingin
di aktifkan maka modul dapat di hapus dari memori. Mekanisme dynamic loading
ini dinamakan kmod. Dengan kata lain modul tidak akan di-load apabila tidak
diinginkan dan modul akan di gunakan apabila di butuhkan. Salah satu keuntungan
kernel yang bersifat modular, onta-ganti hardware menjadi lebih mudah, karena
tinggal menge-probe suatu modul, atau jika belum ada hanya tinggal mem-build
satu modul saja. Kerugiannya adalah relatif rentan terhadapat masalah security,
karena biasanya script kiddies memasukkan suatu modul ke dalam kernel (dengan
harapan proses yang dimilikinya tidak diketahui oleh admin sistem yang
bersangkutan)
2. Kernel buildin(Monolitik)
Dengan Kernel monolitik lebih baik dari segi
security, sebuah kernel builtin (monolitik) akan relatif aman. Namun dari segi
kemudahan, jika kita menambah atau mengganti suatu hardware, maka otomatis
harus mengkompilasi ulang kernel .Namun demikian, skema kernel bagaimana yang
lebih sesuai, itu bisa diklarifikasi sesuai kebutuhan dan implementasi sistem
yang digunakan. Jika kernel monolitik ingin di jadikan modular, itu bisa
dilakukan oleh dari kernel monolitik, dengan cara setelah konfigurasi
ditetapkan dalam kernel monolitik dan di kompilasi maka dapat di ambil,
bagian-bagian mana saja yang akan dipisahkan untuk dijadikan modul-modul.
Fungsi kernel :
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.
membantu
eksekusi aplikasi dan mendukungnya dengan fitur abstraksi hardware.
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.
Beberapa desain kernel
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.
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.
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.
Contoh implementasi kernel
Windows
Pada sistem operasi Windows, kernel
ditangani oleh file kernel32.dll. Kernel ini menangani manajemen memori, operasi
masukan / keluaran dan interrupt. Ketika boot Windows, kernel32.dll
di-load ke dalam spasi protected memory sehingga spasi memorinya
tidak digunakan oleh aplikasi lain. Apabila ada aplikasi yang mencoba mengambil
spasi memori kernel32.dll, akan muncul pesan kesalahan "invalid
page fault".
|
||||||||||||||||||||||
Tidak ada komentar:
Posting Komentar