Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Разработка ядра Linux


Автор: powerfox 4.6.2007, 14:27
Издательство "Диалектика-Вильямс" представляет: 

http://www.williamspublishing.com/Books/5-8459-1085-4.html

2-е издание
Роберт Лав 
Linux Kernel Development, 2nd Edition 
Robert Love



http://www.williamspublishing.com/Books/5-8459-1085-4.html


Сегодня мечтой любого линуксоида является работа в команде разработчиков ядра линукс или хотя бы просто небольшое умение копаться в ядре и его понимание. Такая мечта есть как у начинающих линуксоидов, так и у профессиональных разработчиков линукс приложений. Но вся разница между ними лишь в том, что разработчики знают API и умеют писать программы в Unix-стиле. Это подобно машине: можно отлично её водить, но ничего не понимать в том, что у неё под капотом (некоторые даже и открыть капот не умеют).

Помню, года 2 назад хотел почитать что-нибудь про ядро. Меня интересовало не программирование ядра, а именно копание в ядре. Но на книжной ярмарке мне смогли предложить только какую-то брошюрку по сборке 2.2/2.4 ядер и написанию примитивных модулей. Сейчас же из-за резкого повышения интереса к Unix системам (с точки зрения разработки) в продаже стала появляться соответствующая литература. Хорошим примером является книга Роберта Лава «Разработка ядра Linux. Второе издание». Написанная одним из ведущих разработчиков ядра, она проведёт вас через все составляющие части ядра. Научит понимать его структуру и код.

Сразу хочу предупредить, эта книга не для новичков. Для нормального изучения вопроса нужны базовые знания о строении ОС и владение языком программирования Си.

Для начала просто пролистаем книгу. В ней практически нет ни одной страницы, не содержащей код или какие-то диаграммы. Это свидетельствует о том, что в примерах недостатков нет. Причём многие взяты из ядра (2.6, книга базируется на версии 2.6.10, но вся информация применима к любому ядру 2.6, и скорее всего процентов на 80 к 2.8, которое пока ещё даже не ждут)

Итак, перед читателем лежит книжка в 400 страниц с яркой обложкой и логотипом Novell/SUSE. Что же внутри?

А внутри 20 глав, которые сделают всё, что возможно, чтобы научить вас разработке ядра: остальное зависит от ваших кодерских способностей, интеллекта и трудолюбия.

Книга начинается с небольшого введения: рассказывается об особенностях ядра Linux, даются сведения о сообществе разработчиков и необходимый минимум по сборке ядра и базовые сведения о том, что используется в ядре (API).

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

Особенностью книги является то, что она рассчитана не только на опытных разработчиков, но и на средних, так как автор не стремился сделать уклон не только на ядро Linux и его внутренности. Многие общие понятие очень хорошо разъяснены. Например, глава 6 «Прерывания и обработка прерываний» начинается с небольшого объяснения, что это такое. И так почти во всех главах. За объяснением понятий следует небольшой пример кода и пояснения к нему, лишь после чего начинается детальный разбор составляющей ядра и того, как с ней обращаться.

То, что книга написана ведущим разработчиком ядра Linux Робертом Лавом, уже говорит само за себя. Поэтому содержание книги можно не комментировать: всё безупречно, включая примеры. Единственным минусом является некоторая суховатость изложения материала, но это всё же не художественный роман.

Эта книга станет незаменимым учителем будущего разработчика Linux ядра. Она входит в мой список «Must have».

Автор: BlackStar 4.6.2007, 15:10
Эхх... хорошое описание  smile , после такого я обязательно её купил бы, но она у меня уже давно есть  smile 

Автор: powerfox 4.6.2007, 15:29
Цитата(BlackStar @  4.6.2007,  16:10 Найти цитируемый пост)
Эхх... хорошое описание   , после такого я обязательно её купил бы, но она у меня уже давно есть  

Спасибо за отзыв smile

Автор: MAKCim 4.6.2007, 16:11
книга хороша (даже очень хороша)  smile: дает достаточно глубокое понимание процессов, происходящих в ядре
но имхо, опечаток много (хотя это и не столь критично)

Добавлено через 1 минуту и 11 секунд
powerfox
рецензия тоже достойная, держи +

Автор: powerfox 4.6.2007, 17:58
Цитата(MAKCim @  4.6.2007,  17:11 Найти цитируемый пост)
powerfox, рецензия тоже достойная, держи +

Спасибо smile

Автор: Haddingjar 21.10.2007, 12:28
О книге могу сказать одно: отличная вещь!
Читал ее летом =) Доволен =)

