a. Modul Kernel
Linux
Modul kernel
Linux adalah bagian dari kernel Linux yang dapat dikompilasi, dipanggil dan
dihapus secara terpisah dari bagian kernel lainnya saat dibutuhkan. Modul
kernel dapat menambah fungsionalitas kernel tanpa perlu me-reboot sistem.
Secara teori tidak ada yang dapat membatasi apa yang dapat dilakukan oleh modul
kernel. Kernel modul dapat mengimplementasikan antara lain device driver,
sistem berkas, protokol jaringan.
Modul kernel Linux memudahkan pihak
lain untuk meningkatkan fungsionalitas kernel tanpa harus membuat sebuah kernel
monolitik dan menambahkan fungsi yang mereka butuhkan langsung ke dalam image
dari kernel. Selain hal tersebut akan membuat ukuran kernel menjadi lebih
besar, kekurangan lainnya adalah mereka harus membangun dan me-reboot kernel
setiap saat hendak menambah fungsi baru.
Dengan adanya modul maka setiap
pihak dapat dengan mudah menulis fungsi-fungsi baru dan bahkan
mendistribusikannya sendiri, di luar GPL. Kernel modul juga memberikan
keuntungan lain yaitu membuat sistem Linux dapat dinyalakan dengan kernel
standar yang minimal, tanpa tambahan device driver yang ikut dipanggil.
Device driver yang dibutuhkan dapat dipanggil kemudian secara eksplisit maupun
secara otomatis saat dibutuhkan.
Terdapat tiga komponen untuk
menunjang modul kernel Linux. Ketiga komponen tersebut adalah manajemen modul,
registrasi driver, dan mekanisme penyelesaian konflik. Berikut akan dibahas ketiga
komponen pendukung tersebut.
1. Manajemen
Modul Kernel Linux
Manajemen modul akan mengatur
pemanggilan modul ke dalam memori dan berkomunikasi dengan bagian lainnya dari
kernel. Memanggil sebuah modul tidak hanya memasukkan isi binarinya ke dalam
memori kernel, namun juga harus dipastikan bahwa setiap rujukan yang dibuat
oleh modul ke simbol kernel atau pun titik masukan diperbaharui untuk menunjuk
ke lokasi yang benar di alamat kernel.
Linux membuat tabel simbol internal di
kernel. Tabel ini tidak memuat semua simbol yang didefinisikan di kernel saat
kompilasi, namun simbol-simbol tersebut harus diekspor secara eksplisit oleh
kernel. Semua hal ini diperlukan untuk penanganan rujukan yang dilakukan oleh
modul terhadap simbol-simbol. Pemanggilan modul dilakukan dalam dua tahap. Pertama,
utilitas pemanggil modul akan meminta kernel untuk mereservasi tempat di memori
virtual kernel untuk modul tersebut.
Kernel akan memberikan alamat memori
yang dialokasikan dan utilitas tersebut dapat menggunakannya untuk memasukkan
kode mesin dari modul tersebut ke alamat pemanggilan yang tepat. Berikutnya
system calls akan membawa modul, berikut setiap tabel simbol yang hendak
diekspor, ke kernel.
Dengan demikian modul tersebut akan
berada di alamat yang telah dialokasikan dan tabel simbol milik kernel akan
diperbaharui. Komponen manajemen modul yang lain adalah peminta modul. Kernel
mendefinisikan antarmuka komunikasi yang dapat dihubungi oleh program manajemen
modul. Saat hubungan tercipta, kernel akan menginformasikan proses manajemen
kapan pun sebuah proses meminta device driver, sistem berkas, atau
layanan jaringan yang belum terpanggil dan memberikan manajer kesempatan untuk memanggil
layanan tersebut. Permintaan layanan akan selesai saat modul telah terpanggil.
Manajer proses akan memeriksa secara berkala apakah modul tersebut masih
digunakan, dan akan menghapusnya saat tidak diperlukan lagi.
2. Registrasi
Driver
Untuk membuat modul kernel yang baru
dipanggil berfungsi, bagian dari kernel yang lain harus mengetahui keberadaan
dan fungsi baru tersebut. Kernel membuat tabel dinamis yang berisi semua driver
yang telah diketahuinya dan menyediakan serangkaian routines untuk menambah dan
menghapus driver dari tabel tersebut. Routines ini yang bertanggung-jawab untuk
mendaftarkan fungsi modul baru tersebut.
Hal-hal yang masuk
dalam tabel registrasi adalah:
• device
driver
• sistem berkas
• protokol
jaringan
• format binari
3. Resolusi
Konflik
Keanekaragaman konfigurasi perangkat
keras komputer serta driver yang mungkin terdapat pada sebuah komputer pribadi
telah menjadi suatu masalah tersendiri. Masalah pengaturan konfigurasi
perangkat keras tersebut menjadi semakin kompleks akibat dukungan terhadap device
driver yang modular, karena device yang aktif pada suatu saat
bervariasi.
Linux menyediakan sebuah mekanisme
penyelesaian masalah untuk membantu arbitrasi akses terhadap perangkat keras
tertentu. Tujuan mekanisme tersebut adalah untuk mencegah modul berebut akses
terhadap suatu perangkat keras, mencegah autoprobes mengusik keberadaan driver yang
telah ada, menyelesaikan konflik di antara sejumlah driver yang berusaha
mengakses perangkat keras yang sama.
Kernel membuat daftar alokasi sumber
daya perangkat keras. Ketika suatu driver hendak mengakses sumber daya melalui
M/K port, jalur interrupt, atau pun kanal DMA, maka driver tersebut diharapkan
mereservasi sumber daya tersebut pada basis data kernel terlebih dahulu. Jika reservasinya
ditolak akibat ketidaktersediaan sumber daya yang diminta, maka modul harus memutuskan
apa yang hendak dilakukan selanjutnya. Jika tidak dapat melanjutkan, maka modul
tersebut
dapat dihapus.
0 komentar:
Posting Komentar