KARNEL SEBAGAI MEDIATOR ANTARA APLIKASI KOMPUTER DAN PERANGKAT KERAS
Abstract
Kernel is software communication betwen computer application and
hardware, it enabled system service like mmemory management for running
poccess, management file, input-output from device and still more other
added function. The point kernel is mediator betwen software and
hardware. In this case we will try explane how does kernel work as
operating system, recompile kernel as needed, kernel format, and kernel
was linux basic as GPL application GPL (General Public License).
Abstrak
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).
Dalam makalah ini penulis mencoba untuk mengemukakan bagaimana cara
kerja kernel sebagai sistem operasi, mengkompile ulang kernel untuk
suatu kebutuhan, format dari kernel , serta berbagai dasar dasar kernel
Linux sebagai aplikasi GPL (General Public License).
1. Pendahuluan
Kernel merupakan inti dari Operating System berisikan instruksi- instruksi yang bertindak sebagai mediator antara hardware dengan software. Kernel baru pada umumnya menawarkan dukungan yang lebih banyak terhadap berbagai jenis hardware,memiliki
manajemen proses yang lebih baik, berjalan lebih baik dari versi
sebelumnya, dan lebih stabil karena adanya perbaikan pada bug-bug yang ditemukan pada versi sebelumnya.
2. Format Kernel
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,
2.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, gonta-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.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.
3. Kompilasi Modul Kernel
Apabila kita akan menambahkan suatu modul ke dalam kernel maka kita
dapat melakukan kompilasi ulang kernel. Modul merupakan bagian dari
kode kernel yang tidak secara langsung dimasukan kedalam kernel. Modul
dapat di masukan atau dihilangkan kedalam kernel yang sedang berjalan
kapanpun diperlukan. Modul biasanya digunakan untuk mendukung pekerjaan
yg tidak di gunakan terus-menerus. misal, jika kita tidak membutuhkan
dukungan networking
sepanjang waktu, seperti ppp,maka lebih baik ppp dijadikan sebagai
modul. ketika kita memerlukannya (untuk koneksi ke isp) modul kita
panggil dan setelah selesai koneksi modul dapat kita matikan. penerapan
modul seperti ini akan mengurangi jumlah memori yang di butuhkan kernel
sehingga mempercepat operasi.
3.1 Konfigurasi Kernel
Ada 3 command yang dapat digunakan untuk mengkonfigurasi kernel
1. config (text-based)
2. menuconfig (text-based menu)
3. xconfig (under X )
Diantara ketiga cara tersebut, yang biasa dipakai adalah “menuconfig“. karena memiliki tampilan yang lebih menarik dan lebih fleksibel dalam konfigurasi daripada cara pertama (config). Untuk memilih modul dalam menuconfig
di tunjukan dengan tanda (dengan menekan tombol m pada keyboard), jika
<> menandakan modul ini tidak digunakan. tanda < *> atau
[*] (dengan menekan tombol y) digunakan untuk menyertakannya secara
langsung kedalam kernel. Selama melakukan konfigurasi perubahan dapat
dilakukan dengan ditandakan atau diberi tanda [*]. Apabila ada hal-hal
tertentu yang memang benar-benar tidak dibutuhkan oleh konfigurasi
komputer yang akan dipakai, tanda bintangnya di hapus (biar tidak
terbawa disaat kompilasi berlangsung). Atau dapat melakukan penambahan
penandaan sesuai kebutuhan, misal [*] untuk menggunakan modul,
penandaan untuk kebutuhan networking dengan < *>.
Gambar1. Skema representatif antara “user space�? dan “kernel space�?
Dalam gambar 1 garis yang menghubungkan berbagai komponen dengan
kernel ( dengan peralatan perangkat keras ) mengindikasikan bahwa
setiap komponen secara lansung berinteraksi. Seperti contoh TCP/IP stack mengirim paket jaringan melalui code path TCP atau UDP , tetapi kedua tipe paket ini ini pada akhirnya di handel oleh IP layer. Dalam gambar, “VFS” berada pada Virtual Filesystem layer, yang secara ringkas serta detail ada pada tipe filesystem
(seperti sebagai ext2fs dan ISO-9660, seperti yang di tampilkan) dari
aplikasi user. Ini maksudnya adalah bahwa aplikasi ini butuh tidak
mengetahui apa tipe filesystem yang di akses bila sebuah file dibuka, dibaca, ditulis dan seterusnya. Sedangkan “IPC” merupakan Interprocess Communication
dan termasuk bermacam-macam mekanisme proses untuk “berkomunikasi�?
satu sama lainnya dalam aktivitasnya. Komponen yang berlabel “SMP”
adalah shared-memory multiprocessing yang mendukung Linux-kernel,yang digunakan sistem dengan multiple CPUs.
3.2 Utilitas Modul
Berikut ini adalah utilititas yang dapat gunakan pada system operasi linux dalam menangani modul
1. lsmod digunakan untuk melihat modul yang telah di load. contoh: # lsmod
2. depmod digunakan untuk membuat dependency list modul-modul yang ada kepada sistem. contoh: # depmod -a
Bila anda tidak menjalankan perintah ini anda tidak dapat me-load modul. perintah “depmod -a” menghasilkan file /lib/modules/2.0.xx/modules.dep yang berisi daftar keterkaitan modul terhadap modul yang lainnya.
3. modprobe digunakan untuk load/unload modul ;contoh: # modprobe -r msdos.o –>untuk unload modul (menghapus) ;contoh: # modprobe msdos.o –> untuk load modul command “modprobe msdos.o” bila dilihat dengan “lsmod” akan nampak seperti:
Module Pages Used by
msdos 2 0
fat 6 [msdos] 0
Perhatikan modul fat juga di-load, padahal perintah modprobe hanya diperintahkan untuk me-load modul msdos. hal ini terjadi karena adanya ketergantungan modul, modul msdos memerlukan modul fat.
File-file (modul) seperti msdos.o bisa dilihat di /lib/modules/2.0.xx/
4. kerneld merupakan daemon yang secara otomatis me-load dan unload modul. dengan menggunakan kerneld kita tidak perlu lagi menggunakan modprobe (untuk load/unload modul) secara manual karena daemon ini telah menanganinya secara otomatis. kita dapat mengecek apakah “kerneld” telah bekerja dengan baik.
4. Kernel Waktu Nyata
Banyak sistem embedded yang memiliki kebutuhan untuk berperilaku sebagai sebuah sistem waktu-nyata (real-time system).
Pada sistem waktu nyata, waktu memegang peranan yang penting. Ketepatan
kalkulasi atau kecermatan aksi tidak akan berarti apa-apa jika
dilakukan pada saat yang keliru, atau “a late answer is a wrong answer�?.
Sistem waktu nyata lazim dijumpai di dunia industri. Sebagai contoh,
pengatur arah peluru kendali mesti dapat mengoreksi laju dan arah
terbangnya sehingga tetap menuju target. Keterlambatan sepersekian
detik bisa mengakibatkan peluru tersebut nyasar ke ruang kosong. Dalam
hal ini antisipasi secepat-cepatnya menjadi kunci akurasinya. Sebuah
mesin otomatis untuk mengemas botol minuman harus dapat memasangkan
tutup botol tepat kepada botolnya. Dalam sebuah sistem berjalan,
ketepatan ini diatur dengan waktu. Dengan kata lain, jika waktu
pemasangan tutup botol tidak tepat, hasilnya akan percuma karena
botolnya tidak akan berada pada lokasi yang tepat. Salah satu hal
penting yang diperhatikan pada saat merancang sistem waktu-nyata adalah
deadline atau tenggat operasi yang diijinkan. Selama pemrosesan atau kalkulasi yang dilakukan dapat dipaksa untuk diselesaikan sebelum deadline tersebut lewat, maka sifat waktu-nyata sistem tersebut bisa dijamin. Sebagai ilustrasi, sebuah player MP3 harus dapat melakukan encoding musik format MP3 tersebut menjadi sinyal audio yang dinikmati melalui earphone atau speaker. Tentu saja, proses encoding tersebut harus lebih cepat dari alunan musiknya sendiri. Untuk kualitas HiFi, ini berarti encoding
mesti mensuplai data audio sebanyak 44100 kali per detik. Bila
memproses sepotong data audio menyita waktu lebih dari 1/44100 detik,
musik tidak bisa didengar secara real-time. Bayangkan, bagaimana
caranya menikmati sebuah lagu - yang durasi aslinya 4 menit – jika
diputar selama 10 menit ? .Meskipun mulanya tidak dirancang sebagai
sistem waktu nyata, Linux dapat ‘diakali’ sehingga dapat bekerja pada
lingkungan yang mengharuskan persyaratan sistem waktu-nyata.
Setidaknya, ada beberapa pendekatan yang bisa digunakan
Gambar 2. Hubungan Sub-Kernel dengan linux
Sub-kernels dibuat dengan 3 kategori: 1) patching sebuah kernel linux untuk menyediakan beberapa keterkaitan seperti penambahan fungsionalitas 2) modifikasi untuk menghandel interrupt 3) membuat loadable modules untuk menyediakan bagian API dan fungsionalitas.
Sub-kernels menyediakan sebuah API untuk digunakan oleh tugas real-time.
APIs menyediakan urutan yang menyerupai POSIX, fungsi POSIX lainnya dan
penambahan fungsi yang unik. Penggunaan sub-kernels dimaksudkan bahwa
tugas real-time menggunakan APIs yang lebih familiar bagi para programmer Linux , tetapi mereka menerapkan secara terpisah dan terkadang berbeda.
Interrupt handling dimodifikasi oleh patching bagian utama kernel . patch-nya sendiri merubah fungsi, seperti contoh , patch digunakan biasanya untuk disable interrupts. Apabila kernel dan drivers dalam sub-tree linux di recompiled, mereka tidak secara aktual untuk menghentikan interrupts. Karena drivers di-compile terpisah dari header yang dimodifikasi untuk disable- interrupts dan menghalangi teknik real-time. Sebaiknya gunakan non standard code untuk sebuah interrupt-disabling.
Instruksi Bahasa assembly mungkin bisa digunakan untuk menanganinya.
Dalam prakteknya hal ini merupakan situasi yang tidak terelakan untuk
menangani solusi real-time.
5. Kesimpulan
Kernel merupakan mediator penghubung antara Software dan Hardware. Kernel dapat di-recompile ulang sesuai dengan kebutuhan perangkat keras yang ingin kita pakai, untuk me-recompile ulang kernel dapat di pilih apakah ingin menggunakan kernel Modular atau kernel Mololitik,
dalam pemakaiannya kernel bergantung kepada pengguna sendiri modul apa
yang akan digunakan. Kernel juga sangat baik digunakan sebagai real-time yang menjembatani aplikasi dan kebutuhan waktu nyata yang interrupt-nya dapat di ubah dengan modifikasi Header-nya menggunakan kernel-source-tree.
6. Daftar Pustaka
1. Linus B.Torvalds,”Birthday”,disadur dari comp. os.minix.
2. Matt Welsh,”Linux Installation and Getting Started”,Linux LDP, 11 Februari 1995
3. FRiC,”Linux Hardware Compatibility HOWTO”, Linux LDP, 1 Juni 1995
4. http://makalah.virtualave.net/kernel.html
5. http://www.nks.net/linux-vm.html
6. http://www.fw.cz/mitr/microkernel.html
7. http://www.wikipedia.org/wiki/Kernel_(computers)
8. http://www.linuxdevices.com/articles/AT6320079446.html
9. http://www.linux-mag.com/1999-07/kernel_01.html
10. http://people.cakraweb.com/~asfik/writings/kompilasi-kernel-1.html#ss1.3