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

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

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

13
задан Sam 18 August 2014 в 08:21
поделиться

3 ответа

Когда я взял вышеупомянутый студенческий курс ОС, состояла в том, чтобы добавить одна из наших задач несколько syscalls. Они были чрезвычайно просты, только читая и сбрасывая счетчики, которые считали количество раз, другие syscalls были вызваны. Однако добавление syscall требует взгляда на и изменения довольно многих файлов.. многие из них находятся в том же относительно маленьком поддереве источника ядра, но достаточно для получения Вас знакомый с конвенциями кодирования, по крайней мере.

Вы могли бы также рассмотреть:

  • Добавление другого (очень простого) режима к планировщику для проведения политики Вы находите интересными. "Одна реализация для управления их всех" довольно трудна (и еще тяжелее договариваться), но выполнение простого O (N) планировщик, даже элементарный O (1) планировщик, может быть сделано относительно просто, алгоритмически говоря. Несмотря на это, это требует ввода по абсолютному адресу через большое количество кода.

  • Запись драйвера устройства для очень простой части внешнего оборудования, как 8-разрядный микроконтроллер, который связывается через сериал или даже что-то, которое Вы создаете себя. Если у Вас есть аппаратный опыт, возможно, попытайтесь записать драйвер устройства, который может эмулировать контроллер NES (разрядный удар несколько проводов с помощью последовательного порта и возможно последовательно-параллельного сдвигового регистра). Вы могли также сделать что-то как управление действительно простым светодиодным дисплеем с 7 сегментами (как Вы, имеют в будильнике), или небольшая коллекция их.

6
ответ дан 1 December 2019 в 22:58
поделиться

проект Швейцаров Ядра имеет некоторые большие.

6
ответ дан 1 December 2019 в 22:58
поделиться

Рискуя тем, чтобы запустить войну пламени: я рекомендовал бы Вам избегать кода ядра Linux. Если Вы хотите пачкать руки с программированием ядра, пойдите с FreeBSD, NetBSD или OpenSolaris, например. Код является намного более чистым и лучше структурирован (это - конечно, субъективное мнение), на самом деле разработанный и даже зарегистрированный. Плюс у них есть отладчик ядра (обратите внимание, что Linus против обоих отладчиков ядра и стабильного API ядра, который делает любое ядро движущейся целью для Вашей работы). Эти Ose даже имеют список проектов на их соответствующих веб-сайтах, и у меня лично есть чрезвычайно хороший опыт с людьми на форумах OpenSolaris и списках рассылки NetBSD.

Вы говорите, что у Вас есть опыт с C - смотрят на веб-репозитории исходного кода Linux и OpenSolaris или некоторые BSDs, сравнивают код и делают Ваше собственное мнение. То, что я говорю, я предполагаю, что существует больше к UNIX с открытым исходным кодом, чем Linux, и что необходимо, по крайней мере, посмотреть на них прежде, чем идти для Linux.

6
ответ дан 1 December 2019 в 22:58
поделиться
Другие вопросы по тегам:

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