Kamis, 16 Desember 2010

KERNEL LINUX


Perkembangan Kernel Linux
Kernel Linux pertama yang dipublikasikan adalah versi 0.01, pada tanggal 14 Maret 1991. Sistem Berkas yang didukung hanya sistem berkas Minix, karena memang kernel pertama yang dibuat, didasarkan pada kerangka Minix.Tetapi, kernel tersebut sudah mengimplementasi proses UNIX secara tepat.
Tanggal 14 Maret 1994, versi yang merupakan tonggak sejarah Linux yaitu versi 1.0 keluar. Rilis ini adalah kulminasi dari tiga tahun perkembangan yang cepat dari kernel Linux. Fitur baru terbesar yang disediakan adalah jaringan: 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, soundcard, berbagai mouse dan keyboard internasional. Dukungan buat modul kernel yang dynamically loadable dan unloadable juga diberikan. 
Satu tahun setelah dirilis versi 1.0, kernel 1.2 keluar. Kernel versi 1.2 mendukung variasi perangkat keras yang lebih luas. Pengembangnya telah memperbaharui  networkings tack untuk menyediakan support bagi protokol IPX dan membuat implementasi IP lebih komplit dengan memberikan fungsi accounting dan firewalling. Kernel 1.2 juga merupakan kernel Linux terakhir yang PC-only. Konsentrasi lebih diberikan pada dukungan perangkat keras dan memperbanyak implementasi lengkap pada fungsi – fungsi yang ada.
Akhirnya pada bulan Juni 1996, Linux 2.0 dirilis. Versi 2.0 memiliki dua kemampuan baru yang penting, yaitu: dukungan terhadap multiple architectures dan multiprocessor architectures. Kode untuk manajemen memori telah diperbaiki sehingga performa sistem berkas dan memori virtual meningkat. Untuk pertamakalinya, file system caching dikembangkan ke networked file systems, writable memory mapped regions juga sudah didukung. Kernel 2.0 sudah memberikan performa TCP/IP yang lebih baik, ditambah dengan sejumlah protokol jaringan baru. Kemampuan untuk memakai remote netware dan SMB 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.

5.2        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 mereboot 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 mereboot kernel setiap saat hendak menambah fungsi baru. Dengan adanya modul maka setiap pihak dapat dengan mudah menulis fungsi-fungsi baru dan bahkan mendistribusikannya sendiri diluar 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; managemen modul, registrasi driver dan mekanisme penyelesaian konflik. Berikut akan dibahas ketiga komponen pendukung tersebut.

5.2.1        Management Modul Kernel Linux
Managemen modul berfungsi untuk 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 ataupun 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 terjadi, namun simbol-simbol tersebut harus dieksport 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 dimemori 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 dieksport ke kernel. Dengan demikian modul tersebut akan berada di alamat yang telah dialokasikan dan tabel simbol milik kernel akan diperbaharui.
Komponen managemen modul yang lain adalah peminta modul. Kernel akan mendefinisikan antar muka komunikasi yang dapat dihubungi oleh program managemen modul. Saat hubungan tercipta, kernel akan menginformasikan proses managemen kapanpun sebuah proses meminta device driver, sistemberkas, 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 atau tidak (sudah selesai), yang kemudian akan menghapusnya saat tidak diperlukan lagi.

5.2.2        Registrasi Driver
Untuk membuat modul kernel yang baru dipanggil dapat 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-fungsi modul baru tersebut. Hal-hal yang masuk dalam tabel registrasi adalah :
·         Device driver
·         Sistem berkas
·         Protokol jaringan
·         Format binari

5.2.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 sangat 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 diantara sejumlah driver yang berusaha mengakses perangkat keras yang sama.
Kernel akan membuat daftar alokasi sumber daya perangkat keras. Ketika suatu driver hendak mengakses sumber daya melalui I/O port, jalur interrupt ataupun kanal DMA, maka driver tersebut diharapkan mereservasi sumberdaya yang dimaksud 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.



Tidak ada komentar:

Posting Komentar