Jadi Apa Kernelnya?
Kernel adalah tingkat terendah dari perangkat lunak yang mudah diganti yang menghubungkan dengan perangkat keras di komputer Anda. Ini bertanggung jawab untuk menghubungkan semua aplikasi Anda yang berjalan di "mode pengguna" ke perangkat keras fisik, dan memungkinkan proses, yang dikenal sebagai server, untuk mendapatkan informasi dari satu sama lain menggunakan komunikasi antar-proses (IPC).
Berbagai Jenis Kernel
Tentu saja ada berbagai cara untuk membangun kernel dan pertimbangan arsitektural ketika membangunnya dari awal. Secara umum, kebanyakan kernel termasuk dalam satu dari tiga jenis: monolithic, microkernel, dan hybrid. Linux adalah kernel monolitik sementara OS X (XNU) dan Windows 7 menggunakan kernel hibrida. Mari ikuti tur singkat dari ketiga kategori tersebut sehingga kita dapat membahasnya lebih detail nanti.
Gambar oleh popcorn uptown
Microkernel Sebuah mikrokernel mengambil pendekatan hanya mengelola apa yang harus: CPU, memori, dan IPC. Hampir semua hal lain di komputer dapat dilihat sebagai aksesori dan dapat ditangani dalam mode pengguna. Microkernels memiliki keuntungan portabilitas karena mereka tidak perlu khawatir jika Anda mengubah kartu video atau bahkan sistem operasi Anda selama sistem operasi masih mencoba mengakses perangkat keras dengan cara yang sama. Microkernels juga memiliki footprint yang sangat kecil, baik untuk memori dan ruang penyimpanan, dan mereka cenderung lebih aman karena hanya proses tertentu yang dijalankan dalam mode pengguna yang tidak memiliki izin tinggi sebagai mode supervisor.
Pro
- Portabilitas
- Jejak pemasangan kecil
- Jejak memori kecil
- Keamanan
Cons
- Hardware lebih abstrak melalui driver
- Perangkat keras dapat bereaksi lebih lambat karena driver dalam mode pengguna
- Proses harus menunggu dalam antrian untuk mendapatkan informasi
- Proses tidak bisa mendapatkan akses ke proses lain tanpa menunggu
Kernel Monolitik Kernel monolitik adalah kebalikan dari mikrokel karena tidak hanya mencakup CPU, memori, dan IPC, tetapi juga mencakup hal-hal seperti driver perangkat, manajemen sistem file, dan panggilan server sistem. Kernel monolitik cenderung lebih baik dalam mengakses perangkat keras dan multitasking karena jika suatu program perlu mendapatkan informasi dari memori atau proses lain yang berjalan, ia memiliki jalur yang lebih langsung untuk mengaksesnya dan tidak harus menunggu dalam antrian untuk menyelesaikan berbagai hal. Namun ini dapat menyebabkan masalah karena semakin banyak hal yang berjalan dalam mode supervisor, semakin banyak hal yang dapat menurunkan sistem Anda jika seseorang tidak berperilaku dengan benar.
Pro
- Lebih banyak akses langsung ke perangkat keras untuk program
- Lebih mudah untuk proses untuk berkomunikasi antara satu sama lain
- Jika perangkat Anda didukung, itu harus bekerja tanpa instalasi tambahan
- Proses bereaksi lebih cepat karena tidak ada antrian untuk waktu prosesor
Cons
- Jejak pemasangan besar
- Jejak memori yang besar
- Kurang aman karena semuanya berjalan dalam mode supervisor
Hybrid Kernel Kernel hibrida memiliki kemampuan untuk memilih apa yang ingin mereka jalankan dalam mode pengguna dan apa yang ingin mereka jalankan dalam mode supervisor. Sering kali hal-hal seperti driver perangkat dan filesystem I / O akan dijalankan dalam mode pengguna sementara IPC dan panggilan server akan disimpan dalam mode supervisor. Ini memberikan yang terbaik dari kedua dunia tetapi sering akan membutuhkan lebih banyak pekerjaan dari produsen perangkat keras karena semua tanggung jawab pengemudi terserah pada mereka. Ini juga dapat memiliki beberapa masalah latensi yang melekat dengan microkernels.
Pro
- Pengembang dapat memilih dan menentukan apa yang berjalan dalam mode pengguna dan apa yang berjalan dalam mode supervisor
- Jejak pemasangan yang lebih kecil dari kernel monolitik
- Lebih fleksibel daripada model lainnya
Cons
- Dapat menderita lag proses yang sama dengan mikrokernel
- Driver perangkat harus dikelola oleh pengguna (biasanya)
Di mana file-file Kernel Linux?
File kernel, di Ubuntu, disimpan di folder / boot Anda dan disebut vmlinuz-versi. Nama vmlinuz berasal dari unix world di mana mereka biasa memanggil kernel mereka hanya dengan "unix" pada tahun 60-an sehingga Linux mulai memanggil kernel "linux" ketika pertama kali dikembangkan pada tahun 90-an.
Ketika memori virtual dikembangkan untuk kemampuan multitasking yang lebih mudah, "vm" diletakkan di bagian depan file untuk menunjukkan bahwa kernel mendukung memori virtual. Untuk sementara kernel Linux disebut vmlinux, tetapi kernel tumbuh terlalu besar untuk masuk ke dalam memori boot yang tersedia sehingga imej kernel dikompresi dan akhir x diubah menjadi z untuk menunjukkan bahwa ia dikompres dengan kompresi zlib. Kompresi yang sama ini tidak selalu digunakan, sering digantikan dengan LZMA atau BZIP2, dan beberapa kernel disebut dengan zImage.
Penomoran versi akan dalam format A.B.C.D di mana A.B mungkin akan menjadi 2.6, C akan menjadi versi Anda, dan D menunjukkan patch atau perbaikan Anda.
Arsitektur Kernel Linux
Karena kernel Linux monolithic, ia memiliki footprint terbesar dan paling kompleks dibandingkan jenis kernel lainnya. Ini adalah fitur desain yang berada di bawah sedikit perdebatan di hari-hari awal Linux dan masih membawa beberapa kelemahan desain yang sama yang dimiliki oleh kernel monolitik.
Satu hal yang dilakukan oleh pengembang kernel Linux untuk mengatasi kekurangan ini adalah dengan membuat modul kernel yang dapat dimuat dan dibongkar pada saat runtime, yang berarti Anda dapat menambah atau menghapus fitur kernel Anda dengan cepat. Ini dapat melampaui hanya menambahkan fungsionalitas perangkat keras ke kernel, dengan memasukkan modul yang menjalankan proses server, seperti virtualisasi tingkat rendah, tetapi juga dapat memungkinkan seluruh kernel diganti tanpa perlu me-reboot komputer Anda dalam beberapa kasus.
Bayangkan jika Anda dapat meng-upgrade ke paket layanan Windows tanpa perlu reboot …
Modul Kernel
Sebuah modul biasanya menambahkan fungsionalitas ke kernel dasar untuk hal-hal seperti perangkat, sistem file, dan panggilan sistem. LKM memiliki ekstensi file.ko dan biasanya disimpan di direktori / lib / modules. Karena sifatnya yang modular Anda dapat dengan mudah menyesuaikan kernel Anda dengan mengatur modul untuk memuat, atau tidak memuat, saat startup dengan perintah menuconfig atau dengan mengedit file / boot / config Anda, atau Anda dapat memuat dan membongkar modul dengan cepat dengan modprobe perintah.
Modul sumber pihak ketiga dan tertutup tersedia di beberapa distribusi, seperti Ubuntu, dan mungkin tidak diinstal secara default karena kode sumber untuk modul tidak tersedia. Pengembang perangkat lunak (yaitu nVidia, ATI, antara lain) tidak memberikan kode sumber tetapi mereka membangun modul mereka sendiri dan mengkompilasi file.ko yang diperlukan untuk distribusi. Sementara modul ini gratis seperti dalam bir, mereka tidak gratis seperti dalam pidato dan dengan demikian tidak termasuk oleh beberapa distribusi karena pengelola merasa itu "noda" kernel dengan menyediakan perangkat lunak tidak bebas.
Kernel tidak ajaib, tetapi sangat penting bagi komputer mana pun yang berjalan dengan baik. Kernel Linux berbeda dari OS X dan Windows karena menyertakan driver pada level kernel dan membuat banyak hal didukung "out of the box". Mudah-mudahan Anda akan tahu sedikit lebih banyak tentang bagaimana perangkat lunak dan perangkat keras Anda bekerja bersama dan file apa yang Anda perlukan untuk mem-boot komputer Anda.
Kernel.org Gambar oleh ingridtaylar