Tuesday 14 July 2015

Menggali Lebih Dalam Modul Kernel Linux(Bagian 1)

Hi semua.. maaf blog ini sudah lama tidak update karena kesibukkan penulis selama kuliah. Mumpung sekarang dalam rangka liburan Penulis ingin share sedikit ilmu yang penulis dapatkan selama masa perkuliahan yaitu tentang Linux.. Ini adalah bagian dari buku yang penulis tulis sendiri,ok tanpa berlama-lama lagi Cek This Out ^^



Apa itu Kernel?


Jadi sebelum kita memulai membuat driver[1] kita sendiri, kita harus mengetahui dulu apa itu Kernel. 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 dan mengatur kapan dan berapa lama suatu program dapat menggunakan satu bagian dari perangkat keras tersebut.


Akses kepada perangkat keras secara langsung merupakan masalah yang kompleks, oleh karena itu kernel biasanya mengimplementasikan sekumpulan abstraksi hardware[2]. 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.


Kernel terbagi menjadi beberapa tingkatan, yaitu 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.

● Microkernel.
Microkernel 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 abstraksi hardware secara minimal, sehingga program dapat mengakses hardware secara langsung. Dalam pendekatan desain exokernel, library[3] yang dimiliki oleh sistem operasi dapat melakukan abstraksi yang mirip dengan abstraksi yang dilakukan dalam desain monolithic kernel.


Apa itu Modul Kernel?


Jadi, ketika kita telah menulis beberapa program dalam bahasa C, dan sekarang kita penasaran dan ingin mengetahui bagaimana caranya program yang kita tulis dapat berjalan/running dalam komputer kita. Bagaimana caranya sebuah pointer liar tunggal dapat menghapus file sistem yang mengharuskan kita reboot. Semua itu dapat terjadi dikarenakan adanya loadable kernel module.


Apakah sebenarnya loadable modul kernel (LKM) ini? LKM adalah bagian dari kode yang dapat di-load dan di-unload ke dalam kernel. Modul kernel memperluas fungsionalitas dari kernel yang berjalan tanpa perlu meng-reboot sistem atau yang biasa disebut base kernel. Misalnya, salah satu jenis modul adalah driver perangkat, yang memungkinkan kernel untuk mengakses perangkat keras yang terhubung ke sistem. Tanpa modul, kita harus membuat kernel monolitik dan menambahkan fungsi baru langsung ke kernel. Selain membutuhkan kernel yang lebih besar, hal ini memiliki kelemahan yang memerlukan kita untuk membuat kernel kembali dan reboot kernel setiap kali kita ingin fungsi baru. LKM biasanya digunakan untuk dukungan bagi hardware baru atau filesystem baru, atau menambahkan system call. Saat fungsi yang diberikan oleh LKM tidak lagi dibutuhkan, kita dapat meng-unload LKM tersebut untuk membebaskan memory maupun sumber daya lainnya.


Sebagian besar sistem Unix-like[4] yang baru dan Microsoft Windows mendukung loadable kernel modules, meskipun mereka akan menggunakan nama lain, seperti kernel loadable module (kld) di FreeBSD, kernel extension (kext) di OS X dan kernel-mode driver di Windows NT. KLM ini juga sering dikenali sebagai Kernel Module (KMOD).


Loadable kernel module di Linux di-load (dan di-unload) menggunakan perintah modprobe. Sejak versi 2.6, kernel modul berlokasi di /lib/modules dan mempunyai extension .ko ("kernel object"), versi sebelumnya menggunakan extension .o). Perintah lsmod memperlihatkan kernel modul yang di load ke memori. Pada saat mendesak seperti saat sistem gagal di booting karena modul rusak, modul tertentu dapat di enable atau disable dengan cara memodifikasi daftar parameter boot kernel[5] (contoh, jika menggunakan GRUB, dengan menekan 'e' di GRUB start menu, kemudian mengedit kalimat kernel parameter). Kita dapat melihat apa modul yang sudah dimuat ke dalam kernel dengan menjalankan perintah lsmod, yang mendapatkan informasi dengan membaca file /proc/modules.


Tanpa loadable kernel module, sebuah sistem operasi harus memasukan semua fungsi yang mungkin nantinya akan digunakan ke dalam base kernel. Sebagian besar fungsi tersebut akan mengambil memori tanpa kita gunakan untuk apa-apa. Dengan kata lain, memboroskan memori, dan membutuhkan user memuat ulang dan reboot base kernel setiap kali user membutuhkan fungsi baru. Kebanyakan sistem operasi mendukung loadable kernel module akan memasukan modul untuk mendukung fungsi yang paling di butuhkannya.


Sedikit kritik bagi mereka yang lebih suka pada kernel yang modular[6] daripada kernel statik adalah Fragmentation Penalty. base kernel selalu masuk ke dalam memory (RAM) tanpa putus oleh routine setup-nya; oleh karena-nya base kernel tidak pernah terfragmentasi[7]. Saat sistem mengijinkan bahwa modul dapat di masukan, sangat mungkin bahwa kernel code yang di masukan akan menyebabkan kernel menjadi fragmented / terputus, ini kemungkinan akan menyebabkan penalty performance[8].


Ok kali ini sampai disini dulu ya.. Bagian selanjutnya akan segera di post jadi jangan lupa follow blog ini dedyvancoklat.blogspot.com atau add fb https://www.facebook.com/dedy.vanhauten.3 Sampai jumpa ^^

Notes :

[1] istilah teknologi informasi yang mengacu kepada komponen perangkat lunak yang mengizinkan sebuah sistem komputer untuk berkomunikasi dengan sebuah perangkat keras.


[2] sekumpulan lapisan logis antara perangkat keras fisik dari sebuah komputer dan perangkat lunak yang berjalan di dalam komputer yang bersangkutan


[3] kumpulan routine/module yang belum dikompilasi sehingga bisa dipakai oleh program


[4] sistem operasi yang memiliki cara kerja mirip Unix walaupun tidak selalu berspesifikasi Single UNIX Specification.


[5] Bagian dari kernel yang mengatur tentang proses booting


[6] Kernel dimana pada saat boot time, hanya minimal resident kernel yang di-load ke dalam memori


[7] fenomena dimana ruang penyimpanan yang digunakan secara tidak efisien, mengurangi kapasitas penyimpanan.


[8] Kondisi dimana performa komputer/laptop jauh menurun

No comments:

Post a Comment

Microsoft meluncurkan Windows 11 Store baru untuk pengguna Windows 10

       Windows 10 Insiders memperhatikan bahwa ada pembaruan aplikasi Store yang tersedia. Microsoft meluncurkan Windows 11 Store baru untu...