Сведения о вопросе

Junior

06:27, 13th August, 2020

Теги

linux   operating-system   kernel   bsd   osdev    

Каков наилучший способ узнать linux или BSD kernel внутренностей?

Просмотров: 565   Ответов: 12

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




  Сведения об ответе

LAST

01:41, 21st August, 2020

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

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

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


  Сведения об ответе

SILA

00:56, 12th August, 2020

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


  Сведения об ответе

+-*/

15:49, 4th August, 2020

Помимо уже упомянутых хороших книг (особенно хороша реализация Opeating System Design &), возьмите 1.x release Linux Kernel, загрузите его в 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

03:05, 26th August, 2020

  • <ля href=" https://rads.stackoverflow.com/amzn/click/com/0596005903 "rel="noreferrer" rel=" nofollow noreferrer " >Linux драйвер устройства


  Сведения об ответе

PAGE

05:53, 27th August, 2020

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

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

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

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


  Сведения об ответе

pumpa

21:06, 1st October, 2020

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

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

Некоторые системы, по-видимому, имеют философию “If it works, it's right”. В этом свете философию NetBSD можно было бы описать как “It doesn't work unless it's right”

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

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


  Сведения об ответе

fo_I_K

11:13, 12th August, 2020

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

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


  Сведения об ответе

прога

11:02, 7th August, 2020

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


  Сведения об ответе

#hash

18:08, 16th August, 2020

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


  Сведения об ответе

davran

20:48, 14th August, 2020

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


  Сведения об ответе

ASER

05:24, 1st August, 2020

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

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


  Сведения об ответе

PHPH

00:09, 16th August, 2020

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться