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

StackOverflow https://stackoverflow.com/questions/24648

Вопрос

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

Это было полезно?

Решение

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

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

Кстати, если вы читали Просто для развлечения, Линус на самом деле играл с Minix до того, как написал Linux, но для его целей этого было недостаточно.

Другие советы

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

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

Как только вы усвоите концепции, посмотрите на 2.0, затем на 2.2 и т. д.Будьте готовы потратить на этот процесс МНОГО времени.

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

Заметив отсутствие здесь BSD, я решил внести свой вклад:

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

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

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

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

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

Кажется, что в некоторых системах действует философия: «Если это работает, значит, это правильно».В этом свете философию NetBSD можно охарактеризовать так: «Она не работает, если она не правильна».

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top