Apakah Kernel Linux dan Apa Fungsinya?


Dengan lebih 13 juta baris kod, kernel Linux ialah salah satu projek sumber terbuka terbesar di dunia, tetapi apakah itu kernel dan untuk apa ia digunakan?



Jadi Apakah Kernel itu?

Kernel ialah tahap terendah bagi perisian yang boleh diganti dengan mudah yang antara muka dengan perkakasan dalam komputer anda. Ia bertanggungjawab untuk antara muka semua aplikasi anda yang berjalan dalam mod pengguna hingga ke perkakasan fizikal, dan membenarkan proses, dikenali sebagai pelayan, untuk mendapatkan maklumat antara satu sama lain menggunakan komunikasi antara proses (IPC).

Pelbagai Jenis Inti

Sudah tentu, terdapat cara yang berbeza untuk membina inti dan pertimbangan seni bina apabila membinanya dari awal. Secara amnya, kebanyakan biji terbahagi kepada salah satu daripada tiga jenis: monolitik, mikrokernel dan hibrid. Linux ialah kernel monolitik manakala OS X (XNU) dan Windows 7 menggunakan kernel hibrid. Mari kita tinjau cepat tiga kategori supaya kita boleh pergi ke lebih terperinci kemudian.






Imej oleh popcorn di bandar

Mikrokernel
Kernel mikro mengambil pendekatan hanya mengurus perkara yang perlu: CPU, memori dan IPC. Hampir semua perkara lain dalam komputer boleh dilihat sebagai aksesori dan boleh dikendalikan dalam mod pengguna. Mikrokernel mempunyai kelebihan mudah alih kerana ia tidak perlu risau jika anda menukar kad video anda atau sistem pengendalian anda selagi sistem pengendalian masih cuba mengakses perkakasan dengan cara yang sama. Mikrokernel juga mempunyai jejak yang sangat kecil, untuk memori dan ruang pemasangan, dan mereka cenderung lebih selamat kerana hanya proses tertentu yang dijalankan dalam mod pengguna yang tidak mempunyai kebenaran tinggi sebagai mod penyelia.



Kebaikan

  • Mudah alih
  • Jejak pemasangan kecil
  • Jejak ingatan kecil
  • Keselamatan

Keburukan

  • Perkakasan lebih disarikan melalui pemacu
  • Perkakasan mungkin bertindak balas lebih perlahan kerana pemandu berada dalam mod pengguna
  • Proses perlu menunggu dalam baris gilir untuk mendapatkan maklumat
  • Proses tidak boleh mendapatkan akses kepada proses lain tanpa menunggu

Kernel Monolitik
Kernel monolitik adalah bertentangan dengan mikrokernel kerana ia merangkumi bukan sahaja CPU, memori dan IPC, tetapi ia juga termasuk perkara seperti pemacu peranti, pengurusan sistem fail dan panggilan pelayan sistem. Kernel monolitik cenderung lebih baik dalam mengakses perkakasan dan berbilang tugas kerana jika program perlu mendapatkan maklumat daripada memori atau proses lain yang sedang berjalan, ia mempunyai talian yang lebih langsung untuk mengaksesnya dan tidak perlu menunggu dalam baris gilir untuk menyelesaikan sesuatu. Walau bagaimanapun, ini boleh menyebabkan masalah kerana lebih banyak perkara yang dijalankan dalam mod penyelia, lebih banyak perkara yang boleh menjatuhkan sistem anda jika seseorang tidak berkelakuan dengan betul.



Kebaikan

  • Lebih banyak akses terus kepada perkakasan untuk program
  • Lebih mudah untuk proses berkomunikasi antara satu sama lain
  • Jika peranti anda disokong, ia sepatutnya berfungsi tanpa pemasangan tambahan
  • Proses bertindak balas lebih cepat kerana tiada baris gilir untuk masa pemproses

Keburukan

  • Jejak pemasangan besar
  • Jejak memori yang besar
  • Kurang selamat kerana semuanya berjalan dalam mod penyelia


Imej melalui schoschie di Flickr

Iklan

Inti Hibrid
Kernel hibrid mempunyai keupayaan untuk memilih dan memilih perkara yang mereka mahu jalankan dalam mod pengguna dan perkara yang mereka mahu jalankan dalam mod penyelia. Selalunya perkara seperti pemacu peranti dan sistem fail I/O akan dijalankan dalam mod pengguna manakala panggilan IPC dan pelayan akan disimpan dalam mod penyelia. Ini memberikan yang terbaik daripada kedua-dua dunia tetapi selalunya memerlukan lebih banyak kerja pengeluar perkakasan kerana semua tanggungjawab pemandu terpulang kepada mereka. Ia juga boleh mempunyai beberapa masalah kependaman yang wujud dengan mikrokernel.

Kebaikan

  • Pembangun boleh memilih dan memilih apa yang berjalan dalam mod pengguna dan apa yang berjalan dalam mod penyelia
  • Jejak pemasangan yang lebih kecil daripada kernel monolitik
  • Lebih fleksibel daripada model lain

Keburukan

  • Boleh mengalami lag proses yang sama seperti mikrokernel
  • Pemacu peranti perlu diurus oleh pengguna (biasanya)

Di manakah Fail Kernel Linux?

