LINUX.ORG.RU

Новая книга «Linux Kernel Programming»

 , , ,


10

5

Много воды утекло с момента выхода LDD3 (LDD4 мы, видимо, уже не дождёмся), безнадёжно устарел фундаментальный труд Бовета и Чезати, Роберт Лав давно не радовал нас своими прекрасными творениями. Казалось бы, в мире литературы о программировании ядра Linux наметилась устойчивая стагнация…

Но нет! Ситуацию спасает замечательный индийский программист со звучным именем Кайван Биллимория. Он написал книгу о программировании ядра, аж в двух томах.

Об авторе

Кайван программирует с 1983 года. В то время он самостоятельно научился программировать на бейсике, затем освоил Си и ассемблер под MS-DOS, а потом открыл для себя мир UNIX и Linux. Занимался программированием ядра и драйверов, участвовал в коммерческих и свободных проектах, занимался преподавательской деятельностью.

Повествование в книге ведётся на основе Ubuntu 18.04 LTS и ядра версии 5.4.

Содержание книги

Том 1 – «Исчерпывающее руководство по внутреннему устройству ядра, написанию модулей и синхронизации»:

  • настройка окружения для разработки ядра;
  • сборка ядра из исходников;
  • создание модуля ядра;
  • процессы и потоки;
  • управление памятью;
  • планировщик;
  • синхронизация.

Том 2 – «Драйверы символьных устройств и синхронизация: создание интерфейсов между ядром и пространством пользователя, периферийный ввод-вывод, обработка аппаратных прерываний»:

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

>>> Том 1 на Amazon

>>> Том 2 на Amazon



Проверено: hobbit ()

Ответ на: комментарий от Harald

Напиши лучше!

Всё давно написано. А манускрипты на вроде «Как написать драйвер для ядра Линукс версии 5.15» не нужны.

Половина этой книги не нужна и вызывает брезгливые смешки, если читал «What every programmer should know about memory» или получил подобные знания из чтения архитектурных мануалов на процессор.

Ну, то есть, для школьников, может, и намана: им и как линупс в виртуалочке запилить рассказывают на первых ста с лишним страницах, но нам-то, бородатым мужам, зачем это?

Пните жирным контрактом лучше Лава: пусть ревизию своей книжки сделает.

mv ★★★★★ ()
Ответ на: комментарий от x-signal

А это как раз то, чем придётся заниматься будущему разработчику)

Будущий разработчик должен прочитать мануал на архитектуру своего целевого процессора, чтобы знать, что он программирует, книжку Роберта Лава, если это первый драйвер для Линукса, и всё. Остальное - это живой опыт. Тем более, API и подходы меняются быстрее, чем индусы книжки пишут. Хотя, эти «книжки» и быстрее родить могут.

Вообще, если понимаешь, как работает процессор, на уровне page table, TLB, контекстов, регистров, стеков и т.п., то ты умеешь программировать под любую операционную систему, которая работает на этом процессоре. Различаются только операционные модели, и то, чаще, всего лишь, только API.

mv ★★★★★ ()
Ответ на: комментарий от mv

Ну как бы понятно, что эта книга не для «кулхакеров» с большим опытом, способных прочитав доку на железо запрограммировать любую ОС. А для привлечения новых людей «с гендер-прононсами и цветными волосами» - самое то. Бородатые дядьки не вечны, кому-то же придётся потом ядро развивать) Книга Лава устарела, к сожалению, и там есть не всё. Также книга будет полезна тем, кто хочет освежить свои знания и узнать о нововведениях в современном ядре.

x-signal ()

Ну молодец, вложил столько трудов, а оно устареет через год вслед за говённой LDD.

Казалось бы, в мире литературы о программировании ядра Linux наметилась устойчивая стагнация…

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

slovazap ★★★★★ ()
Ответ на: комментарий от slovazap

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

Для этого [1] код должен быть достаточно читабельным и [2] ты должен знать общую архитектуру ядра. Первое, как правило желает оставлять лучшего, а во втором, без книг разобраться трудно.

P.S. минутка юмора:

книга с озображением собрания тайной ложи линуксо-масонов, обменивающихся перфокартами для захвата власти над миром

hummer ()

Снимаю виртуальную шляпу перед Кайваном. А европейцы, бездельники, совсем обленились. Извините за танцпол, наболело просто.

