Rumah > Tutorial sistem > LINUX > teks badan

Perkongsian pengalaman membaca kod sumber kernel Linux

WBOY
Lepaskan: 2024-01-26 21:57:32
ke hadapan
1073 orang telah melayarinya

Dengan populariti Linux yang beransur-ansur, ramai orang sudah biasa dengan pemasangan dan tetapan Linux. Selaras dengan perkembangan pesat Linux, semakin ramai orang ingin mengetahui lebih lanjut tentang Linux. Jika anda ingin mempunyai pemahaman yang mendalam tentang Linux, anda perlu membaca dan menganalisis kod sumber kernel Linux.

Kod sumber kernel Linux boleh diperolehi daripada banyak sumber. Secara umumnya, di bawah sistem Linux yang dipasang, kandungan dalam direktori /usr/src/linux ialah kod sumber kernel. Di samping itu, anda juga boleh memuat turunnya dari Internet, dan fail yang dinyahmampat biasanya terletak dalam direktori linux. Terdapat banyak versi kod sumber kernel, dan versi stabil terkini ialah 2.2.14.

Ramai orang mempunyai rasa bimbang tentang membaca kernel Linux, walaupun ia tidak perlu. Malah, memang sukar untuk membaca kod sistem yang besar dan kompleks seperti kernel Linux, dan ia tidak boleh dicapai seperti yang dibayangkan. Selagi anda mempunyai ketabahan, kesukaran boleh diatasi. Tidak perlu takut dengan kemahiran yang tidak mencukupi Sebenarnya, terdapat banyak perkara mengenai arahan penutupan Linux yang tidak pernah kita hadiri mesyuarat dan belajar dengan melakukan, bukan?

Semuanya memerlukan kemahiran dan alatan. Pendekatan yang betul boleh membimbing kerja, dan alat yang baik boleh mendapat hasil dua kali ganda dengan separuh usaha. Perkara yang sama berlaku untuk membaca kod sumber kernel Linux. Seterusnya, saya akan memperkenalkan beberapa pengalaman saya dalam membaca kod sumber kernel, dan akhirnya memperkenalkan alat membaca di bawah platform Window.

Untuk membaca kod sumber, jika anda ingin berjalan dengan lebih lancar, sebaiknya anda mempunyai pemahaman tertentu tentang latar belakang pengetahuan kod sumber terlebih dahulu. Untuk kod sumber kernel linuxalat membaca kod kernel linux, saya rasa keperluan asas adalah: 1. Pengetahuan asas sistem pengendalian 2. Familiar dengan bahasa C, sebaik-baiknya dengan pengetahuan bahasa himpunan dan piawaian GNUC Pengetahuan yang diperluaskan tentang C. Selain itu, sebelum membaca, anda juga harus mengetahui pengedaran keseluruhan kod sumber kernel Linux. Kami tahu bahawa sistem pengendalian moden biasanya terdiri daripada pengurusan proses, pengurusan memori, sistem fail, pemacu, rangkaian, dll. Jika anda melihat pada kod sumber kernel Linux, anda boleh melihat bahawa setiap direktori secara kasarnya sepadan dengan aspek tersebut. Kod sumber kernel Linux terdiri seperti berikut (diandaikan relatif kepada direktori linux):

arch Subdirektori ini mengandungi kod teras yang berkaitan dengan seni bina perkakasan yang disokong oleh kod sumber teras ini. Sebagai contoh, untuk platform X86, ia adalah i386.

include Direktori ini mengandungi kebanyakan teras termasuk fail. Terdapat juga subdirektori untuk setiap seni bina yang disokong.

init Direktori ini mengandungi kod permulaan teras.

mmDirektori ini mengandungi semua kod pengurusan memori video. Kod pengurusan memori video yang berkaitan dengan seni bina perkakasan tertentu terletak dalam direktori arch/*/mm Contohnya, yang sepadan dengan X86 ialah arch/i386/mm/fault.c.

Semua pemacu peranti dalam sistem pemacu terletak dalam direktori ini. Ia selanjutnya ditakrifkan kepada beberapa jenis pemacu peranti, setiap satunya juga mempunyai subdirektori yang sepadan, seperti pemacu kad bunyi yang sepadan dengan pemacu/bunyi.

ipc Direktori ini mengandungi kod komunikasi antara proses teras.

modul Direktori ini mengandungi modul yang telah dibina dan boleh dimuatkan secara dinamik.

fsLinux kod sistem fail yang disokong. Sistem fail yang berbeza mempunyai subdirektori berbeza yang sepadan antara satu sama lain Sebagai contoh, sistem fail ext2 sepadan dengan subdirektori ext2.

linux内核代码在线_linux内核代码怎么看_linux 内核代码阅读工具

Kod teras utama kernel. Pada masa yang sama, kod yang berkaitan dengan struktur pemproses diletakkan dalam direktori arch/*/kernel.

Kod bahagian rangkaian teras bersih. Setiap subdirektori di atas sepadan dengan aspek rangkaian.

libDirektori ini mengandungi kod perpustakaan teras. Kod perpustakaan yang berkaitan dengan seni bina pemproses diletakkan dalam direktori arch/*/lib/.

skrip Direktori ini mengandungi fail skrip yang digunakan untuk mengkonfigurasi teras.

Dokumentasi Direktori ini mengandungi dokumen untuk rujukan.

Selepas anda memahami struktur kod sumber, anda boleh mula membaca. Mengenai kemahiran membaca atau susunan, terdapat apa yang dipanggil perbezaan mendatar dan menegak. Pandangan mendatar yang dipanggil adalah untuk meneruskan secara beransur-ansur mengikut urutan pelaksanaan program; Walaupun mereka tidak mutlak, mereka sering digabungkan bersama. Untuk kod sumber Linux, kod permulaan boleh diikuti langkah demi langkah sepanjang urutan permulaan Linux Proses umumnya adalah seperti berikut (mengambil platform X86 sebagai contoh):

./larch/i386/boot/bootSect.S-->./larch/i386/boot/setup.S-->./larch/i386/kernel/head.S-->./init/ start_kernel() dalam main.c. Bagi bahagian seperti pengurusan memori video, anda boleh mengeluarkannya secara berasingan untuk bacaan dan analisis. Perasaan saya ialah: adalah yang terbaik untuk membaca kod permulaan mengikut urutan pada mulanya, dan kemudian membaca topik khas, seperti bahagian proses, bahagian pengurusan memori video, dsb. Setiap fungsi perlu diikuti langkah demi langkah. Sebenarnya, ini adalah proses berulangalat membaca kod kernel linux, dan adalah mustahil untuk memahaminya selepas membacanya sekali.

Atas ialah kandungan terperinci Perkongsian pengalaman membaca kod sumber kernel Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:itcool.net
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!