Bagaimana memahami kode sumber kernel Linux untuk pemula? [Tutup]

12

Saya seorang siswa yang tertarik untuk mengerjakan Memory Management, khususnya komponen penggantian halaman dari kernel linux.

Apa saja panduan berbeda yang dapat membantu saya untuk mulai memahami sumber kernel?

Saya telah mencoba membaca buku Memahami Linux Virtual Memory Manager oleh Mel Gorman dan Memahami Kernel Linux oleh Cesati dan Bovet, tetapi mereka tidak menjelaskan aliran kontrol melalui kode. Mereka hanya menjelaskan berbagai struktur data yang digunakan dan pekerjaan yang dilakukan berbagai fungsi. Ini membuat kode lebih membingungkan.

Proyek saya menangani tweaking algoritma penggantian halaman di kernel mainstream dan menganalisis kinerjanya untuk satu set beban kerja. Apakah ada rasa kernel linux yang akan lebih mudah dipahami (jika bukan kernel linux-2.6.xx)?

agas
sumber
1
Bolehkah saya bertanya mengapa Anda memilih untuk melakukan pemrograman kernel, ketika Anda merasa tidak mudah dengan menemukan jalan di sekitar kode kompleks?
LennyProgrammers

Jawaban:

13

Fokus pada struktur data . Memahami struktur data biasanya lebih penting daripada kode.

Jika Anda hanya ditampilkan struktur data tetapi tidak ada kode, Anda masih mendapatkan gambaran besar dari sistem.

Begitu juga sebaliknya, jika hanya ditampilkan kode tetapi bukan struktur data, sangat sulit untuk memahami sistem.

"Saya akan, pada kenyataannya, mengklaim bahwa perbedaan antara programmer yang buruk dan yang baik adalah apakah ia menganggap kode atau struktur datanya lebih penting. Programer yang buruk khawatir tentang kode. Programer yang baik khawatir tentang struktur data dan hubungan mereka." - Linus Torvalds

"Tunjukkan padaku diagram alurmu dan sembunyikan mejamu, dan aku akan terus menjadi bingung. Tunjukkan padaku mejamu, dan aku biasanya tidak membutuhkan diagram alurmu; itu akan jelas." - Fred Brooks.

Maglob
sumber
4

Kernel Newbies cukup bagus, saya kira

Ada banyak orang yang tertarik untuk belajar tentang cara kerja kernel, saya pikir Anda mungkin belajar satu atau dua hal di sana

Mahmoud Hossam
sumber
3

Opsi debugger bisa bermanfaat.

Beberapa hal lagi yang dapat dilakukan setelah membangun kernel dengan opsi debugger adalah menulis beberapa contoh aplikasi pengujian yang memanggil berbagai panggilan sistem yang akan memanggil kernel dan Anda dapat menelusuri satu bagian kode kernel sekaligus dan memahami implementasinya.

Saroj Panda
sumber
0

Salah satu cara untuk mempelajari basis kode yang kompleks adalah dengan menjalankannya dalam debugger dan melihat ke mana Anda membawa. Untuk Linux ada Linux Kernel Debugger .

Program Lenny
sumber
Saya tidak yakin ini akan bekerja untuk seseorang yang masih mencoba apa yang harus dilakukan dengan sepotong kode raksasa ini, dan bagaimana cara kerjanya
Mahmoud Hossam
1
Saya telah melakukan pendekatan ini dengan basis kode besar. Anda membutuhkan titik masuk dan ide apa yang harus dicari.
LennyProgrammers
Ya, itulah yang saya maksudkan, dia perlu tahu apa yang harus dicari terlebih dahulu sebelum men-debug kernel
Mahmoud Hossam