Yeni başlayanlar için Linux çekirdek kaynak kodunu nasıl anlayabilirim? [kapalı]


12

Bellek Yönetimi üzerinde çalışmak isteyen bir öğrenciyim, özellikle linux çekirdeğinin sayfa değiştirme bileşeni.

Çekirdek kaynağını anlamaya başlamama yardımcı olabilecek farklı kılavuzlar nelerdir?

Ben kitap okumak için çalıştık Linux Sanal Bellek Yöneticisi anlama Mel Gorman tarafından ve Linux çekirdeğinin anlama Cesati ve BOVET tarafından, ancak kodu ile kontrol akışını açıklamaz. Sadece kullanılan çeşitli veri yapılarını ve çeşitli fonksiyonların gerçekleştirdiği çalışmaları açıklarlar. Bu, kodu daha karmaşık hale getirir.

Projem, sayfa değiştirme algoritmasını genel bir çekirdeğin ince ayarını yapmak ve bir dizi iş yükü için performansını analiz etmekle ilgileniyor. Linux çekirdeğinin anlaşılması daha kolay bir lezzeti var mı (linux-2.6.xx çekirdeği değilse)?


1
Karmaşık kodlarda yolunuzu bulmakta kolay olmadığınızda neden çekirdek programlama yapmayı seçtiğinizi sorabilir miyim?
LennyProgrammers

Yanıtlar:


13

Veri yapılarına odaklanın . Veri yapılarını anlamak genellikle koddan daha önemlidir.

Yalnızca veri yapıları gösteriliyor ancak kod gösterilmiyorsa, yine de sistemin büyük resmini elde edersiniz.

Tersine, veri yapıları değil sadece kod gösteriliyorsa, sistemi anlamak çok zordur.

"Aslında, kötü bir programcı ile iyi bir program arasındaki farkın, kodunun mu yoksa veri yapılarının daha mı önemli olduğunu düşünüp düşünmediğini iddia edeceğim. Kötü programcılar kod hakkında endişeleniyor. İyi programcılar veri yapıları ve ilişkileri hakkında endişeli." - Linus Torvalds

"Bana akış çizelgelerinizi gösterin ve tablolarınızı gizleyin, gizemli olmaya devam edeceğim. Tablolarınızı gösterin ve genellikle akış çizelgelerinize ihtiyacım olmayacak; açık olacaklar." - Fred Brooks.


4

Çekirdek Yeniler oldukça iyi, sanırım

Çekirdeğin nasıl çalıştığını öğrenmekle ilgilenen birçok insan var, sanırım orada bir iki şey öğrenebilirsiniz


3

Hata ayıklayıcı seçeneği yararlı olabilir.

Çekirdeği hata ayıklayıcı seçeneği ile oluşturduktan sonra yapılabilecek bazı şeyler, çekirdeği çağıracak ve bir kerede tek bir çekirdek kodundan geçip uygulanmasını anlayabileceğiniz çeşitli sistem çağrılarını çağıran bazı örnek test uygulamaları yazmaktır.



0

Karmaşık bir kod tabanı öğrenmenin bir yolu onu bir hata ayıklayıcıda çalıştırmak ve şeylerin sizi nereye götürdüğünü görmek. Linux için Linux Çekirdek Hata Ayıklayıcısı var .


Bunun hala bu devasa kod parçasıyla ne yapmaya çalıştığını ve nasıl işlediğini bilen biri için işe yarayacağından emin değilim
Mahmoud Hossam

1
Bu yaklaşımı büyük kod tabanlarıyla yaptım. Yine de bir giriş noktasına ve neyi arayacağınıza dair bir fikre ihtiyacınız var.
LennyProgrammers

Evet, demek istediğim, çekirdeği hata ayıklamadan önce ilk olarak ne arayacağını bilmesi gerekiyor
Mahmoud Hossam
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.