Tekno

Apa Itu Kernel? Apa Hubungannya Dengan Linux?

Kernel adalah sebuah program yang merupakan inti pokok dari sebuah sistem operasi. Kernel memiliki kontrol yang komplit atas segala sesuatu yang berlangsung dalam sistem. Kernel berbeda dengan shell (seperti bash, csh atau ksh dalam sistem operasi unix-like), shell adalah sebuah program (umumnya CLI) yang berinteraksi langsung dengan pengguna dan merupakan bagian terluar dari sebuah sistem operasi (bukan inti), Sedangkan kernel sendiri tidak berinteraksi langsung dengan pengguna, tapi cenderung berinteraksi dengan shell dan program lain, juga perangkat keras pada sistem termasuk prosesor (CPU), memory dan disk drive.

Pada saat booting, kernel adalah bagian pertama dari sistem operasi yang dimuat kedalam memory, dan akan tetap berada dalam memory selama komputer digunakan. Dengan demikian, penting bagi kernel untuk tetap sekecil mungkin sambil tetap memberikan layanan yang dibutuhkan oleh bagian lain dari sistem operasi dan berbagai program aplikasi.

Karena kesalahan kecil sekalipun dapat memberikan efek fatal pada keseluruhan sistem operasi maka kode kernel dimuat kedalam bagian memory yang terlindungi untuk mencegahnya dari perubahan. Kernel memiliki tugas seperti: mengeksekusi proses dan menangani interupsi. Semua tugas kernel berjalan dalam kernel space sementara segala sesuatu yang dilakukan pengguna, seperti menulis teks menggunakan editor teks atau menjalankan program menggunakan GUI berjalan dalam user space. Pemisahan ini dibuat untuk mencegah data pengguna dan data kernel saling mengganggu yang mengakibatkan penurunan performa atau sistem tidak stabil (bahkan crash).

Pada saat komputer crash, sebenarnya yang mengalami crash adalah kernel. Jika hanya satu program yang crash namun sistem masih beroperasi maka kernel tidak mengalami crash. Crash adalah suatu keadaan dimana sebuah program, entah itu aplikasi pengguna ataupun bagian dari sistem operasi berhenti menjalankan fungsi sebagaimana yang diharapkan. Pengguna akan melihat segala sesuatu yang ada dalam layarnya berhenti.

Kernel menyediakan layanan dasar untuk bagian-bagian lain dari sistem operasi, khususnya manajemen memory, proses, file dan I/O (input/output). Bagian lain dari sistem operasi dan program aplikasi meminta layanan ini melalui sekumpulan antarmuka program yang sudah ditentukan disebut dengan system call.

Kemungkinan, aspek dari kernel yang jelas dirasa oleh pengguna adalah manajemen proses, yaitu bagian dari kernel yang memastikan tiap proses memperoleh gilirannya untuk berjalan dalam prosesor dan proses individu tidak saling mengganggu. Sebuah proses disebut juga task.

Kandungan dari kernel beraneka ragam, bergantung dari sistem operasi. Namun umumnya mereka memiliki:

  • scheduler
  • supervisor
  • interrupt handler
  • memory manager

Jangan mencampuradukan antara kernel dengan BIOS (Basic Input/output system). BIOS adalah program tersendiri yang tersimpan dalam sebuah chip pada motherboard. Bios digunakan saat proses booting guna menginisialisasi hardware dan memuat kernel kedalam memory. Sementara BIOS selalu menetap dalam komputer dan spesifik untuk hardware tertentu, kernel dapat ditukar atau diperbaharui dengan mengubah atau memperbaharui sistem operasi. Pada Linux kernel dapat dengan mudah diganti atau diubah.

Kebanyakan kernel dikembangkan untuk sistem operasi yang spesifik, dan biasanya hanya ada satu versi yang tersedia untuk setiap sistem operasi. Contohnya: kernel Microsoft Windows 2000 hanya satu-satunya kernel bagi Microsoft Windows 2000 begitu juga dengan Microsoft Windows 98. Linux jauh lebih fleksibel karena tersedia banyak versi dari kernel Linux dan tiap kernel dapat dimodifikasi dengan berbagai cara.

Hanya sedikit kernel yang didesain cocok dengan sistem operasi manapun, salah satu desain kernel seperti ini yang paling terkenal adalah kernel Mach, yang dikembangkan di universitas Carnegie-Mellon dan digunakan oleh  sistem operasi OS X Macintosh.

