Apa Kernel Linux dan Apa yang Dilakukannya?

Daftar Isi:

Apa Kernel Linux dan Apa yang Dilakukannya?
Apa Kernel Linux dan Apa yang Dilakukannya?

Video: Apa Kernel Linux dan Apa yang Dilakukannya?

Video: Apa Kernel Linux dan Apa yang Dilakukannya?
Video: Download torrents safely (3 TIPS & TRICKS for everyone) - YouTube 2024, Mungkin
Anonim
 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 itu?
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 itu?

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.

Image
Image

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
 Gambar via schoschie di Flickr
Gambar via schoschie di Flickr

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?

Image
Image

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.

Dalam folder / boot juga akan ada file-file penting lainnya yang disebut initrd.img-version, system.map-version, 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 terisi penuh, dan file konfigurasi memberi tahu kernel opsi dan modul apa yang dimuat ke dalam imej kernel ketika sedang dikompilasi.
Dalam folder / boot juga akan ada file-file penting lainnya yang disebut initrd.img-version, system.map-version, 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 terisi penuh, dan file konfigurasi memberi tahu kernel opsi dan modul apa yang dimuat ke dalam imej kernel ketika sedang dikompilasi.

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

Bagaimana jika Windows telah menginstal semua driver dan Anda hanya perlu menyalakan driver yang Anda butuhkan? Pada dasarnya inilah yang dilakukan oleh 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 menghabiskan semua memori yang tersedia.
Bagaimana jika Windows telah menginstal semua driver dan Anda hanya perlu menyalakan driver yang Anda butuhkan? Pada dasarnya inilah yang dilakukan oleh 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 menghabiskan semua memori yang tersedia.

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

Direkomendasikan: