Làm thế nào để hiểu mã nguồn nhân Linux cho người mới bắt đầu? [đóng cửa]


12

Tôi là một sinh viên thích làm việc với Quản lý bộ nhớ, đặc biệt là thành phần thay thế trang của kernel linux.

Các hướng dẫn khác nhau có thể giúp tôi bắt đầu hiểu nguồn kernel là gì?

Tôi đã cố gắng đọc cuốn sách Tìm hiểu về Trình quản lý bộ nhớ ảo Linux của Mel Gorman và Tìm hiểu về nhân Linux của Cesati và Bovet, nhưng họ không giải thích được dòng điều khiển thông qua mã. Họ cuối cùng chỉ giải thích các cấu trúc dữ liệu khác nhau được sử dụng và các chức năng khác nhau thực hiện. Điều này làm cho mã khó hiểu hơn.

Dự án của tôi liên quan đến việc điều chỉnh thuật toán thay thế trang trong kernel chính và phân tích hiệu suất của nó cho một tập hợp khối lượng công việc. Có một hương vị của hạt nhân linux sẽ dễ hiểu hơn (nếu không phải là hạt nhân linux-2.6.xx)?


1
Tôi có thể hỏi tại sao bạn lại chọn lập trình kernel, khi bạn cảm thấy không dễ dàng với việc tìm đường xung quanh mã phức tạp?
LennyProgrammer

Câu trả lời:


13

Tập trung vào cấu trúc dữ liệu . Hiểu cấu trúc dữ liệu thường quan trọng hơn mã.

Nếu bạn chỉ được hiển thị cấu trúc dữ liệu nhưng không có mã, bạn vẫn có được bức tranh lớn của hệ thống.

Ngược lại, nếu chỉ hiển thị mã chứ không hiển thị cấu trúc dữ liệu, rất khó để hiểu hệ thống.

"Trên thực tế, tôi sẽ tuyên bố rằng sự khác biệt giữa một lập trình viên tồi và một người giỏi là liệu anh ta coi mã của mình hay cấu trúc dữ liệu của mình quan trọng hơn. Các lập trình viên xấu lo lắng về mã. Các lập trình viên giỏi lo lắng về cấu trúc dữ liệu và các mối quan hệ của họ." -- Linus Torvalds

"Cho tôi xem sơ đồ của bạn và che giấu các bảng của bạn, và tôi sẽ tiếp tục bị bí ẩn. Hãy cho tôi xem các bảng của bạn, và tôi thường sẽ không cần sơ đồ của bạn; chúng sẽ rõ ràng." - Fred Brooks.


4

Kernel Người mới khá tốt, tôi đoán vậy

Có rất nhiều người có hứng thú tìm hiểu về cách thức hoạt động của kernel, tôi nghĩ bạn có thể học được một hoặc hai điều ở đó


3

Tùy chọn trình gỡ lỗi có thể hữu ích.

Một số điều nữa có thể được thực hiện sau khi xây dựng kernel với tùy chọn trình gỡ lỗi là viết một số ứng dụng thử nghiệm mẫu gọi các cuộc gọi hệ thống khác nhau sẽ gọi kernel và bạn có thể duyệt qua một đoạn mã hạt nhân tại một thời điểm và hiểu việc triển khai nó.



0

Một cách để học một cơ sở mã phức tạp là chạy nó trong trình gỡ lỗi và xem mọi thứ đưa bạn đến đâu. Đối với Linux có Trình gỡ lỗi hạt nhân Linux .


Tôi không chắc điều này sẽ hiệu quả với ai đó vẫn đang cố gắng làm gì với đoạn mã khổng lồ này và cách thức thực hiện
Mahmoud Hossam

1
Tôi đã thực hiện phương pháp này với các cơ sở mã lớn. Bạn cần một điểm vào và một ý tưởng những gì cần tìm, mặc dù.
LennyProgrammer

Vâng, đó là những gì tôi muốn nói, anh ta cần biết những gì cần tìm trước tiên trước khi gỡ lỗi kernel
Mahmoud Hossam
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.