Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

На главную -> MyLDP -> Электронные книги по ОС Linux
Цилюрик О.И. Модули ядра Linux
Оглавление Предисловие Вперед

Предисловие от автора

« Omne tulit punctum qui miscuit utile dulci, lectorem delectando pariterque monenendo» :

«Всеобщего одобрения заслуживает тот, кто соединил приятное с полезным».

Гораций, «Ars Poetica».

Введение

Эта книга появилась как итог подготовки и проведения курса тренингов, которые мне предложила организовать компания Global Logic (http://www.globallogic.com/) для сотрудников украинских подразделений компании. Первоначальный курс, начитанный в тренинговом цикле весны-лета 2011 года в Харькове и составил базовую часть текста. К завершению подготовки курса стало ясно, что большую проведенную работу, главным образом по написанию и отладке примеров, жаль терять бессмысленно, только как иллюстративный материал к тренингам. Более того, несколько моих коллег прошедших лет на протяжении работы обращались с просьбой переслать им материал в том «сыром» виде как он есть, и уверяли, что он им заметно помог. Всё это подвигло на намерение довести лекционный материал до печатного издания. Исходные тексты были значительно дополнены и переработаны, итогом чего и получилась книга, которую вы держите в руках.

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

  • Всплеск интереса к операционным системам, базирующихся на ядре Linux, для самых различных классов мобильных устройств. Примерами того есть в высшей степени динамично развивающаяся система Android, или анонсированная к ближайшему завершению система Chrome OS. И в этих тенденциях прослеживается такая особенность, что инструментарий развития прикладных приложений (Java слой) предоставляется и афишируется в максимальной мере, в то время как средства «натягивания» ядра операционной системы на специфическое оборудование заметно (и сознательно?) вуалируются (лицензия GPL обязывает, но разработчики не особенно торопятся...).
  • Тенденция роста числа процессоров в единице оборудования: на сегодня уже не являются экзотикой компьютеры SMP с 2-4 ядра, или в комбинации: 4 процессора по 4 ядра (пусть это пока и в производительных серверах). Плюс каждое ядро может быть дополнено гипертрейдингом. Но и это только начало: большую активность приобрёл поиск технологий параллельного использования десятков, сотен, а то и тысяч параллельно работающих процессоров — в эту сторону обратим внимание на модель программирования CUDA от компании NVIDIA. Все эти архитектуры используются эффективно только в том случае, если SMP адекватно поддерживается со стороны ядра.

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

Материалы данной книги (сам текст, сопутствующие его примеры, файлы содержащие эти примеры), как и предмет её рассмотрения — задумывались и являются свободно распространяемыми, и могут передаваться и/или изменяться в соответствии с условиями GNU (General Public License), опубликованными Free Software Foundation, версии 2 или более поздней.

Кому адресована эта книга

Книга рассчитана на опытных разработчиков системного программного обеспечения. Предполагается, возможно, отсутствие у читателя богатого опыта в программировании именно для ядра Linux, или даже вообще в программировании для этой системы - но предполагается какой-то опыт в системном программировании для других операционных систем, который будет базой для построения аналогий. В высшей степени плодотворно любое знакомство с одной или несколькими POSIX системами: Open Solaris, QNX, FreeBSD, NetBSD, MINIX3... - с любой из них в равной степени.

Совершенно естественно, что от читателя требуется совершенное знание языка C — единственного необходимого и достаточного языка системного программирования (из числа компилирующих) в Linux. Это необходимо для самостоятельного анализа и понимания приводимых примеров. Очень продуктивно в дополнение к этому (для работы с многочисленными приводимыми примерами, а ещё больше - их модификации и сравнений) хотя бы минимальные познания в языках скриптового программирования UNIX (и лучше нескольких), что-то из числа: bash, perl, awk, python... В высшей степени безусловным подспорьем будет знание и опыт прикладного программирования в стандартах POSIX: обладающий таким опытом найдёт в нём прямые аналогии API и механизмам в ядре Linux.

Естественно, я предполагаю, что вы «на дружеской ноге» с UNIX/POSIX консольными утилитами, такими, как: ls, rm, grep, tar и другие. В Linux используются, наибольшим образом, GNU (FSF) реализации таких утилит, которые набором опций часто отличаются (чаще в сторону расширения) от предписаний стандарта POSIX, и отличаются, порой, от своих собратьев в других операционных системах (Solaris, QNX, ...). Но эти отличия не столь значительны, я думаю, чтобы вызвать какие-либо затруднения.


  Следующий раздел:
Оглавление Структура книги