Как понять исходный код ядра Linux для начинающего? [закрыто]


12

Я студент, заинтересованный в работе над управлением памятью, в частности компонентом замены страниц в ядре Linux.

Каковы различные руководства, которые могут помочь мне начать понимать источник ядра?

Я пытался прочитать книгу « Понимание менеджера виртуальной памяти Linux » Мела Гормана и « Понимание ядра Linux » Чезати и Бове, но они не объясняют поток управления через код. В конце они только объясняют различные используемые структуры данных и работу, которую выполняют различные функции. Это делает код более запутанным.

Мой проект посвящен настройке алгоритма замены страниц в основном ядре и анализу его производительности для ряда рабочих нагрузок. Есть ли какая-нибудь разновидность ядра linux, которую было бы легче понять (если бы не ядро ​​linux-2.6.xx)?


1
Могу ли я спросить, почему вы решили заняться программированием ядра, когда вам нелегко найти выход из сложного кода?
LennyProgrammers

Ответы:


13

Фокус на структурах данных . Понимание структур данных обычно важнее кода.

Если вам показаны только структуры данных, но нет кода, вы все равно получите общее представление о системе.

И наоборот, если показан только код, но не структуры данных, очень сложно понять систему.

«На самом деле я буду утверждать, что разница между плохим программистом и хорошим - в том, считает ли он свой код или свои структуры данных более важными. Плохие программисты беспокоятся о коде. Хорошие программисты беспокоятся о структурах данных и их отношениях». - Линус Торвальдс

«Покажите мне свои блок-схемы и скройте ваши таблицы, и я буду продолжать озадачен. Покажите мне ваши таблицы, и мне обычно не понадобятся ваши блок-схемы; они будут очевидны». Фред Брукс.


4

Ядро Ядра довольно хорошее, я думаю

Есть много людей, заинтересованных в изучении того, как работает ядро, я думаю, что вы могли бы узнать кое-что там или два


3

Опция отладчика может быть полезна.

Еще несколько вещей, которые можно сделать после сборки ядра с помощью опции отладчика, - это написать несколько примеров тестовых приложений, вызывающих различные системные вызовы, которые будут вызывать ядро, и вы сможете просматривать один фрагмент кода за раз и понимать его реализацию.



0

Один из способов изучить сложную кодовую базу - запустить ее в отладчике и посмотреть, куда вас ведут . Для Linux есть Linux Kernel Debugger .


Я не уверен, что это будет работать для кого-то, кто все еще пытается что-то сделать с этим гигантским фрагментом кода и как это работает
Махмуд Хоссам

1
Я сделал этот подход с огромными базами кода. Вам нужна точка входа и идея, что искать, хотя.
LennyProgrammers

Да, это то, что я имел в виду, он должен знать, что искать, прежде чем отлаживать ядро
Махмуд Хоссам
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.