it-swarm-id.com

Bagaimana memahami kode sumber kernel Linux untuk pemula?

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 tweaker algoritma penggantian halaman di kernel mainstream dan menganalisis kinerjanya untuk satu set beban kerja. Apakah ada rasa kernel linux yang lebih mudah dipahami (jika bukan kernel linux-2.6.xx)?

12
user16867

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 diperlihatkan 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 kepadaku diagram alurmu dan sembunyikan mejamu, dan aku akan terus menjadi bingung. Tunjukkan padaku mejamu, dan aku biasanya tidak membutuhkan diagram alurmu; mereka akan jelas." - Fred Brooks.

13
Maglob

Kernel Newbies cukup bagus, kurasa

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

4
Mahmoud Hossam

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.

3
Saroj Panda

Di bagian Sistem Operasi artikel, Apa Yang Harus Diketahui Setiap Ilmu Komputer , Matt Might recommended Pengembangan Kernel Linux oleh Love . Meskipun ini adalah topik lanjutan, buku ini ditulis dengan sangat baik.

2
Anthony

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

0
LennyProgrammers