Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

Помимо уже упомянутых хороших книг (особенно хорошо работает дизайн и реализация системы Opeating System), закрепите ядро ​​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 и т.д. Будьте готовы потопить много времени в этом процессе.

Ответ 4

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

Ответ 5

Отмечая отсутствие BSD здесь, я подумал, что я бы обманул:

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

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

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

Ответ 6

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

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

Некоторые системы, похоже, придерживаются философии "Если это работает, это правильно". В этом свете философия NetBSD может быть описана как "Она не работает, если она не права"

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

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

Ответ 7

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

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

Ответ 8

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

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

Ответ 9

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

Ответ 10

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

Ответ 11

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

Ответ 12

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