Fail kernel, dalam Ubuntu, disimpan dalam folder /boot anda dan dipanggil vmlinuz- versi . Nama vmlinuz berasal dari dunia unix di mana mereka biasa memanggil kernel mereka hanya unix pada tahun 60-an jadi Linux mula memanggil kernel linux mereka apabila ia mula dibangunkan pada tahun 90-an.

Apabila memori maya dibangunkan untuk kebolehan berbilang tugas yang lebih mudah, vm diletakkan di hadapan fail untuk menunjukkan bahawa kernel menyokong memori maya. Untuk seketika kernel Linux dipanggil vmlinux, tetapi kernel membesar terlalu besar untuk dimuatkan dalam memori but yang tersedia jadi imej kernel dimampatkan dan pengakhiran x ditukar kepada z untuk menunjukkan ia dimampatkan dengan mampatan zlib. Mampatan yang sama ini tidak selalu digunakan, selalunya digantikan dengan LZMA atau BZIP2, dan sesetengah kernel hanya dipanggil zImage.

Penomboran versi akan dalam format A.B.C.D di mana A.B mungkin 2.6, C ialah versi anda dan D menunjukkan tampung atau pembetulan anda.

Dalam folder /boot juga akan terdapat fail lain yang sangat penting yang dipanggil initrd.img-version, system.map-version dan config-version. Fail initrd digunakan sebagai fail kecil cakera RAM yang mengekstrak dan melaksanakan fail kernel sebenar. Fail system.map digunakan untuk pengurusan memori sebelum kernel dimuatkan sepenuhnya, dan fail konfigurasi memberitahu kernel pilihan dan modul yang perlu dimuatkan ke dalam imej kernel apabila ia sedang disusun.

Seni Bina Inti Linux

Kerana kernel Linux adalah monolitik, ia mempunyai jejak terbesar dan paling kompleks berbanding jenis kernel lain. Ini adalah ciri reka bentuk yang berada di bawah agak banyak perdebatan pada zaman awal Linux dan masih membawa beberapa kelemahan reka bentuk yang sama seperti biji monolitik yang wujud.

Iklan

Satu perkara yang dilakukan oleh pembangun kernel Linux untuk mengatasi kelemahan ini adalah dengan membuat modul kernel yang boleh dimuatkan dan dipunggah semasa runtime, bermakna anda boleh menambah atau mengalih keluar ciri kernel anda dengan cepat. Ini boleh melangkaui sekadar menambah fungsi perkakasan pada kernel, dengan memasukkan modul yang menjalankan proses pelayan, seperti virtualisasi tahap rendah, tetapi ia juga boleh membenarkan keseluruhan kernel diganti tanpa perlu but semula komputer anda dalam beberapa keadaan.

Bayangkan jika anda boleh menaik taraf kepada pek perkhidmatan Windows tanpa perlu but semula…

Modul Kernel

Bagaimana jika Windows mempunyai setiap pemacu yang tersedia telah dipasang dan anda hanya perlu menghidupkan pemacu yang anda perlukan? Itulah yang dilakukan oleh modul kernel untuk Linux. Modul kernel, juga dikenali sebagai modul kernel boleh dimuatkan (LKM), adalah penting untuk memastikan kernel berfungsi dengan semua perkakasan anda tanpa menggunakan semua memori anda yang tersedia.

Modul biasanya menambah fungsi pada kernel asas untuk perkara seperti peranti, sistem fail dan panggilan sistem. LKM mempunyai sambungan fail .ko dan biasanya disimpan dalam direktori /lib/modules. Kerana sifat modular mereka anda boleh dengan mudah sesuaikan kernel anda dengan menetapkan modul untuk memuatkan, atau tidak memuatkan, semasa permulaan dengan arahan menuconfig atau dengan mengedit fail /boot/config anda, atau anda boleh memuatkan dan memunggah modul dengan cepat dengan arahan modprobe.

Modul pihak ketiga dan sumber tertutup tersedia dalam beberapa pengedaran, seperti Ubuntu, dan mungkin tidak dipasang secara lalai kerana kod sumber untuk modul tidak tersedia. Pembangun perisian (iaitu nVidia, ATI, antara lain) tidak menyediakan kod sumber sebaliknya mereka membina modul mereka sendiri dan menyusun fail .ko yang diperlukan untuk pengedaran. Manakala modul-modul ini adalah percuma seperti dalam bir, mereka tidak bebas seperti dalam ucapan dan oleh itu tidak disertakan oleh sesetengah pengedaran kerana penyelenggara merasakan ia mencemarkan kernel dengan menyediakan perisian bukan percuma.

Kernel bukanlah sihir, tetapi ia sangat penting untuk mana-mana komputer berjalan dengan baik. Kernel Linux berbeza daripada OS X dan Windows kerana ia termasuk pemacu pada peringkat kernel dan menjadikan banyak perkara disokong di luar kotak. Mudah-mudahan anda akan mengetahui lebih sedikit tentang cara perisian dan perkakasan anda berfungsi bersama-sama dan fail yang anda perlukan untuk but komputer anda.

Kernel.org
Imej oleh ingridtaylar

BACA SETERUSNYA Foto Profil untuk Justin Garrison Justin Garrison
Justin Garrison ialah peminat Linux dan jurutera infrastruktur awan untuk salah satu syarikat terbesar di dunia. Beliau juga pengarang bersama Cloud Native Infrastructure oleh O'Reilly.
Baca Bio Penuh

Artikel Yang Menarik