Майкл Джонсон.

     Ядро ОС Linux.
     Руководство системного программиста.

     Перевод на русский.


Содержание
Введение.
Глава 1. " Прежде чем вы начали..."
  1.1 Типографские соглашения.
  1.2  Необходимые знания для изучения книги.
  1.3  Наставление  читателю.
Глава 2. Драйверы устройств.
  2.2.1 Пример - vgalib.
  2.2.2 Пример : Преобразование мыши.
  2.3 Основы драйверов устройств.
  2.3.1 Область имени (именная область).
  2.3.2 Выделение памяти.
  2.3.3 Символьные и блочные устройства.
  2.3.4. Прерывание или поочередное опрашивание устройств ?
  2.3.5. Механизмы замораживания и активизации.
  2.3.5.1.Усложненный механизм заморозки.
  2.3.6. VFS.
  2.3.6.1. Функция lseek().                                        
  2.3.6.2. Функции read() и write().                               
  2.3.6.3 Функция readdir().                                       
  2.3.6.4 Функция select().                                        
  2.3.6.5 Функция ioctl().                                         
  2.3.6.6.Функция mmap().
  2.3.6.7. Функции open() и release().                             
  2.3.6.8 Функция init().                                          
  2.4 Cимвольные устройства.                                       
  2.4.1. Инициализация.                                            
  2.4.2 Прерывания или последовательный вызов ?                    
  2.5 Дpайвеpы для блочных устpойств.                              
  2.5.1 Инициализация                                              
  2.5.1.1 Файл blk.h                                               
  2.5.1.2. Опознание комплектующих PS.                             
  2.5.2. Механизм кеширования буфера.                              
  2.5.3. Strategy Routine.                                         
  2.6. Функции поддержки.                                          
  2.7. Написание драйвера SCSI.                                    
  2.7.1. Зачем нужны драйверы SCSI.                                
  2.7.2. Что такое SCSI ?
  2.7.2.1. Термины SCSI.                                           
  2.7.3. Команды SCSI.                                             
  2.7.4. С чего начинать ?                                         
  2.7.5. Введение: сбор инструментов.                              
  2.7.6. Интерфейс SCSI в Linux.                                   
  2.7.6. Структура Scsi_Host.
  2.7.7.1. Переменные в структуре Scsi_Host.                       
  2.7.7.1.1. name                                                  
  2.7.7.1.2. can_queue                                             
  2.7.7.1.3. this_id                                               
  2.7.7.1.4. sg_tablesize                                          
  2.7.7.1.5. cmd_per_lun                                           
  2.7.7.1.6. present                                               
  2.7.7.1.7. unchecked_isa_dma                                     
  2.7.7.2. Функции структуры Scsi_Host.                            
  2.7.7.2.1. detect()                                              
  2.7.7.2.1.1. Запрос IRQ.                                         
  2.7.7.2.2. Запрос канала DMA.                                    
  2.7.7.2.3. info()                                                
  2.7.7.2.4. queuecommand()                                        
  2.7.7.2.5. done()
  2.7.7.2.6 command()                                              
  2.7.7.2.7 abort()                                                
  2.7.7.2.8 reset()                                                
  2.7.7.2.9 slave_attach()                                         
  2.7.7.2.10 bios_param()                                          
  2.7.8 Структура Scsi_Cmnd
  2.7.8.1 Зарезервированная область                                
  2.7.8.1.1 Информационные переменные.                             
  2.7.8.1.2 Список Разветвления - компановки. (Scatter-gather)     
  2.7.8.2. Рабочие области.                                        
  2.7.8.2.1 Указатель scsi_done().                                 
  2.7.8.2.2 Указатель host_scribble                                
  2.7.8.2.3 Структура Scsi_Pointer.                                
Глава 3. Файловая система /proc.
  3.1 Каталоги и файлы /proc.                                      
  3.2 Стpуктуpа файловой системы /proc.                            
  3.3 Пpогpамиpование файловой системы /proc.                      
Глава 4. Планиpовщик Linux.
  4.1 Исходный текст.                                              
Глава 5. Как pаботают системные вызовы.
  5.1 Что поддеpживет 386 пpоцессоp?
  5.2 Как Linux использует пpеpывания и исключения.                
  5.3 Как Linux устанавливает вектора системных вызовов.           
  5.4 Как установить свой собственный системный вызов.             
Глава 6. Управление памятью в Linux
  6.1 Введение                                                     
  6.2 Физическая память
  6.3   Память пользовательского процесса                          
  6.4  Данные управления памятью в таблице процессов               
  6.5  Инициализация памяти                                        
  6.5.1. Процессы и программа управления памятью                   
  6.6.  Выделение  и  освобождение  памяти: политика страничной    
  6.7   Программы контроля корректности использования страниц      
  6.8. Листание (paging)                                           
  6.9  Управление памятью в 80386                                  
  6.9.1  Страничная организация (paging) в 386                     
  6.9.2  Сегменты в 80386                                          
  6.9.3   Селекторы в 80386                                        
  6.9.4  Дескрипторы сегментов                                     
  6.9.5   Макросы, используемые при установке дескрипторов         
Приложение А. Библиография
Приложение B. Обзор исходного текста ядра Linux.