Komputer tidak harus memiliki kernel, alasannya karena komputer juga tidak harus memiliki sistem operasi. Sangat mungkin untuk langsung memuat dan menjalankan program langsung ke mesin, namun hal ini sangat tidak praktis. Faktanya komputer generasi pertama bisa berjalan tanpa sistem operasi, namun akhirnya disadari bahwa efisiensi dan kenyamanan dapat diperoleh dengan menyimpan program utilitas berukuran kecil, seperti program loader dan debugger dalam memory, program-program ini perlahan berkembang menjadi kernel sistem operasi.

Terminologi kernel seringkali digunakan dalam buku dan diskusi mengenai Linux. Sebaliknya jarang sekali digunakan pada saat mendiskusikan sistem operasi lain. Hal ini disebabkan sangat mungkin untuk mengkonfigurasi kernel Linux, dan para pengguna dianjurkan untuk mempelajari cara mendownload lalu memasang versi kernel terbaru dan memodifikasinya. Bertolak belakang dengan sisem operasi Microsoft Windows, sangat jarang mendiskusikan kernel karena tidak dapat ditukar atau dimodifikasi.

Kategori Kernel

Kernel dapat diklasifikasi kedalam 4 kategori: monolithic kernels, microkernels, hybrid kernels dan exokernels. masing-masing kategori memiliki pembela fanatik dan pencela.

Monolithic kernels, yang digunakan oleh sistem operasi unix-like, berisi semua fungsi inti dari sistem operasi dan driver. Fitur Monolithic kernel modern seperti Linux dan FreeBSD memiliki kemampuan untuk memuat module pada runtime.

Microkernels umumnya hanya menyediakan layanan minimum, seperti menetapkan memory address space, interprocess communication (IPC) dan manajemen proses. Fungsi lain, seperti manajemen hardware diimplementasikan sebagai proses yang berjalan secara mandiri. Contoh sistem operasi microkernels adalah Mach, Mac OS X, MINIX dan Hurd.

Hybrid kernels serupa dengan microkernels kecuali kode tambahan pada kernel space, sehingga kode tersebut dapat berjalan dengan baik daripada berjalan pada user space. Kebanyakan sistem operasi modern menggunakan hybrid kernels seperti Microsoft Windows dan DragonFly BSD.

Exokernels masih dalam tahap eksperimen untuk desain sistem operasi, exokernels sendiri sangat kecil, namun menyertakan Libary Operating System, sehingga membuatnya mungkin untuk menjalankan aplikasi Windows dan Linux secara bersamaan.

Pada awal 90’an, banyak ilmuwan komputer beranggapan monolithic kernel sudah kuno, mereka memprediksi microkernels akan merevolusi desain sistem operasi. Anggapan ini mengakibatkan perseteruan antara Linux Torvalds yang pada masa itu mengembangkan Linux berdasarkan monolithic kernel dengan Andrew Tanenbaum-pengembang MINIX OS, perdebatan panas mereka dikenal sebagai flame war.

Pembela microkernels menekankan bahwa monolithic kernel memiliki kekurangan, yaitu error pada kernel akan mengakibatkan keseluruhan sistem crash, sedangkan pada microkernel, jika terjadi crash pada proses masih mungkin untuk mencegah crash pada keseluruhan sistem dengan mematikan proses yang mengalami permasalahan. Meskipun sedikit sensitif, pada kenyataannya keuntungan microkernels ini dipertanyakan, karena sistem operasi dengan monolithic kernels seperti Linux dapat bekerja dengan amat stabil selama bertahun-tahun tanpa sekalipun crash.

Kekurangan lain dari monolithic kernel yang dikutip adalah tidak portable, bahwa kernel harus dibuat lagi untuk setiap arsitektur (tipe prosesor), namun faktanya, hal ini juga tidak menghalangi Linux untuk bekerja pada prosesor manapun.

Monolithic kernel juga kelihatannya memiliki source code yang dapat membengkak sewaktu-waktu, namun sebenarnya kernel monolithic linux dapat diperkecil karena memiliki kemampuan untuk memuat module dan kemudahan penyesuaian. Faktanya ada versi Linux yang sangat kecil yang dapat dimuat kedalam floopy disk dan masih merupakan sistem operasi penuh.

Meskipun microkernels sangat kecil, namun kombinasi dengan kode tambahan membuat mereka pada faktanya lebih besar daripada monolithic kernel, para pembela monolithic kernels juga menekankan bahwa struktur dua jenjang dari sistem microkernel membuatnya mengorbankan efisiensi.

3 thoughts on “Apa Itu Kernel? Apa Hubungannya Dengan Linux?

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.