seiken ★★★★★ ()
Ответ на: комментарий от x-signal

С позиции зумерков может быть и не хрен, между тем все кто освоил в 80-х или начале 90-х программирование освоили его без интернетов с гуглами. И как-то даже не напряглись. А сейчас не все и с интернетами могут.

slovazap ★★★★★ ()
Ответ на: комментарий от slovazap

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

не согласен, коллега. Вернее, скажем, так: эта тенденция полезна только для кодеров, которые занимаются конкретной подсистемой многими годами (эдакий Линукс-хомячок, которому только дай покоммитить - и он уже доволен), и не видят выше своего собственного носа, и для таких манагеров, которые мыслят максимум на пару лет вперед, типа, сейчас продавим вот эту фичу или драйвер в ядро и впарим продукт, а потом хоть гори это ядро синим пламенем. Для полноценного развития бизнеса необходима и обучающая литература и документация. В исходниках, очевидно нет всей информации, ни о архитектуре ядра, ни о формальных моделях (где, например, формальная модель системы контроля доступа?), ни о деталях реализации, какие архитектурные аспекты повлияли на то, что реализация именно такая, а не другая, и т.п.

Официальная документация с kernel.org - это набор разрозненных HTML страничек без определенной структуры, и даже без ссылок на файлы исходников, где описываемый функционал реализован. Строго говоря, это вообще не документация, а собрание сочинений школоты а ля «вот есть такая фича, тута у нее VFS, а тут можно грабить корованы». В такой ситуации любая серьезная работа по формализации знания, или даже просто обобщения и компиляции в одном месте, в данной oбласти заслуживает всяческого одобрения со стороны как разработчиков систем, так и со стороны их манагеров.

seiken ★★★★★ ()
Ответ на: комментарий от seiken

Официальная документация с kernel.org - это набор разрозненных HTML страничек без определенной структуры, и даже без ссылок на файлы исходников, где описываемый функционал реализован. Строго говоря, это вообще не документация, а собрание сочинений школоты а ля «вот есть такая фича, тута у нее VFS, а тут можно грабить корованы». В такой ситуации любая серьезная работа по формализации знания, или даже просто обобщения и компиляции в одном месте, в данной oбласти заслуживает всяческого одобрения со стороны как разработчиков систем, так и со стороны их манагеров.

Потому что 100000-страничная документация на ядро не имеет смысла. Во-первых, на 80% всё расписано в книжках по CS/CE и в спецификациях на железки, 10% - в книжке того же Лава, про общую структуру ядра и его подсистемы, не особо менявшиеся последнюю декаду. А деталями надо жить, да. Писать свой код, портировать его на новые ядра, смотреть, что и почему сломалось, читать мейл лист(ы), ездить на конференции, бухать с другими разработчиками.

mv ★★★★★ ()
Ответ на: комментарий от mv

Половина этой книги не нужна и вызывает брезгливые смешки, если читал «What every programmer should know about memory» или получил подобные знания из чтения архитектурных мануалов на процессор.

всегда задавался вопросом: откуда ульрих дреппер это все просек?

xperious ★★ ()
Ответ на: комментарий от xperious

всегда задавался вопросом: откуда ульрих дреппер это все просек?

Он программировать учился ещё до интернета. Вынужден был читать компьютерные архитектурные мануалы.

Я, честно говоря, тоже сию книжку не читал. По роду работы как-то уже многое знал (околожелезо всю жизнь), плюс когда Ульрих вычитку на инженерах шапки делал, я ходил, слушал, уточнял.

mv ★★★★★ ()
Ответ на: комментарий от anonymous

Лучшая документация - исходный код, имхо.

Хорошо структурированный и понятно написанный исходный код!

А вот от бухла умнее не станешь, милок.

Без бухла и прочих поездок в лес я сгорю ещё до наступления пенсии, такой напряжённый темп жизни. Милок.

mv ★★★★★ ()
Ответ на: комментарий от nanosecond

как промытый и прочищенный бухлом мозг))

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

mv ★★★★★ ()
Ответ на: комментарий от x-signal

Ога, то-то я и смотрю от написанных с нуля ядер деваться некуда)

А зачем, если это легаси худо-бедно пилят? Вот когда уйдут на пенсию, тогда и заменят.

foror ★★★★ ()