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 di- load 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.
Ada 4 kategori kernel:
1. Monolithic kernel. Kernel yang menyediakan abstraksi perangkat keras yang kaya dan tangguh.
2. Microkernel. Kernel yang menyediakan hanya sekumpulan kecil abstraksi
perangkat keras sederhana, dan menggunakan aplikasi-aplikasi yang
disebut sebagai server untuk menyediakan fungsi-fungsi lainnya.
3. Hybrid (modifikasi dari microkernel). Kernel yang mirip microkernel,
tetapi ia juga memasukkan beberapa kode tambahan di kernel agar ia
menjadi lebih cepat.
4. Exokernel. Kernel yang tidak menyediakan sama sekali abstraksi
hardware, tapi ia menyediakan sekumpulan pustaka yang menyediakan
fungsi-fungsi akses ke perangkat keras secara langsung atau
hampir-hampir langsung.
Dari keempat kategori kernel yang disebutkan diatas, kernel Linux
termasuk kategori monolithic kernel. Kernel Linux berbeda dengan sistem
Linux. Kernel Linux merupakan sebuah perangkat lunak orisinil yang
dibuat oleh komunitas Linux, sedangkan sistem Linux, yang dikenal saat
ini, mengandung banyak komponen yang dibuat sendiri atau dipinjam dari
proyek pengembangan lain.
Kernel Linux pertama yang dipublikasikan adalah versi 0.01, pada tanggal
14 Maret 1991. Sistem berkas yang didukung hanya sistem berkas Minix.
Kernel pertama dibuat berdasarkan kerangka Minix (sistem UNIX kecil yang
dikembangkan oleh Andy Tanenbaum). Tetapi, kernel tersebut sudah
mengimplementasi proses UNIX secara tepat.
Pada tanggal 14 Maret 1994 dirilis versi 1.0, yang merupakan tonggak
sejarah Linux. Versi ini adalah kulminasi dari tiga tahun perkembangan
yang cepat dari kernel Linux. Fitur baru terbesar yang disediakan adalah
jaringan. Versi 1.0 mampu mendukung protokol standar jaringan TCP/IP.
Kernel 1.0 juga memiliki sistem berkas yang lebih baik tanpa
batasan-batasan sistem berkas Minix. Sejumlah dukungan perangkat keras
ekstra juga dimasukkan ke dalam rilis ini. Dukungan perangkat keras
telah berkembang termasuk diantaranya floppy-disk, CD-ROM, sound card,
berbagai mouse, dan keyboard internasional. Dukungan juga diberikan
terhadap modul kernel yang loadable dan unloadable secara dinamis.
Satu tahun kemudian dirilis kernel versi 1.2. Kernel ini mendukung
variasi perangkat keras yang lebih luas. Pengembang telah memperbaharui
networking stack untuk menyediakan support bagi protokol IPX, dan
membuat implementasi IP lebih lengkap dengan memberikan fungsi
accounting dan firewalling. Kernel 1.2 ini merupakan kernel Linux
terakhir yang PC-only. Konsentrasi lebih diberikan pada dukungan
perangkat keras dan memperbanyak implementasi lengkap pada fungsi-fungsi
yang ada.
Pada bulan Juni 1996, kernel Linux 2.0 dirilis. Versi ini memiliki dua
kemampuan baru yang penting, yaitu dukungan terhadap multiple
architecture dan multiprocessor architectures. Kode untuk manajemen
memori telah diperbaiki sehingga kinerja sistem berkas dan memori
virtual meningkat. Untuk pertama kalinya, file system caching
dikembangkan ke networked file systems, juga sudah didukung writable
memory mapped regions. Kernel 2.0 sudah memberikan kinerja TCP/IP yang
lebih baik, ditambah dengan sejumlah protokol jaringan baru. Kemampuan
untuk memakai remote netware dan SMB (Microsoft LanManager) network
volumes juga telah ditambahkan pada versi terbaru ini. Tambahan lain
adalah dukungan internal kernel threads, penanganan dependencies antara
modul-modul loadable, dan loading otomatis modul berdasarkan permintaan
(on demand). Konfigurasi dinamis dari kernel pada run time telah
diperbaiki melalui konfigurasi interface yang baru dan standar.
Semenjak Desember 2003, telah diluncurkan Kernel versi 2.6, yang dewasa ini (2008) telah mencapai patch versi 2.6.26.1. Hal-hal yang berubah dari versi 2.6 ini ialah:
* Subitem M/K yang dipercanggih.
* Kernel yang pre-emptif.
* Penjadwalan Proses yang dipercanggih.
* Threading yang dipercanggih.
* Implementasi ALSA (Advanced Linux Sound Architecture) dalam kernel.
* Dukungan sistem berkas seperti: ext2, ext3, reiserfs, adfs, amiga ffs,
apple macintosh hfs, cramfs, jfs, iso9660, minix, msdos, bfs, free
vxfs, os/2 hpfs, qnx4fs, romfs, sysvfs, udf, ufs, vfat, xfs, BeOS befs
(ro), ntfs (ro), efs (ro).
semoga bermanfaat...