a. Kernel
Bagian
ini akan menjelaskan kernel secara umum dan sejarah perkembangan Kernel Linux.
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. Karena akses terhadap perangkat keras
terbatas, sedangkan ada lebih dari satu program yang harus dilayani dalam waktu
yang bersamaan, maka kernel juga bertugas untuk mengatur kapan dan berapa
lama suatu program dapat menggunakan satu bagian perangkat keras tersebut.
Hal tersebut dinamakan sebagai multiplexing.
Akses
kepada perangkat keras secara langsung merupakan masalah yang kompleks, oleh
karena itu kernel biasanya mengimplementasikan sekumpulan abstraksi hardware.
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.
Untuk menjalankan
sebuah komputer kita tidak harus menggunakan kernel sistem operasi. Sebuah program
dapat saja langsung di-load dan dijalankan diatas mesin 'telanjang'
komputer, yaitu bilamana pembuat program ingin melakukan pekerjaannya tanpa
bantuan abstraksi perangkat keras atau bantuan sistem operasi. Teknik ini
digunakan oleh komputer generasi awal, sehingga bila kita ingin berpindah dari
satu program ke program lain, kita harus mereset dan meload kembali
program-program tersebut.
Ada 4 kategori kernel:
1.
Monolithic kernel
Kernel yang menyediakan abstraksi perangkat keras yang
kaya dan tangguh.
2.
Microkernel
Kernel
yang menyediakan hanya sekumpulan kecil abstraksi perangkat keras sederhana,
dan menggunakan aplikasi-aplikasi yang disebut sebagai server untuk
menyediakan fungsi-fungsi lainnya.
3.
Hybrid (modifikasi dari microkernel)
Kernel
yang mirip microkernel, tetapi ia juga memasukkan beberapa kode tambahan di
kernel agar ia menjadi lebih cepat.
4.
Exokernel
Kernel
yang tidak menyediakan sama sekali abstraksi hardware, tapi ia menyediakan sekumpulan
pustaka yang menyediakan fungsi-fungsi akses ke perangkat keras secara langsung
atau hampir-hampir langsung.
Dari keempat kategori kernel yang disebutkan diatas, kernel Linux termasuk
kategori monolithic kernel. Kernel Linux berbeda dengan sistem Linux.
Kernel Linux
merupakan sebuah perangkat lunak orisinil yang dibuat oleh komunitas Linux,
sedangkan sistem Linux, yang dikenal saat ini, mengandung banyak komponen yang
dibuat sendiri atau dipinjam dari proyek pengembangan lain. Kernel Linux
pertama yang dipublikasikan adalah versi 0.01, pada tanggal 14 Maret 1991.
Sistem berkas yang didukung hanya sistem berkas Minix. Kernel pertama dibuat
berdasarkan kerangka Minix (sistem UNIX kecil yang dikembangkan oleh Andy
Tanenbaum). Tetapi, kernel tersebut sudah mengimplementasi proses UNIX secara
tepat.
Pada tanggal 14
Maret 1994 dirilis versi 1.0, yang merupakan tonggak sejarah Linux. Versi ini adalah
kulminasi dari tiga tahun perkembangan yang cepat dari kernel Linux. Fitur baru
terbesar yang disediakan adalah jaringan. Versi 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, sound
card, berbagai mouse, dan keyboard internasional. Dukungan juga diberikan
terhadap modul kernel yang loadable dan unloadable secara
dinamis.
Satu tahun kemudian dirilis kernel versi 1.2. Kernel ini
mendukung variasi perangkat keras yang lebih luas. Pengembang telah
memperbaharui networking stack untuk menyediakan support bagi
protokol IPX, dan membuat implementasi IP lebih lengkap dengan memberikan fungsi
accounting dan firewalling. Kernel 1.2 ini merupakan kernel Linux
terakhir yang PC-only. Konsentrasi lebih diberikan pada dukungan perangkat
keras dan memperbanyak implementasi lengkap pada fungsi-fungsi yang ada.
Pada bulan Juni 1996, kernel Linux 2.0 dirilis. Versi ini
memiliki dua kemampuan baru yang penting, yaitu dukungan terhadap multiple
architecture dan multiprocessor architectures. Kode untuk manajemen
memori telah diperbaiki sehingga kinerja sistem berkas dan memori virtual
meningkat. Untuk pertama kalinya, file system
caching dikembangkan ke networked file systems, juga sudah didukung writable
memory mapped regions. Kernel
2.0 sudah memberikan kinerja TCP/IP yang lebih baik, ditambah dengan sejumlah
protokol jaringan baru. Kemampuan untuk memakai remote netware dan SMB
(Microsoft LanManager) 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.
Semenjak Desember 2003, telah diluncurkan Kernel versi
2.6, yang dewasa ini (2007) telah mencapai patch versi 2.6.21.1
(http://kambing.ui.edu/kernel-linux/v2.6/). Hal-hal yang berubah dari versi 2.6
ini adalah:
• Subitem
M/K yang dipercanggih.
•
Kernel yang pre-emptif.
• Penjadwalan Proses yang dipercanggih.
•
Threading yang
dipercanggih.
•
Implementasi ALSA (Advanced
Linux Sound Architecture) dalam kernel.
•
Dukungan sistem berkas seperti:
ext2, ext3, reiserfs, adfs, amiga ffs, apple macintosh hfs, cramfs, jfs,
iso9660, minix, msdos, bfs, free vxfs, os/2 hpfs, qnx4fs, romfs, sysvfs, udf,
ufs, vfat, xfs, BeOS befs (ro), ntfs (ro), efs (ro).
Sistem
Linux terdiri dari tiga bagian kode penting:
• Kernel: Bertanggung-jawab memelihara
semua abstraksi penting dari sistem operasi, termasuk hal-hal seperti memori
virtual dan proses-proses.
• Perpustakaan sistem: menentukan kumpulan
fungsi standar dimana aplikasi dapat berinteraksi dengan kernel, dan
mengimplementasi hampir semua fungsi sistem operasi yang tidak memerlukan hak
penuh atas kernel.
• Utilitas
sistem: adalah program yang melakukan pekerjaan managemen secara individual.
Walaupun berbagai sistem operasi modern telah mengadopsi
suatu arsitektur message-passing untuk kernel internal mereka, Linux tetap
memakai model historis UNIX: kernel diciptakan sebagai biner yang tunggal dan
monolitis. Alasan utamanya adalah untuk meningkatkan kinerja, karena semua
struktur data dan kode kernel disimpan dalam satu address space, alih konteks
tidak diperlukan ketika sebuah proses memanggil sebuah fungsi sistem operasi
atau ketika interupsi perangkat keras dikirim. Tidak hanya penjadualan inti dan
kode memori virtual yang menempati address space ini, tetapi juga semua kode
kernel, termasuk semua device drivers, sistem berkas, dan kode jaringan,
hadir dalam satu address space yang sama.
Kernel Linux membentuk inti dari sistem operasi Linux.
Dia menyediakan semua fungsi yang diperlukan untuk menjalankan proses, dan
menyediakan layanan sistem untuk memberikan pengaturan dan proteksi akses ke
sumber daya perangkat keras. Kernel mengimplementasi semua fitur yang
diperlukan supaya dapat bekerja sebagai sistem operasi. Namun, jika sendiri,
system operasi yang disediakan oleh kernel Linux sama sekali tidak mirip dengan
sistem UNIX. Dia tidak memiliki banyak fitur ekstra UNIX, dan fitur yang
disediakan tidak selalu dalam format yang
diharapkan oleh aplikasi UNIX. Interface dari sistem
operasi yang terlihat oleh aplikasi yang sedang berjalan tidak ditangani
langsung oleh kernel, akan tetapi aplikasi membuat panggilan (calls)
keperpustakaan sistem, yang kemudian memanggil layanan sistem operasi yang
dibutuhkan.
0 komentar:
Posting Komentar