Автор: BezImeni 13.11.2007, 00:17
   Сложные вещи описаны простым, понятным языком!  smile  smile 

Автор: vyacheti 13.11.2007, 10:35
Срочто всем читать !!!

Автор: Ignat 5.12.2007, 19:59
Цитата(Haddingjar @  21.10.2007,  12:28 Найти цитируемый пост)
О книге могу сказать одно: отличная вещь!
Читал ее летом =) Доволен =) 

Аналогично smile
Очень хорошая книга.

Автор: RasenHerz 1.4.2008, 13:45
Цитата(RasenHerz @ 30.3.2008,  02:59)
    
Сообщение скрыто модератором: +
Причина: В свободном доступе не нашёл, думаю, что варез
вот еще не менее хорошая книга по ядру Linux:
    Д.Бовет, М.Чезати "Ядро Linux"

что ты поодразумеваешь под свободным доступом? погугли: "Д.Бовет, М.Чезати "Ядро Linux"" и будет тебе свободный доступ - качать есть где.
на рапиду выложил чтоб люди не таскались по поисковикам.

Автор: nickless 1.4.2008, 16:22
Цитата(RasenHerz @  1.4.2008,  11:45 Найти цитируемый пост)
под свободным доступом?

Под свободным доступом обычно подразумевается лицензия вроде Creative Commons, разрешающая свободное распространение (в данном случае) книги.
Пример - http://svnbook.red-bean.com/ у которой в лицензии четко сказано:
Цитата
You are free:
    * to copy, distribute, display, and perform the work

Автор: powerfox 1.4.2008, 20:24
Цитата(RasenHerz @  1.4.2008,  14:45 Найти цитируемый пост)
погугли: "Д.Бовет, М.Чезати "Ядро Linux"" и будет тебе свободный доступ

Цитата(nickless @  1.4.2008,  17:22 Найти цитируемый пост)
Под свободным доступом обычно подразумевается лицензия вроде Creative Commons, разрешающая свободное распространение (в данном случае) книги.

RasenHerz, зачем лезть в юник мир, не понимая его основ?




Автор: RasenHerz 1.4.2008, 22:03
"Свободный доступ" - слишком сложное и неоднозначное понятие, так что не упрекай меня в непонятливости - модератор вполне мог написать что книга не имеет лицензии Creative Commons и т.д., поэтому она потенциально может являться "варезом". А теперь я являюсь еще и виноватым в безграмотности других людей!
Цитата

RasenHerz, зачем лезть в юник мир, не понимая его основ?

Unix мир - мир КОММЕРЧЕСКОГО ПО, даже не смотря на открытый код некоторых Unix систем. Поднятый тобой вопрос никаким образом не связан с темой топика, и уж тем более, не тебе решать разбираюсь ли я в *Nix-подобных системах! Может я подумал "свободный доступ" в данном контексте не что иное как возможность в любое время, без ограничения по времени, трафику и количеству раз скачать этот файл. так что не выпендривайся и оставь свое мнение о моих познаниях при себе.

P.S. мне до фонаря что я в такой форме отвечаю модератору/комодератору и прочим, главное - я никогда и не при каких условиях никого не обзову, усомнюсь в нем, попрекну в чем-либо, все должны иметь друг к другу взаимное уважение, и я не терплю когда по отношению ко мне не соблюдают обычных, так называемых "золотых" правил морали.

P.P.S. + ко всему сказаному я хочу заметить, что на даннном форуме самая худшая атмосфера из всех форумов, которые я когда-либо посещал. 
МОДЕРАТОРЫ/КОМОДЕРАТОРЫ/АДМИНЫ берите пример с ребят http://forum.xakep.ru, вам есть чему у них поучиться. можете банить - мне все равно.

Автор: MAKCim 1.4.2008, 22:16
RasenHerz
предоставьте подтверждение того, что ссылка не является варезом, и я с удовольствием открою пост

Автор: powerfox 2.4.2008, 00:12
Цитата(RasenHerz @  1.4.2008,  23:03 Найти цитируемый пост)
Unix мир - мир КОММЕРЧЕСКОГО ПО, даже не смотря на открытый код некоторых Unix систем. Поднятый тобой вопрос никаким образом не связан с темой топика, и уж тем более, не тебе решать разбираюсь ли я в *Nix-подобных системах! Может я подумал "свободный доступ" в данном контексте не что иное как возможность в любое время, без ограничения по времени, трафику и количеству раз скачать этот файл. так что не выпендривайся и оставь свое мнение о моих познаниях при себе.

