Какие части ядра Linux я могу считать для забавы? [закрытый]

Это похоже на временную шкалу. Так просто разбери текст и получи секунды.

string time = "00:01:05";
double seconds = TimeSpan.Parse(time).TotalSeconds;
37
задан 3 revs, 2 users 86% 18 June 2009 в 04:46
поделиться

10 ответов

Я бы рекомендовал посмотреть LXR . Это упрощает отслеживание последовательности выполнения кода (вам не нужно искать каждую вызываемую функцию - ну, у вас есть, но сайт делает это за вас).

Некоторые отправные точки для текущей версии (2.6.30):

  • start_kernel () - воспринимайте его как эквивалент ядра main () . Эта функция инициализирует почти все подсистемы ядра; следуйте ему, чтобы увидеть в коде то, что вы видите, прокручиваясь на экране во время загрузки.
  • entry_32.S - системные вызовы и прерывания (версия x86-32, которая должна быть ближе к тому, что вы знаете; обратите внимание на использование Диалект сборки AT&T вместо диалекта Intel, к которому вы, возможно, более привыкли).
  • head_32.S - точка входа в ядро. Здесь ядро ​​запускается после перехода в защищенный режим; в конце он вызовет start_kernel () .
  • arch / x86 / boot - код начальной загрузки в реальном режиме. Он запускается в сборке ( boot / header.S ), но быстро переходит в код C (начиная с boot / main.c ). Инициализация в реальном режиме (в основном вызовы BIOS, которые необходимо выполнить перед переключением в защищенный режим); он скомпилирован с использованием странного трюка GCC ( .code16gcc ), который позволяет генерировать 32-битный код реального режима.
  • arch / x86 / boot / compressed - если вы когда-нибудь задумывались, откуда приходит сообщение «Decompressing Linux ...», оно отсюда.
32
ответ дан 27 November 2019 в 04:41
поделиться

Лично я всегда находил код планирования задач чем-то вроде ура: - /

Мне кажется, вам нужно найти себе хобби вне отрасли. Или жизнь: -)

11
ответ дан 27 November 2019 в 04:41
поделиться

Комментарии в ядре могут быть довольно забавными. Есть несколько советов о том, где найти лучшие на kerneltrap.

arch / sparc / lib / checkum.S- / * Солнце, ты просто не можешь победить меня, ты просто не можешь. Перестань пытаться, arch / sparc / lib / checkum.S: * сдавайся. Я серьезно, я собираюсь пнуть живое дерьмо arch / sparc / lib / checkum.S- * из вас, игра окончена, погаснет. * /

8
ответ дан 27 November 2019 в 04:41
поделиться

Вы можете прочитать или просмотреть книгу, описывающую ядро ​​Linux, прежде чем углубляться в ядро ​​Linux.

Книги, которые приходят на ум являются:

3
ответ дан 27 November 2019 в 04:41
поделиться

Многие люди рекомендовали, что v0.0.1 linux является наиболее простым для понимания.

Хотя, если вы ищете хороший исходный код ядра для чтения, я бы не стал использовать linux, это чудовищный взлом (вроде того, как сказать, что исходники GCC «забавны»). Вместо этого вы можете попробовать Minix или один BSD (Darwin - это, по сути, ветвь NetBSD iirc) или даже один из многих бесплатных клонов DOS, если все остальное немного пугает ..

1
ответ дан 27 November 2019 в 04:41
поделиться

Вам нужно переопределить слово «развлечение» в вашем контексте. :)

Тем не менее, ядро ​​Linux может быть слишком монстром, чтобы с ним справиться. Вы можете начать с академических или более примитивных ядер, чтобы сначала понять, что происходит. Вы также можете рассмотреть книгу Джоликс .

1
ответ дан 27 November 2019 в 04:41
поделиться

Вы, вероятно, получите больше от чтения книги по теории ОС . Что касается исходного кода: я понятия не имею, но вы можете легко загрузить исходный код ядра Linux и посмотреть, сможете ли вы найти что-нибудь, что вам понравится.

1
ответ дан 27 November 2019 в 04:41
поделиться

Это должно вызвать интересный код при запуске в каталоге src:

grep -ir "fixme" *

также попробуйте использовать другие смешные термины, дерьмо, дерьмо, ебать, пингвин и т. Д.

1
ответ дан 27 November 2019 в 04:41
поделиться

Для развлечения, я думаю, вы также могли увидеть Minix, это не совсем Linux, но «Современные операционные системы» от tenenbaum можно прочитать.

0
ответ дан 27 November 2019 в 04:41
поделиться

Попробуйте прочитать код, реализующий эти символьные устройства: / dev / ноль / dev / null / dev / full

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

Начать с drivers / char / mem. *

1
ответ дан 27 November 2019 в 04:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: