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

Я хотел бы получить больше знаний о внутренностях операционной системы. Управление процессами, управление памятью и тому подобное.
Я думал об обучении, познакомившись с ядром Linux или BSD.
Какое ядро ​​лучше для изучения?
Как лучше всего начать?
Можете ли вы порекомендовать какие-нибудь хорошие книги?

23.08.2008 21:58:53
12 ОТВЕТОВ
РЕШЕНИЕ

В колледже у меня был класс по операционным системам, где мы использовали книгу Таненбаума . В классе мы реализовали драйвер устройства в операционной системе Minix . Было очень весело, и мы многому научились.

Однако стоит отметить, что если вы выберете Minix, он предназначен для обучения. Это микроядро, в то время как Linux и BSD являются монолитным ядром, поэтому то, что вы изучаете, может быть не на 100% переводимым, чтобы иметь возможность работать с Linux или BSD, но вы все равно можете извлечь из этого много, не обрабатывая столько информации.

В качестве примечания: если вы читали Just for Fun , Линус играл с Minix еще до того, как написал Linux, но этого было недостаточно для его целей.

12
23.08.2008 22:51:16

Раньше я покупал эти книги по рекомендации для той же цели, но никогда не изучал их сам, поэтому воспринимал их только как подержанный совет.

5
23.08.2008 22:26:45

Как пользователь Linux, я бы сказал, что в Linux есть отличное сообщество, чтобы люди могли узнать о ядре. http://kernelnewbies.org - отличное место, чтобы начать задавать вопросы и узнавать, как работает ядро. Я не могу рекомендовать книгу, но как только вы прочитаете исходный материал о новостях ядра, источник очень хорошо задокументирован.

7
23.08.2008 22:27:51

Помимо уже упомянутых хороших книг (особенно хороша разработка и внедрение системы управления), возьмите ядро ​​Linux версии 1.x, загрузите его в VMWare или VirtualBox и начните с него играть.

Вам нужно будет потратить много времени на просмотр исходного кода. Для этого посмотрите http://lxr.linux.no/, которая представляет собой связанную с возможностью просмотра версию источника и делает жизнь намного проще. Самую первую версию Linux (0.01) можно найти по адресу http://lxr.linux.no/linux-old+v0.01/ . Веселье начинается с http://lxr.linux.no/linux-old+v0.01/boot/boot.s . По мере того, как вы переходите от версии к версии, проверьте ChangeLog и покопайтесь в тех частях, которые были изменены, чтобы спасти вас от перечитывания всего материала снова.

Как только вы овладеете концепциями, посмотрите на 2.0, затем на 2.2 и т. Д. Будьте готовы потратить ОЧЕНЬ много времени на процесс.

6
24.08.2008 00:46:09

Когда я учился в университете, я провел семестр, изучая операционные системы, и в рамках этого у меня было задание, в котором мы должны были реализовать файловую систему на основе ОЗУ в Linux.

Это был фантастический способ понять внутренности Linux keurnel и понять, как все это сочетается - и чертовски весело играть с тем, как он взаимодействует со стандартными инструментами.

0
24.08.2008 02:01:09

Там нет замены для погружения в код. Попробуйте найти драйвер или подсистему, которая вас интересует, и поэкспериментируйте с ней. С такими инструментами, как VMware Workstation , очень легко вносить любые изменения, делать снимки виртуальной машины и запускать ваше модифицированное ядро. Если ядро ​​паникует при загрузке, кого это волнует? Просто вернитесь к снимку и устраните проблему.

Для книг я настоятельно рекомендую Linux Kernel Development от Robert Love. Это чудесно написанная книга - много информации, организованной разумно и с юмором ... совсем не сухое чтение.

1
24.08.2008 02:19:04

Я сам не пробовал, но вы можете перейти на Linux From Scratch и начать создавать свой собственный дистрибутив Linux. Звучит как что-то, что займет много времени, но приведет к глубоким знаниям о внутренностях ядра Linux и о том, как работает каждая часть. Конечно, вы можете дополнить это обучение, следуя любым другим советам здесь.

0
24.08.2008 14:34:57
LFS предназначена для того, чтобы вы получили глубокие знания по созданию дистрибутива, и на самом деле не поможет вам понять ядро ​​- просто как его скомпилировать.
Draemon 21.10.2008 13:04:40

Отмечая отсутствие BSD здесь, я решил включить:

Я сам не проходил ни одного из курсов, но слышал, как Маршалл Кирк МакКусик говорил в других случаях, и он действительно хорош в том, что он делает.

И, конечно же, справочные страницы BSD, которые являются отличным ресурсом, поскольку они поддерживаются в гораздо большей степени, чем обычная справочная страница Linux. Возьмем, к примеру, man-страницу uvm (9) , описывающую интерфейс виртуальной памяти в OpenBSD.

Не совсем связано, но я также порекомендую видео « История дистрибутивов программного обеспечения Беркли», так как оно дает хорошее представление о BSD-частях истории и культуры UNIX, а также о множестве веселых анектодов тех времен.

4
27.10.2016 14:38:38

Воспользуйтесь советом Майка Стоуна и начните с Minix. Это то, что сделал Линус! Учебник действительно хорошо написан, и Танненбаум отлично показывает, как различные функции реализованы в реальной системе.

1
25.08.2008 05:53:51

Никто, кажется, не упомянул, что кодирование BSD намного чище и последовательнее. Документация тоже лучше (как уже упоминалось). Но поскольку с любой выбранной вами системой приходится много возиться, я бы выбрал ту, которую вы используете чаще.

1
21.10.2008 13:06:18

Я рекомендую вам ядра BSD! В ядрах BSD гораздо меньше хакеров, поэтому следить за их развитием проще. В ядрах BSD и Linux есть отличные хакеры, но некоторые люди утверждают, что BSD с меньшей славой отфильтровывает новичков. Также легче принимать проектные решения, когда источники не обновляются 100 раз в день.

Среди вариантов BSD мой любимый - NetBSD. Это может быть не безболезненный выбор, который вы хотите для своего рабочего стола, но, поскольку он сильно ориентирован на мобильность, качество довольно хорошее. Я думаю, что эта часть сказать все это:

Некоторые системы, похоже, имеют философию «Если это работает, это правильно». В этом свете философию NetBSD можно охарактеризовать как «она не работает, если она не верна»

Если вы работали достаточно долго, вы будете знать, что NetBSD доставляет удовольствие от изучения хорошего кодирования. Хотя профессионально вы найдете больше шансов с Linux

Какой бы выбор вы ни выбрали, начните присоединяться к их спискам рассылки, следите за обсуждениями. Изучите некоторые патчи и, наконец, попробуйте самостоятельно исправить ошибки. Что касается книг, ищите статьи Диомидиса Спинеллиса и его книги . Это не совсем книга о ядре, но она содержит примеры NetBSD и очень помогает в работе с большим программным обеспечением.

3
28.04.2010 15:50:52

Linux и Minix интересно изучать. Если вы также хотите узнать, как выглядит современная операционная система с микроядром, вы можете взглянуть на QNX. Полная документация доступна онлайн и очень доступна. Например, это онлайн книга.

1
2.02.2012 13:29:26