Apa itu Kernel Linux dan Apa Kegunaannya?
Dengan lebih dari 13 juta baris kode, kernel Linux adalah salah satu proyek open source terbesar di dunia, tetapi apa itu kernel dan untuk apa kernel itu digunakan??
Jadi Apa itu Kernel?
Kernel adalah level terendah dari perangkat lunak yang mudah diganti yang berinteraksi dengan perangkat keras di komputer Anda. Ini bertanggung jawab untuk menghubungkan semua aplikasi Anda yang berjalan dalam "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 arsitektur ketika membangunnya dari awal. Secara umum, sebagian besar kernel jatuh ke dalam salah satu dari tiga jenis: monolitik, mikrokernel, dan hibrida. Linux adalah kernel monolitik sedangkan OS X (XNU) dan Windows 7 menggunakan kernel hybrid. Mari kita melakukan tur singkat dari ketiga kategori tersebut sehingga kita dapat membahas lebih detail nanti.
Gambar oleh popcorn di kota
Mikrokernel
Sebuah microkernel 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 keunggulan portabilitas karena mereka tidak perlu khawatir jika Anda mengganti kartu video Anda atau bahkan sistem operasi Anda selama sistem operasi masih mencoba mengakses perangkat keras dengan cara yang sama. Microkernels juga memiliki tapak yang sangat kecil, baik untuk memori maupun ruang instal, dan mereka cenderung lebih aman karena hanya proses spesifik yang dijalankan dalam mode pengguna yang tidak memiliki izin tinggi sebagai mode pengawas.
Pro
- Portabilitas
- Pasang footprint kecil
- Jejak memori kecil
- Keamanan
Cons
- Perangkat keras lebih disarikan melalui driver
- Perangkat keras dapat bereaksi lebih lambat karena driver berada 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 microkernels karena mereka tidak hanya mencakup CPU, memori, dan IPC, tetapi mereka 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 sedang berjalan itu memiliki jalur yang lebih langsung untuk mengaksesnya dan tidak perlu menunggu dalam antrian untuk menyelesaikan sesuatu. Namun ini dapat menyebabkan masalah karena semakin banyak hal yang berjalan dalam mode pengawas, semakin banyak hal yang dapat menjatuhkan sistem Anda jika seseorang tidak berperilaku baik..
Pro
- Lebih banyak akses langsung ke perangkat keras untuk program
- Lebih mudah untuk proses berkomunikasi antara satu sama lain
- Jika perangkat Anda didukung, itu harus berfungsi tanpa instalasi tambahan
- Proses bereaksi lebih cepat karena tidak ada antrian untuk waktu prosesor
Cons
- Tapak pemasangan besar
- Jejak memori besar
- Kurang aman karena semuanya berjalan dalam mode pengawas
Gambar via schoschie di Flickr
Kernel Hibrida
Kernel hibrida memiliki kemampuan untuk memilih dan memilih apa yang ingin mereka jalankan dalam mode pengguna dan apa yang ingin mereka jalankan dalam mode pengawas. Sering kali hal-hal seperti driver perangkat dan sistem file I / O akan dijalankan dalam mode pengguna sementara IPC dan panggilan server akan disimpan dalam mode pengawas. Ini memberikan yang terbaik dari kedua dunia tetapi seringkali akan membutuhkan lebih banyak pekerjaan dari pabrik perangkat keras karena semua tanggung jawab pengemudi terserah mereka. Itu juga dapat memiliki beberapa masalah latensi yang melekat dengan microkernels.
Pro
- Pengembang dapat memilih dan memilih apa yang berjalan dalam mode pengguna dan apa yang berjalan dalam mode pengawas
- Pasang footprint yang lebih kecil dari kernel monolitik
- Lebih fleksibel daripada model lainnya
Cons
- Dapat menderita kelambatan proses yang sama dengan microkernel
- Driver perangkat perlu 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 dunia unix di mana mereka biasa memanggil kernel mereka hanya "unix" di tahun 60-an sehingga Linux mulai memanggil kernel mereka "linux" ketika pertama kali dikembangkan pada tahun 90-an..
Ketika memori virtual dikembangkan untuk kemampuan multitasking yang lebih mudah, "vm" diletakkan di depan file untuk menunjukkan bahwa kernel mendukung memori virtual. Untuk sementara kernel Linux disebut vmlinux, tetapi kernel tumbuh terlalu besar untuk muat dalam memori boot yang tersedia sehingga gambar kernel dikompresi dan x berakhir diubah menjadi z untuk menunjukkan itu dikompresi dengan kompresi zlib. Kompresi yang sama ini tidak selalu digunakan, sering diganti dengan LZMA atau BZIP2, dan beberapa kernel hanya disebut 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 tambalan atau perbaikan Anda.
Dalam folder / boot juga akan ada file yang sangat penting lainnya yang disebut initrd.img-version, system.map-versi, dan config-version. File initrd digunakan sebagai disk RAM kecil yang mengekstrak dan mengeksekusi file kernel yang sebenarnya. File system.map digunakan untuk manajemen memori sebelum kernel dimuat sepenuhnya, dan file konfigurasi memberi tahu kernel opsi dan modul apa yang akan dimuat ke dalam gambar kernel saat sedang dikompilasi.
Arsitektur Kernel Linux
Karena kernel Linux bersifat monolitik, ia memiliki tapak terbesar dan kompleksitas paling atas jenis kernel lainnya. Ini adalah fitur desain yang berada di bawah sedikit perdebatan di awal-awal Linux dan masih membawa beberapa kekurangan desain yang sama yang dimiliki oleh kernel monolitik..
Satu hal yang dilakukan pengembang kernel Linux untuk mengatasi kekurangan ini adalah 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 sekadar 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 memutakhirkan ke paket layanan Windows tanpa perlu reboot ...
Modul Kernel
Bagaimana jika Windows sudah menginstal setiap driver dan Anda hanya perlu mengaktifkan driver yang Anda butuhkan? Pada dasarnya itulah yang dilakukan modul kernel untuk Linux. Modul kernel, juga dikenal sebagai modul kernel yang dapat dimuat (LKM), sangat penting untuk menjaga agar kernel berfungsi dengan semua perangkat keras Anda tanpa menggunakan semua memori yang tersedia.
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 dengan mengatur modul untuk memuat, atau tidak memuat, selama startup dengan perintah menuconfig atau dengan mengedit file / boot / config Anda, atau Anda dapat memuat dan membongkar modul dengan cepat menggunakan modprobe. perintah.
Modul pihak ketiga dan sumber tertutup tersedia di beberapa distribusi, seperti Ubuntu, dan mungkin tidak diinstal secara default karena kode sumber untuk modul tidak tersedia. Pengembang perangkat lunak (mis. NVidia, ATI, antara lain) tidak menyediakan kode sumber tetapi mereka membangun modul mereka sendiri dan mengkompilasi file .ko yang diperlukan untuk distribusi. Walaupun modul-modul ini gratis seperti bir, mereka tidak bebas seperti dalam ucapan dan dengan demikian tidak disertakan oleh beberapa distribusi karena pengelola merasakannya “mencemari” kernel dengan menyediakan perangkat lunak tidak bebas.
Kernel bukanlah sihir, tetapi sangat penting untuk komputer mana pun yang berjalan dengan benar. Kernel Linux berbeda dari OS X dan Windows karena ia menyertakan driver di tingkat kernel dan membuat banyak hal didukung "out of the box". Semoga Anda akan tahu sedikit lebih banyak tentang bagaimana perangkat lunak dan perangkat keras Anda bekerja bersama dan file apa yang Anda butuhkan untuk mem-boot komputer Anda.
Kernel.org
Gambar oleh ingridtaylar