The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

Обзор книги

Обзор книги

Предыдущая  Содержание  Следующая V*D*V

Отсюда мы входим в мир программирования ядра. Глава 2 знакомит с модулями, объясняя тайны искусства и показывая код работающих модулей. Глава 3 рассказывает о символьных драйверах и показывает законченный код драйвера устройства, работающего с памятью, из которого можно читать и писать для развлечения. Использование памяти вместо аппаратного устройства позволяет любому запускать код примера без необходимости приобретения специального оборудования.

 

Техники отладки - жизненно важные средства для программиста и описываются в Главе 4. Одинаково важными для тех, кто будет исследовать современные ядра, являются способы управления исполнением и конкурентным доступом к ресурсам. Глава 5 интересуется проблемами, возникающими при параллельном доступе к ресурсам, и описывает механизмы Linux для управления конкурентным доступом.

 

С отладкой и навыками управления конкурентных процессов вместе, мы двигаемся в дополнительные особенности символьных драйверов, такие как блокирующие операции, использование select и важный вызов ioctl; эти темы - предмет Главы 6.

 

Прежде чем иметь дело с управлением оборудованием, мы анализируем ещё несколько программных интерфейсов ядра: Глава 7 показывает, как управляют временем в ядре, а Глава 8 объясняет распределение памяти.

 

Затем вы сфокусируемся на оборудовании. Глава 9 описывает управление портами ввода-вывода и буферами памяти, имеющимися на устройстве; после этого переходим к обработке прерываний в Главе 10. К сожалению, не каждый сможет запустить код примера этих глав, потому что необходимо иметь некоторое оборудование, чтобы протестировать программный интерфейс прерываний. Мы старались изо всех сил, чтобы свести к минимуму требования к оборудованию, но вам всё-таки необходимо такое простое оборудование, как стандартный параллельный порт, чтобы поработать с кодом примера для этих глав.

 

Глава 11 охватывает использование типов данных в ядре и написание переносимого кода.

 

Вторая половина книги посвящена более сложным темам. Мы начинаем углубляться в работу оборудования, в частности, функционирование специфичных шин для периферии. Глава 12 охватывает детали написания драйверов для устройств PCI, а Глава 13 рассматривает API для работы с устройствами USB.

 

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

 

В Главе 15 мы разбираемся в управлении памятью в Linux. Эта глава показывает, как отобразить память ядра в пространство пользователя (системный вызов mmap), отображение пользовательской памяти в пространство ядра (с помощью get_user_pages) и как отобразить любой вид памяти в пространство устройства (чтобы выполнять операции прямого доступа к памяти [DMA]).

 

Наше понимание памяти будет полезно в следующих двух главах, которые описывают другие главные классы драйверов. Глава 16 вводит блочные драйверы и показывает, как они отличаются от символьных драйверов, с которыми мы работали до этого. Затем Глава 17 рассказывает о написании сетевых драйверов. Мы финишируем разговором о последовательных драйверах (Глава 18) и библиографией.

Предыдущая  Содержание  Следующая