Вообще-то сейчас большинство Unix-like систем открыты (ни одной закрытой мне и не вспомнить) и более того — свободны.
Слова «свободный» (от Free Software) и «открытый» (Open Software) в контексте *nix не должны вызывать ни у кого затруднений в восприятии.
Я и не решаю, разбираетесь ли Вы в Unix, но любой специалист в области IT должен с уважениям относиться к авторскому праву (как на ПО, так и на книги). Принадлежность к Unix в свою очередь налагает особую ответственность за это.

Цитата(RasenHerz @  1.4.2008,  23:03 Найти цитируемый пост)
берите пример с ребят ][акер, вам есть чему у них поучиться. можете банить - мне все равно.

Если у них форум такой же, как и журнал, то пусть лучше винград закроют, чем делают похожим на сообщество кул-][аЦкеров.

Автор: fearuth 4.3.2009, 05:30
А чем вам AIX не угодил? Вроде она ЖЕСТКО проприетарная *NIX система =)

Автор: powerfox 4.3.2009, 10:08
Цитата(fearuth @  4.3.2009,  06:30 Найти цитируемый пост)
А чем вам AIX не угодил? Вроде она ЖЕСТКО проприетарная *NIX система =)

Не думаю, что её можно воткнуть на обычный x86.

Автор: Qulish 25.3.2009, 11:43
в книге Роберта Лава, дается очень мало описании системных алгоритмов, да там очень подробно описывается архитектура ядра, но это скучно и не интересно... 

"Д.Бовет, М.Чезати "Ядро Linux" еще пока не читал, так что ничего не могу сказать...

Автор: MAKCim 27.3.2009, 11:35
Цитата(Qulish @  25.3.2009,  11:43 Найти цитируемый пост)
в книге Роберта Лава, дается очень мало описании системных алгоритмов

хм, исходники ядра открыты  smile 
да и к тому же "системные алгоритмы" изменяются настолько часто, что ни одна книга не сможет отрразить текущее состояние дел в этой области

Автор: Qulish 29.3.2009, 10:30
Цитата(MAKCim @ 27.3.2009,  11:35)
хм, исходники ядра открыты  smile 
да и к тому же "системные алгоритмы" изменяются настолько часто, что ни одна книга не сможет отрразить текущее состояние дел в этой области

весь исходник запаришься читать

единственное, что в исходниках сам(новичок в программировании ядра) смог понять это единственный файл <linux/list.h>...

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

с чего начинали... как надо изучать, чтобы было эфективно(если учитывать читатель знаком, хоть и поверхностно, как устроен процессор, знает, тоже поверхностно, ассемблер и не плохо владеет Си).

Автор: MAKCim 29.3.2009, 11:21
Цитата(Qulish @  29.3.2009,  10:30 Найти цитируемый пост)
не могли бы вы рассказать свой опыт изучения ядра Linux...

сначала сабжевая книга
потом маны Intel'а по PM
потом только исходники по мере возникновения интереса
я бы порекомендовал следующий механизм работы с исходным кодом: допустим, тебя заинтересовало, каким образом реализована концепция монтирования
отправная точка - функция sys_mount
от нее уже и пляшешь дальше
т. е древовидный принцип


Цитата(Qulish @  29.3.2009,  10:30 Найти цитируемый пост)
сли учитывать читатель знаком, хоть и поверхностно, как устроен процессор, знает, тоже поверхностно, ассемблер и не плохо владеет Си

нужно отлично владеть С и _четко_ осознавать, _что_ ты хочешь узнать
без четко поставленной цели в коде ядра потеряешься
чтобы добраться до цели нужно научиться "зрить в корень", т. е фильтровать ненужный код, который может завести в дебри
степень нужности в основном определяется исходя из мнемонических названий функций
весьма полезным являются cross-reference ресурсы типа этого
http://tomoyo.sourceforge.jp/cgi-bin/lxr/ident

Автор: annushka89 1.5.2009, 21:54
скажите, если я хочу начать изучать ядро linux в исходных кодах, как мне надо это начать:
сначала установить linux, а потом загрузить sourceKernel и изучать его(устанавливая его повер системы-linux) или же надо как-то по-другому?

Как это сделать и как, работая в linux, компилировать и исправлять ядро(т.е. исправленное ядро загружать в linux или надо как-то по-другому) и как затем изминения отслеживать в работе?

Просьба, помочь разобраться, пожалуйста


