Rumah >Operasi dan penyelenggaraan >operasi dan penyelenggaraan linux >Apakah subsistem kernel linux?
Terdapat 5 subsistem kernel Linux: 1. Sistem Kawalan Penjadualan Proses (SCHED) 2. Sistem Pengurusan Memori (MM), yang fungsi utamanya adalah untuk mengawal pelbagai proses untuk berkongsi kawasan memori utama dengan selamat; 3. Sistem fail maya (VFS); 4. Antara muka rangkaian (NET);
Persekitaran pengendalian tutorial ini: sistem Ubuntu 16.04, komputer Dell G3.
Kernel:
Dalam sains komputer, ia adalah program komputer yang digunakan untuk mengurus permintaan I/O (input dan output) data yang dikeluarkan oleh perisian, menterjemahkan permintaan ini. menyediakan arahan untuk pemprosesan data dan diproses oleh unit pemprosesan pusat (CPU) dan komponen elektronik lain dalam komputer Ia adalah bahagian paling asas dalam sistem pengendalian moden. Ia adalah perisian yang menyediakan akses selamat kepada perkakasan komputer untuk banyak aplikasi Akses ini terhad, dan kernel menentukan bila dan berapa lama program boleh beroperasi pada bahagian tertentu perkakasan. Beroperasi secara langsung pada perkakasan adalah sangat kompleks. Oleh itu, kernel biasanya menyediakan kaedah abstraksi perkakasan untuk menyelesaikan operasi ini. Melalui mekanisme komunikasi antara proses dan panggilan sistem, proses aplikasi secara tidak langsung boleh mengawal sumber perkakasan yang diperlukan (terutamanya pemproses dan peranti IO).
Apakah subsistem kernel Linux
Inti Linux terutamanya terdiri daripada penjadualan proses (SCHED), pengurusan memori (MM) , dan sistem fail maya Ia terdiri daripada 5 subsistem (VFS), antara muka rangkaian (NET) dan komunikasi antara proses (IPC), seperti yang ditunjukkan dalam rajah di bawah.
1 Penjadualan Proses
Banyak sistem kawalan penjadualan proses Akses. satu proses ke CPU membolehkan berbilang proses dilaksanakan "secara mikro dan selari makro" dalam CPU. Penjadualan proses berada di tengah-tengah sistem, dan subsistem lain dalam kernel bergantung padanya kerana setiap subsistem perlu menggantung atau menyambung semula proses.
Seperti yang ditunjukkan dalam rajah di bawah, proses Linux bertukar antara beberapa keadaan.
Peralihan keadaan proses Linux
Dalam pengaturcaraan pemacu peranti, apabila sumber yang diminta tidak dapat dipenuhi, pemacu biasanya akan menjadualkan proses lain untuk dilaksanakan dan membuat proses ini masuk Dalam keadaan tidur, ia tidak akan dikejutkan dan memasuki keadaan sedia sehingga sumber yang diminta dikeluarkan. Tidur terbahagi kepada tidur terganggu dan tidur tidak terganggu Perbezaan antara keduanya ialah tidur terganggu akan bangun apabila menerima isyarat.
Proses yang sepenuhnya dalam keadaan TASK_UNINTERRUPTIBLE bahkan tidak boleh "dibunuh", jadi kernel selepas Linux 2.6.26 juga mempunyai keadaan TASK_KILLABLE, yang sama dengan "TASK_WAKEKILL|TASK_UNINTERRUPTIBLE" dan boleh bertindak balas kepada maut isyarat.
Dalam kernel Linux, struktur task_struct (include/linux/sched.h) digunakan untuk menerangkan proses Struktur ini mengandungi sumber memori, sumber sistem fail, sumber fail, sumber tty dan isyarat yang menerangkan proses untuk mengendalikan dll. Benang Linux dilaksanakan menggunakan model proses ringan Apabila benang dibuat dalam ruang pengguna melalui API pthread_create(), pada asasnya kernel hanya mencipta task_struct baharu dan mengarahkan semua penunjuk sumber task_struct baharu kepada yang menciptanya penunjuk tugas_struktur.
Sebahagian besar proses (dan berbilang rangkaian dalam proses) dicipta oleh aplikasi ruang pengguna Apabila mereka mempunyai keperluan untuk sumber asas dan akses perkakasan, mereka akan memasuki ruang kernel melalui panggilan sistem. Kadangkala, dalam pengaturcaraan kernel, jika beberapa tugas perlu dilaksanakan secara serentak, utas kernel boleh dimulakan, dan utas ini tidak mempunyai ruang pengguna. Fungsi untuk memulakan utas kernel ialah: pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
Pengurusan memori
Fungsi utama pengurusan memori adalah untuk mengawal pelbagai proses untuk berkongsi kawasan ingatan utama dengan selamat. Pengurusan memori Linux melengkapkan penukaran daripada memori maya kepada memori fizikal untuk setiap proses apabila CPU menyediakan unit pengurusan memori (MMU). Linux 2.6 memperkenalkan sokongan untuk CPU tanpa MMU.
Seperti yang ditunjukkan dalam rajah, secara amnya, setiap proses Linux pada pemproses 32-bit menikmati 4GB ruang memori, 0~3GB kepunyaan ruang pengguna, 3~4GB kepunyaan ruang kernel, dan ruang kernel mempunyai kesan tertentu pada memori konvensional , memori peranti I/O dan memori mewah mempunyai kaedah pemprosesan yang berbeza. Sempadan khusus antara ruang kernel dan ruang pengguna boleh dilaraskan Di bawah pilihan konfigurasi kernel Ciri Kernel→ Pemisahan memori, sempadan boleh ditetapkan kepada 2GB atau 3GB.
Ruang alamat proses Linux
Seperti yang ditunjukkan dalam rajah di atas, pengurusan memori keseluruhan kernel Linux adalah agak besar, termasuk algoritma Buddy asas, yang digunakan untuk mengurus setiap halaman. Penghunian, pengalokasi papak dalam ruang kernel dan pengurusan sekunder perpustakaan C dalam ruang pengguna. Selain itu, kernel juga menyediakan sokongan cache halaman, menggunakan memori untuk cache cakera, dan benang penyiram maklumat peranti sokongan setiap digunakan untuk membuang cache halaman kotor kembali ke cakera. Kswapd (proses swap) ialah benang kernel yang digunakan untuk kitar semula halaman (termasuk halaman bersandarkan fail dan halaman tanpa nama) dalam Linux Ia menggunakan algoritma yang paling kurang digunakan (LRU) untuk kitar semula memori.
3. Sistem fail maya
Seperti yang ditunjukkan dalam rajah,
Sistem Fail Maya Linux
Sistem fail maya Linux menyembunyikan butiran khusus pelbagai perkakasan dan menyediakan antara muka bersatu untuk semua peranti. Selain itu, ia adalah bebas daripada setiap sistem fail tertentu dan merupakan abstraksi pelbagai sistem fail. Ia menyediakan vfs_read(), vfs_write() bersatu dan antara muka lain untuk aplikasi lapisan atas, dan memanggil fungsi ahli struktur operasi_fail yang dilaksanakan dalam sistem fail asas atau pemacu peranti tertentu.
4. Antara muka rangkaian
Antara muka rangkaian menyediakan akses kepada pelbagai standard rangkaian dan sokongan untuk pelbagai perkakasan rangkaian. Seperti yang ditunjukkan dalam Rajah 3.8, antara muka rangkaian dalam Linux boleh dibahagikan kepada protokol rangkaian dan pemacu rangkaian Bahagian protokol rangkaian bertanggungjawab untuk melaksanakan setiap kemungkinan protokol penghantaran rangkaian peranti mempunyai pemacu peranti yang sepadan.
Seni bina rangkaian Linux
Kernel Linux menyokong pelbagai jenis susunan protokol, seperti Internet, UNIX, CAN, NFC, Bluetooth, WiMAX, IrDA, dll. lapisan atas Aplikasi secara seragam menggunakan antara muka soket.
5. Komunikasi antara proses
Komunikasi antara proses menyokong komunikasi antara proses Linux menyokong pelbagai mekanisme komunikasi antara proses, termasuk semaphore, memori bersama, Mesej baris gilir, paip, soket domain UNIX, dsb. Mekanisme ini boleh membantu berbilang proses, akses yang saling eksklusif kepada berbilang sumber, penyegerakan antara proses dan penghantaran mesej. Dalam aplikasi Linux sebenar, orang ramai cenderung menggunakan soket domain UNIX dan bukannya baris gilir mesej dan mekanisme lain dalam Sistem V IPC. Kernel Android telah menambah kaedah komunikasi antara proses Binder baharu.
Kebergantungan antara lima komponen kernel Linux adalah seperti berikut:
Hubungan antara penjadualan proses dan pengurusan memori: kedua-dua sub Sistem bergantung antara satu sama lain. Dalam persekitaran berbilang program, jika program ingin dijalankan, proses mesti dibuat untuknya Perkara pertama yang perlu dilakukan semasa membuat proses ialah memuatkan program dan data ke dalam memori.
Hubungan antara komunikasi antara proses dan pengurusan memori: Subsistem komunikasi antara proses bergantung pada pengurusan memori untuk menyokong mekanisme komunikasi memori dikongsi Mekanisme ini membolehkan dua proses mempunyai sendiri ruang peribadi Selain itu, anda juga boleh mengakses kawasan memori biasa.
Hubungan antara sistem fail maya dan antara muka rangkaian: Sistem fail maya menggunakan antara muka rangkaian untuk menyokong Sistem Fail Rangkaian (NFS), dan juga menggunakan pengurusan memori untuk menyokong RAMDISK peranti.
Hubungan antara pengurusan memori dan sistem fail maya: Pengurusan memori menggunakan sistem fail maya untuk menyokong pertukaran, dan proses pertukaran dijadualkan secara tetap oleh penjadual Inilah sebabnya pengurusan memori bergantung pada penjadualan proses. Apabila peta memori yang diakses oleh proses ditukar, pengurusan memori mengeluarkan permintaan kepada sistem fail maya dan, pada masa yang sama, menangguhkan proses yang sedang berjalan.
Selain kebergantungan ini, semua subsistem dalam kernel juga bergantung pada beberapa sumber biasa. Sumber ini termasuk API yang digunakan oleh semua subsistem, seperti fungsi untuk memperuntukkan dan melepaskan ruang memori, fungsi untuk mengeluarkan amaran atau mesej ralat dan antara muka penyahpepijatan yang disediakan oleh sistem.
Cadangan berkaitan: "Tutorial Video Linux"
Atas ialah kandungan terperinci Apakah subsistem kernel linux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!