Apakah Kernel Linux dan Apa Itu?
Dengan lebih daripada 13 juta baris kod, kernel Linux merupakan salah satu projek sumber terbuka terbesar di dunia, tetapi apa yang kernel dan apa yang digunakan untuk?
Jadi apa kernel itu?
Kernel adalah tahap terendah perisian mudah diganti yang menghubungkan dengan perkakasan di komputer anda. Ia bertanggungjawab untuk mengawal semua aplikasi anda yang berjalan dalam "mod pengguna" ke perkakasan fizikal, dan membenarkan proses, dikenali sebagai pelayan, untuk mendapatkan maklumat antara satu sama lain menggunakan komunikasi antara proses (IPC).
Jenis-jenis Kernels yang berlainan
Terdapat banyak cara untuk membina kernel dan pertimbangan seni bina apabila membina satu dari awal. Secara umum, kebanyakan biji jatuh ke dalam salah satu daripada tiga jenis: monolitik, mikrokernel, dan hibrid. Linux adalah kernel monolitik manakala OS X (XNU) dan Windows 7 menggunakan kernel hibrid. Mari buat lawatan cepat ke tiga kategori itu supaya kita dapat lebih detail kemudian.
Imej oleh popcorn uptown
Microkernel
Mikrokomputer mengambil pendekatan hanya menguruskan apa yang ada pada: CPU, memori, dan IPC. Cukup banyak yang lain dalam komputer boleh dilihat sebagai aksesori dan boleh dikendalikan dalam mod pengguna. Microkernels mempunyai kelebihan mudah alih kerana mereka tidak perlu risau jika anda menukar kad video anda atau bahkan sistem operasi anda selagi sistem operasi masih cuba mengakses perkakasan dengan cara yang sama. Microkernels juga mempunyai jejak yang sangat kecil, untuk memori dan memasang ruang, dan mereka cenderung lebih selamat kerana hanya proses tertentu yang dijalankan dalam mod pengguna yang tidak mempunyai keizinan yang tinggi sebagai mod penyelia.
Kebaikan
- Kemudahalihan
- Jejak pemasangan kecil
- Jejak memori kecil
- Keselamatan
Keburukan
- Perkakasan lebih digali melalui pemandu
- Perkakasan mungkin bertindak balas lebih perlahan kerana pemandu berada dalam mod pengguna
- Proses perlu menunggu dalam barisan untuk mendapatkan maklumat
- Proses tidak dapat mengakses proses lain tanpa menunggu
Kernel Monolitik
Biji monolitik adalah bertentangan dengan mikrokernel kerana mereka tidak hanya meliputi CPU, memori, dan IPC, tetapi juga termasuk perkara seperti pemacu peranti, pengurusan sistem fail, dan panggilan pelayan sistem. Biji monolitik cenderung lebih baik untuk mengakses perkakasan dan multitasking kerana jika program perlu mendapatkan maklumat dari ingatan atau proses lain yang menjalankan ia mempunyai garis yang lebih langsung untuk mengaksesnya dan tidak perlu menunggu dalam barisan untuk menyelesaikan sesuatu. Walau bagaimanapun, ini boleh menyebabkan masalah kerana lebih banyak perkara yang berjalan dalam mod penyelia, lebih banyak perkara yang boleh merosakkan sistem anda jika seseorang tidak berkelakuan dengan betul.
Kebaikan
- Lebih banyak akses langsung kepada perkakasan untuk program
- Lebih mudah untuk proses untuk berkomunikasi antara satu sama lain
- Jika peranti anda disokong, ia harus berfungsi tanpa pemasangan tambahan
- Proses bertindak balas dengan pantas kerana tidak ada barisan untuk masa pemproses
Keburukan
- Jejak pemasangan yang besar
- Jejak memori besar
- Kurang selamat kerana semuanya berjalan dalam mod penyeliaan
Imej melalui schoschie di Flickr
Kernel Hybrid
Biji hibrid mempunyai keupayaan untuk memilih dan memilih apa yang mereka mahu jalankan dalam mod pengguna dan apa yang mereka mahu jalankan dalam mod penyeliaan. Sering kali perkara seperti pemacu peranti dan sistem fail I / O akan dijalankan dalam mod pengguna manakala IPC dan panggilan pelayan akan disimpan dalam mod penyeliaan. Ini memberikan yang terbaik dari kedua-dua dunia tetapi sering memerlukan lebih banyak pengilang perkakasan kerana semua tanggungjawab pemandu terpulang kepada mereka. Ia juga boleh mempunyai beberapa masalah latency yang wujud dengan mikrokernels.
Kebaikan
- Pemaju boleh memilih dan memilih apa yang berjalan dalam mod pengguna dan apa yang berjalan dalam mod penyeliaan
- Jejak memasang lebih kecil daripada kernel monolitik
- Lebih fleksibel daripada model lain
Keburukan
- Boleh menderita akibat proses yang sama seperti mikrokernel
- Pemacu peranti perlu diuruskan oleh pengguna (biasanya)
Di mana File Kernel Linux?
Fail kernel, di Ubuntu, disimpan dalam folder / boot anda dan dipanggil vmlinuz-versi. Nama vmlinuz berasal dari dunia unix di mana mereka biasa memanggil biji mereka hanya "unix" kembali pada tahun 60-an sehingga Linux mula memanggil kernel mereka "linux" ketika pertama kali dikembangkan pada 90-an.
Apabila memori maya dikembangkan untuk kebolehan multitasking yang lebih mudah, "vm" diletakkan di hadapan fail untuk menunjukkan bahawa kernel menyokong memori maya. Untuk sementara kernel Linux dipanggil vmlinux, tetapi kernel berkembang terlalu besar untuk dimuatkan dalam memori boot yang ada sehingga imej kernel dimampatkan dan x berakhir ditukar menjadi z untuk menunjukkan ia telah dimampatkan dengan pemampatan zlib. Mampatan yang sama ini tidak selalu digunakan, sering diganti dengan LZMA atau BZIP2, dan beberapa biji hanya disebut zImage.
Penomboran 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 pembetulan anda.
Di dalam folder / boot, terdapat juga fail penting lain yang dipanggil initrd.img-versi, system.map-version, dan versi config. Fail initrd digunakan sebagai cakera RAM kecil yang mengekstrak dan melaksanakan fail kernel sebenar. Fail sistem.map digunakan untuk pengurusan memori sebelum beban penuh kernel, dan fail konfigurasi memberitahu kernel apa pilihan dan modul untuk dimuatkan ke dalam imej kernel apabila ia dikompilasi.
Senibina Kernel Linux
Oleh kerana kernel Linux adalah monolitik, ia mempunyai jejak yang paling besar dan paling rumit di atas jenis kernel lain. Ini adalah ciri reka bentuk yang berada di bawah sedikit perdebatan pada hari-hari awal Linux dan masih membawa beberapa kelemahan reka bentuk yang sama yang biji monolitik ada.
Satu perkara yang dilakukan oleh pemaju kernel Linux untuk mengelakkan kekurangan ini adalah untuk membuat modul kernel yang boleh dimuat dan dipunggah pada runtime, bermakna anda boleh menambah atau mengeluarkan ciri-ciri kernel anda dengan cepat. Ini boleh melampaui hanya menambah fungsi perkakasan ke kernel, dengan memasukkan modul yang menjalankan proses pelayan, seperti virtualisasi peringkat rendah, tetapi ia juga boleh membenarkan keseluruhan kernel diganti tanpa perlu reboot komputer anda dalam beberapa keadaan.
Bayangkan jika anda boleh naik taraf ke pek perkhidmatan Windows tanpa memerlukan reboot ...
Modul Kernel
Bagaimana jika Windows mempunyai setiap pemandu yang ada dipasang dan anda hanya perlu menghidupkan pemandu yang anda perlukan? Itu pada asasnya apa modul kernel lakukan untuk Linux. Modul kernel, juga dikenali sebagai modul kernel yang boleh dimuatkan (LKM), adalah penting untuk menjaga fungsi kernel berfungsi dengan semua perkakasan anda tanpa memakan semua memori yang tersedia.
Modul biasanya menambah fungsi kepada kernel asas untuk perkara seperti peranti, sistem fail, dan panggilan sistem. LKM mempunyai sambungan file .ko dan biasanya disimpan dalam direktori / lib / modul. Kerana sifat modular mereka, anda boleh dengan mudah menyesuaikan kernel anda dengan menetapkan modul untuk memuat, atau tidak memuat, semasa memulakan dengan arahan menuconfig atau dengan mengedit fail / boot / config anda, atau anda boleh memuatkan dan membongkar modul dengan cepat dengan modprobe perintah.
Modul pihak ketiga dan tertutup disediakan dalam beberapa pengedaran, seperti Ubuntu, dan mungkin tidak dipasang secara lalai kerana kod sumber untuk modul tidak tersedia. Pemaju perisian (iaitu nVidia, ATI, antara lain) tidak menyediakan kod sumber tetapi mereka membina modul mereka sendiri dan menyusun fail yang diperlukan .o untuk diedarkan. Walaupun modul ini bebas seperti dalam bir, mereka tidak bebas seperti ucapan dan oleh itu tidak termasuk beberapa pengedaran kerana penyelenggara merasakan ia "mencemari" kernel dengan menyediakan perisian tidak bebas.
Kernel tidak sihir, tetapi ia sangat penting untuk mana-mana komputer berjalan dengan betul. Kernel Linux berbeza daripada OS X dan Windows kerana ia termasuk pemacu di peringkat kernel dan membuat banyak perkara yang disokong "di luar kotak". Mudah-mudahan anda akan mengetahui sedikit lebih banyak tentang bagaimana perisian dan perkakasan anda berfungsi bersama dan apa fail yang anda perlukan untuk boot komputer anda.
Kernel.org
Imej oleh ingridtaylar