จะเข้าใจซอร์สโค้ดของเคอร์เนล Linux สำหรับมือใหม่ได้อย่างไร? [ปิด]


12

ฉันเป็นนักเรียนที่สนใจทำงานเกี่ยวกับการจัดการหน่วยความจำโดยเฉพาะอย่างยิ่งองค์ประกอบการแทนที่หน้าของเคอร์เนลลินุกซ์

คำแนะนำต่าง ๆ ที่ช่วยให้ฉันเริ่มเข้าใจแหล่งเคอร์เนลคืออะไร

ฉันได้ลองอ่านหนังสือทำความเข้าใจกับ Linux Virtual Memory Managerโดย Mel Gorman และทำความเข้าใจกับ Linux Kernelโดย Cesati และ Bovet แต่พวกเขาไม่ได้อธิบายการไหลของการควบคุมผ่านโค้ด พวกเขาจะอธิบายโครงสร้างข้อมูลต่างๆที่ใช้และฟังก์ชั่นการทำงานต่าง ๆ ทำงาน ทำให้รหัสสับสนมากขึ้น

โครงการของฉันเกี่ยวข้องกับการปรับเปลี่ยนอัลกอริทึมการเปลี่ยนหน้าในเคอร์เนลกระแสหลักและวิเคราะห์ประสิทธิภาพสำหรับชุดเวิร์กโหลด มีรสชาติของเคอร์เนล linux ที่จะเข้าใจได้ง่ายขึ้นหรือไม่ (ถ้าไม่ใช่เคอร์เนล linux-2.6.xx)


1
ฉันขอถามได้ไหมว่าทำไมคุณถึงเลือกที่จะเขียนโปรแกรมเคอร์เนลเมื่อคุณรู้สึกว่าไม่สะดวกที่จะหาทางแก้ไขโค้ดที่ซับซ้อน?
LennyProgrammers

คำตอบ:


13

มุ่งเน้นไปที่โครงสร้างข้อมูล การทำความเข้าใจโครงสร้างข้อมูลมักจะสำคัญกว่ารหัส

หากคุณแสดงเฉพาะโครงสร้างข้อมูล แต่ไม่มีรหัสคุณยังคงเห็นภาพรวมของระบบ

ในทางกลับกันหากแสดงเฉพาะโค้ด แต่ไม่ใช่โครงสร้างข้อมูลมันยากที่จะเข้าใจระบบ

“ ในความเป็นจริงฉันจะอ้างว่าความแตกต่างระหว่างโปรแกรมเมอร์ที่ดีกับคนที่ดีคือเขาคิดว่าโค้ดของเขาหรือโครงสร้างข้อมูลของเขามีความสำคัญมากขึ้นหรือเปล่าโปรแกรมเมอร์ที่ไม่ดีต้องกังวลเกี่ยวกับโค้ด - Linus Torvalds

"แสดงผังงานของคุณและซ่อนตารางของคุณและฉันจะยังคงประหลาดใจแสดงตารางของคุณให้ฉันและฉันไม่ต้องการผังงานของคุณ; พวกเขาจะชัดเจน" - Fred Brooks



3

ตัวเลือกการดีบักอาจมีประโยชน์

บางสิ่งเพิ่มเติมที่สามารถทำได้หลังจากสร้างเคอร์เนลด้วยตัวเลือกดีบักเกอร์คือเขียนแอปพลิเคชันทดสอบตัวอย่างที่เรียกการเรียกใช้ระบบต่าง ๆ ซึ่งจะเรียกใช้เคอร์เนลและคุณสามารถท่องผ่านเคอร์เนลรหัสหนึ่งชิ้นในเวลาเดียวกัน


2

ในส่วนของระบบปฏิบัติการของบทความอะไรทุกวิทยาการคอมพิวเตอร์สาขาควรจะรู้ว่าแมตต์อาจแนะนำLinux Kernel พัฒนาจากความรัก แม้ว่านี่จะเป็นหัวข้อขั้นสูงหนังสือเล่มนี้เขียนได้ดีมาก


0

วิธีหนึ่งในการเรียนรู้รหัสฐานที่ซับซ้อนคือเรียกใช้ในดีบักเกอร์และดูว่าอะไรนำคุณไป สำหรับลินุกซ์มีLinux Kernel ดีบักเกอร์


ฉันไม่แน่ใจว่าสิ่งนี้จะใช้ได้กับใครบางคนที่ยังคงพยายามทำอะไรกับโค้ดขนาดมหึมานี้และมันทำงานอย่างไร
Mahmoud Hossam

1
ฉันได้ทำวิธีนี้ด้วยฐานรหัสขนาดใหญ่ คุณต้องมีจุดเริ่มต้นและมีความคิดว่าควรมองหาอะไร
LennyProgrammers

ใช่นั่นคือสิ่งที่ฉันหมายถึงเขาต้องการที่จะรู้ว่าสิ่งที่จะมองหาก่อนที่จะแก้จุดบกพร่องเคอร์เนล
Mahmoud Hossam
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.