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)?
sumber
Jawaban:
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.
sumber
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
sumber
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.
sumber
Di bagian Sistem Operasi artikel, Apa Yang Harus Diketahui Setiap Ilmu Komputer , Matt Might merekomendasikan Pengembangan Kernel Linux oleh Love . Meskipun ini adalah topik lanjutan, buku ini ditulis dengan sangat baik.
sumber
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 .
sumber