Jak zrozumieć kod źródłowy jądra Linux dla początkujących? [Zamknięte]

12

Jestem studentem zainteresowanym pracą nad zarządzaniem pamięcią, w szczególności elementem zastępującym strony w jądrze linuksa.

Jakie są różne przewodniki, które mogą pomóc mi w zrozumieniu źródła jądra?

Próbowałem przeczytać książkę Understanding the Linux Virtual Memory Manager autorstwa Mel Gormana i Understanding the Linux Kernel autorstwa Cesati i Bovet, ale nie wyjaśniają one przepływu kontroli przez kod. Wyjaśniają tylko różne stosowane struktury danych i pracę, jaką wykonują różne funkcje. To sprawia, że ​​kod jest bardziej mylący.

Mój projekt dotyczy ulepszenia algorytmu zastępowania stron w jądrze głównego nurtu i analizy jego wydajności pod kątem zestawu obciążeń. Czy jest jakiś smak jądra Linuksa, który byłby łatwiejszy do zrozumienia (gdyby nie jądro linux-2.6.xx)?

komar
źródło
1
Czy mogę zapytać, dlaczego zdecydowałeś się na programowanie jądra, skoro nie jest ci łatwo znaleźć skomplikowany kod?
LennyProgrammers

Odpowiedzi:

13

Koncentruj się na strukturach danych . Zrozumienie struktur danych jest zwykle ważniejsze niż kod.

Jeśli wyświetlane są tylko struktury danych, ale nie ma kodu, nadal masz duży obraz systemu.

Odwrotnie, jeśli pokazano tylko kod, ale nie struktury danych, bardzo trudno jest zrozumieć system.

„W rzeczywistości twierdzę, że różnica między złym i dobrym programistą polega na tym, czy uważa, że ​​jego kod lub struktury danych są ważniejsze. Źli programiści martwią się o kod. Dobrzy programiści martwią się o struktury danych i ich relacje”. -- Linus Torvalds

„Pokaż mi swoje schematy blokowe i ukryj swoje tabele, a ja nadal będę mistyfikowany. Pokaż mi swoje tabele i zwykle nie potrzebuję twoich schematów blokowych; będą oczywiste”. - Fred Brooks.

Maglob
źródło
4

Kernel Newbies jest całkiem niezły

Jest wiele osób zainteresowanych nauką działania jądra. Myślę, że możesz się tam czegoś nauczyć

Mahmoud Hossam
źródło
3

Przydałaby się opcja debuggera.

Kilka innych rzeczy, które można zrobić po zbudowaniu jądra z opcją debuggera, to napisanie przykładowych aplikacji testowych wywołujących różne wywołania systemowe, które będą wywoływały jądro i możesz przechodzić przez jeden kawałek kodu jądra i rozumieć jego implementację.

Saroj Panda
źródło
0

Jednym ze sposobów nauczenia się złożonej bazy kodu jest uruchomienie go w debuggerze i sprawdzenie, dokąd cię zaprowadzą. W systemie Linux dostępny jest debugger jądra systemu Linux .

LennyProgrammers
źródło
Nie jestem pewien, czy to zadziała dla kogoś, kto wciąż próbuje zrobić z tym gigantycznym kawałkiem kodu i jak to działa
Mahmoud Hossam
1
Podjąłem to podejście z ogromnymi bazami kodu. Potrzebujesz jednak punktu wejścia i pomysłu, czego szukać.
LennyProgrammers,
Tak, o to mi chodziło, musi najpierw wiedzieć, na co zwrócić uwagę przed debugowaniem jądra
Mahmoud Hossam