Автор: powerfox 1.5.2009, 23:31
Цитата(annushka89 @  1.5.2009,  22:54 Найти цитируемый пост)
скажите, если я хочу начать изучать ядро linux в исходных кодах, как мне надо это начать:

MAKCim постом выше дал хорошую рекомендацию.

Цитата(annushka89 @  1.5.2009,  22:54 Найти цитируемый пост)
сначала установить linux, а потом загрузить sourceKernel и изучать его(устанавливая его повер системы-linux) или же надо как-то по-другому?

Можно и не устанавливать (хотя система хорошая — зачем вам другая?). Загрузить исходники можно с kernel.org. Всё, что требуется — нормальная среда для работы с кодом.

Цитата(annushka89 @  1.5.2009,  22:54 Найти цитируемый пост)
Как это сделать и как, работая в linux, компилировать и исправлять ядро(т.е. исправленное ядро загружать в linux или надо как-то по-другому) и как затем изминения отслеживать в работе?

По вопросу видно, что вам стоит начать изучение литературы по архитектуре компьютера и операционным системам. Сюда же можно добавить книги по Си и ассемблеру. И прежде, чем кидаться в дебри кода Linux, лучше поиграться с Minix3.


Автор: annushka89 1.5.2009, 23:53
спасибо

Цитата

нормальная среда для работы с кодом


Цитата

По вопросу видно, что вам стоит начать изучение литературы по архитектуре компьютера и операционным системам.


а что посоветуете???
если нетрудно, посоветуйте какую версию ядра скачать с kernel.org, и что еще понадобиться для изучения ядра? 

Автор: MAKCim 2.5.2009, 09:29
Цитата(annushka89 @  1.5.2009,  23:53 Найти цитируемый пост)
а что посоветуете???

vim + ctags + taglist вполне хватает


Цитата(annushka89 @  1.5.2009,  23:53 Найти цитируемый пост)
если нетрудно, посоветуйте какую версию ядра скачать с kernel.org, и что еще понадобиться для изучения ядра?  

1. ту, что у тебя в рабочем дистрибутиве
2. понадобится голова, желание и _цель_
Цитата(MAKCim @  29.3.2009,  11:21 Найти цитируемый пост)
нужно отлично владеть С и _четко_ осознавать, _что_ ты хочешь узнать

просто так взять и "начать изучать ядро" не получится

 smile 
на моем опыте это уже вторая девушка, которая хочет поковыряться в ядре smile 

Автор: powerfox 2.5.2009, 23:48
Цитата(annushka89 @  2.5.2009,  00:53 Найти цитируемый пост)
а что посоветуете???

Книги Таненбаума: «Архитектура компьютера», «Операционные системы: разработка и реализация».
У Таненбаума ещё есть «Современне операционные системы», где делается акцент на теории. На, на мой взгляд (причём поверхностный), это частичная копия «Разработки и реализации» + дополнительный материал. В качестве альтернативы можно порекомендовать «ОС» Столлингса (у меня в универе рекомендуют именно её).
Но я бы посоветовал именно в том порядке, в котором я перечислил. 


Цитата(MAKCim @  2.5.2009,  10:29 Найти цитируемый пост)
просто так взять и "начать изучать ядро" не получится

+1.
Особенно ядро рабочей, а не учебной системы.

Автор: Annn123 1.9.2010, 05:42
Модератор: Сообщение скрыто.

Автор: Vicul 17.1.2011, 12:45
Хорошая книга, прочитал на одном дыхании. Жаль, что все коротко изложено.

Автор: gustavomarginale 21.1.2011, 22:00
Модератор: Сообщение скрыто.

Автор: superkaban 7.2.2011, 07:22
Модератор: Сообщение скрыто.

Автор: null56 7.2.2011, 12:04
superkaban, книга уже немного не актуальна, архитектура изменилась, конечно какие - то ключевые моменты остались, но если хорошо владеешь английским, то поищи уже 3 издание этого же автора
http://blog.rlove.org/2010/07/linux-kernel-development-third-edition.html
я где - то выкачал бесплатно


Автор: boostcoder 17.11.2011, 12:54
весьма не плохо изложена, и даже на русском, при том, для актуальный версий: http://rus-linux.net/MyLDP/BOOKS/Moduli-yadra-Linux/kern-mod-index.html

Автор: gormih 13.5.2013, 16:25
Недавно вышло новое издание. Порой автор забывает о первоначально поставленной задаче, но в целом книга весьма и весьма удачная.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)