Книги: [Классика] [Базы данных] [Internet/WWW] [Сети] [Программирование] [UNIX] [Windows] [Безопасность] [Графика] [Software Engineering] [ERP-системы] [Hardware]
Полное содержание
Предисловие
	
Введение
	
Изменения со времени первого издания
	
Кому адресована эта книга?	
Исходный код и опечатки	
Благодарности	
Выходные сведения	
От издательства	
Часть 1.    Введение в IPC Unix
ГЛАВА 1.    Обзор средств взаимодействия процессов Unix
	
1.1. Введение
	
1.2. Процессы, потоки и общий доступ к информации	
Потоки	
1.3. Живучесть объектов IPC
	
1.4. Пространства имен
	
1.5. Действие команд fork, exec и exit на объекты IPC
	
1.6. Обработка ошибок: функции-обертки	
Значение errno	
1.7. Стандарты Unix	
Posix	
The Open Group	
Версии Unix и переносимость	
1.8. Комментарий к примерам IPC
	
1.9. Резюме
	
Упражнения	
Глава 2.    Posix IPC	
- 2.1. Введение
	
2.2. Имена IPC 	
- Функция px_ipc_name	
 - 2.3. Создание и открытие каналов IPC
	
2.4. Разрешения IPC
	
2.5. Резюме
	
Упражнения 
	
Глава 3.    System V IPC	
- 3.1. Введение
	
3.2. Ключи типа key_t и функция ftok 	
- Пример	
 - 3.3. Структура ipc_perm
	
3.4. Создание и открытие каналов IPC
	
3.5. Разрешения IPC
	
3.6. Повторное использование идентификаторов
	
3.7. Программы ipcs и ipcrm
	
3.8. Ограничения ядра
	
3.9. Резюме
	
Упражнения 
	
Часть 2.    Обмен сообщениями
Глава 4.    Именованные и неименованные каналы
	
4.1. Введение	
 
4.2. Приложение типа клиент-сервер
	
4.3. Программные каналы	
Пример	
4.4. Двусторонние каналы	
4.5. Функции popen и pclose	
Пример	
4.6. Именованные каналы (FIFO)	
Пример	
Пример: неродственные клиент и сервер	
4.7. Некоторые свойства именованных и неименованных каналов
	
4.8. Один сервер, несколько клиентов	
Открытие файла и отправка его в FIFO клиента
Атомарность записи в FIFO	
FIFO и NFS	
4.9. Последовательные и параллельные серверы	
Атака типа «отказ в обслуживании»	
4.10. Потоки и сообщения
	
4.11. Ограничения программных каналов и FIFO
	
4.12. Резюме
	
Упражнения	
Глава 5.    Очереди сообщений Posix
- 5.1. Введение
	
5.2. Функции mq_open, mq_close, mq_unlink 	
- Пример: программа mqcreate1	
- Пример: программа mqunlink	 
  - 5.3. Функции mq_getattr и mq_setattr
 	
- Пример: программа mqgetattr	
- Пример: программа mqcreate	
  - 5.4. Функции mq_send и mq_receive
 	
- Пример: программа mqsend
- Пример: программа mqreceive	
  - 5.5. Ограничения очередей сообщений
 	
- Пример: программа mqsysconf	
 - 5.6. Функция mq_notify
 	
- Пример: простая программа с уведомлением	
- Сигналы Posix: функции типа Async-Signal-Safe	
- Пример: уведомление сигналом	
- Пример: уведомление сигналом с отключением блокировки	
- Пример: уведомление с использованием sigwait вместо обработчика	
- Пример: очереди сообщений Posix и функция select	
- Пример: запуск нового потока	
       - 5.7. Сигналы реального времени Posix	
 
- Пример	
- Функция signal_rt	
  - 5.8. Реализация с использованием отображения в память
 	
- Функция mq_close	
- Функция mq_unlink	
- Функция mq_getattr	
- Функция mq_setattr	
- Функция mq_notify	
- Функция mq_send	
- Функция mq_receive	
       - 5.9. Резюме
	
Упражнения 
	
Глава 6.    Очереди сообщений System V	
- 6.1. Введение
	
6.2. Функция msgget
	
6.3. Функция msgsnd
	
6.4. Функция msgrcv
	
6.5. Функция msgctl 	
- Пример	
 - 6.6. Простые примеры
 	
- Программа msgcreate	
- Программа msgsnd	
- Программа msgrcv
- Программа msgrmid	
- Примеры	
- Программа msgrcvid	
      - 6.7. Пример программы клиент-сервер
	
6.8. Мультиплексирование сообщений 	
- Пример: одна очередь на приложение	
- Пример: одна очередь для каждого клиента	
  - 6.9. Использование select и poll с очередями сообщений
	
6.10. Ограничения, накладываемые на очереди сообщений 	
- Пример
 - 6.11. Резюме
	
Упражнения 
	
Часть 3.    Синхронизация
Глава 7.    Взаимные исключения и условные переменные
	
7.1. Введение
	
7.2. Взаимные исключения: установка и снятие блокировки
	
7.3. Схема производитель-потребитель
	
7.4. Блокировка и ожидание
	
7.5 Условные переменные: ожидание и сигнализация	
Исключение конфликтов блокировок	
7.6. Условные переменные: время ожидания 
и широковещательная передача	
7.7. Атрибуты взаимных исключений и условных переменных	
Завершение процесса, заблокировавшего ресурс	
7.8. Резюме
	
Упражнения	
Глава 8.    Блокировки чтения-записи	
- 8.1. Введение
	
8.2. Получение и сброс блокировки чтения-записи
	
8.3. Атрибуты блокировки чтения-записи
	
8.4. Реализация с использованием взаимных исключений и условных переменных 	
- Тип данных pthread_rwlock_t	
- Функция pthread_rwlock_init
- Функция pthread_rwlock_destroy	
- Функция pthread_rwlock_rdlock	
- Функция pthread_rwlock_tryrdlock	
- Функция pthread_rwlock_wrlock	
- Функция pthread_rwlock_trywrlock	
- Функция pthread_rwlock_unlock	
        - 8.5. Отмена выполнения потоков
 	
- Пример	
- Функция thread1	
- Функция thread2	
   - 8.6. Резюме
	
Упражнения 
	
Глава 9.    Блокирование записей	
- 9.1. Введение
	
9.2. Блокирование записей и файлов 	
- История	
 - 9.3. Блокирование записей с помощью fcntl по стандарту Posix
 	
- Пример	
- Пример: упрощение с помощью макросов	
  - 9.4. Рекомендательная блокировка
 	
- Пример: несотрудничающие процессы	
 - 9.5. Обязательная блокировка
 	
- Пример	
 - 9.6. Приоритет чтения и записи
 	
- Пример: блокировка на чтение при наличии в очереди 
- блокировки на запись	
- Пример: имеют ли приоритет запросы на запись перед 
- запросами на чтение?	
    - 9.7. Запуск единственного экземпляра демона
	
9.8. Блокирование файлов
	
9.9. Блокирование в NFS
	
9.10. Резюме
	
Упражнения 
	
Глава 10.    Семафоры Posix	
- 10.1. Введение
	
10.2. Функции sem_open, sem_close и sem_unlink
	
10.3. Функции sem_wait и sem_trywait
	
10.4. Функции sem_post и sem_getvalue
	
10.5. Простые примеры 	
- Программа semcreate	
- Программа semunlink	
- Программа semgetvalue	
- Программа semwait	
- Программа sempost	
- Примеры
      - 10.6. Задача производителей и потребителей
 	
- Зависание	
 - 10.7. Блокирование файлов
10.8. Функции sem_init и sem_destroy 	
- Пример	
 - 10.9. Несколько производителей, один потребитель
	
10.10. Несколько производителей, несколько потребителей
	
10.11. Несколько буферов
10.12. Использование семафоров несколькими процессами
	
10.13. Ограничения на семафоры 	
- Пример: программа semsysconf	
 - 10.14. Реализация с использованием FIFO
 	
- Функция sem_open	
- Функция sem_close	
- Функция sem_unlink	
- Функция sem_post	
- Функция sem_wait	
     - 10.15. Реализация с помощью отображения в память
 	
- Функция sem_open	
- Функция sem_close	
- Функция sem_unlink	
- Функция sem_post	
- Функция sem_wait	
- Функция sem_trywait	
- Функция sem_getvalue	
       - 10.16. Реализация с использованием семафоров System V
 	
- Функция sem_open	
- Функция sem_close	
- Функция sem_unlink	
- Функция sem_post	
- Функция sem_wait	
- Функция sem_trywait	
- Функция sem_getvalue	
       - 10.17. Резюме
 	
- Упражнения
 
	
Глава 11.    Семафоры System V	
- 11.1. Введение
	
11.2. Функция semget 	
- Инициализация значения семафора	
 - 11.3. Функция semop
	
11.4. Функция semctl
	
11.5. Простые программы 	
- Программа semcreate	
- Программа semrmid	
- Программа semsetvalues	
- Программа semgetvalues	
- Программа semops	
- Примеры	
      - 11.6. Блокирование файлов
	
11.7. Ограничения семафоров System V 	
- Пример	
 - 11.8. Резюме
	
Упражнения 
	
Часть 4.    Разделяемая память
Глава 12.    Введение в разделяемую память
	
12.1. Введение
	
12.2. Функции mmap, munmap и msync	
Почему вообще используется отображение в память?	
12.3. Увеличение счетчика в отображаемом в память файле
	
12.4. Неименованное отображение в память в 4.4BSD
	
12.5. Отображение в память в SVR4 с помощью /dev/zero
	
12.6. Обращение к объектам, отображенным в память
	
12.7. Резюме
	
Упражнения	
Глава 13.    Разделяемая память Posix	
- 13.1. Введение
	
13.2. Функции shm_open и shm_unlink
	
13.3. Функции ftruncate и fstat	
13.4. Простые программы	 
- Программа shmcreate	
- Программа shmunlink	
- Программа shmwrite	
- Программа shmread	
- Примеры	
- Пример	
      - 13.5. Увеличение общего счетчика
	
13.6. Отправка сообщений на сервер
13.7. Резюме	
Упражнения 
	
Глава 14.    Разделяемая память System V	
- 14.1. Введение
	
14.2. Функция shmget
	
14.3. Функция shmat
	
14.4. Функция shmdt
	
14.5. Функция shmctl
	
14.6. Простые программы 	
- Программа shmget	
- Программа shmrmid	
- Программа shmwrite	
- Программа shmread	
- Примеры	
     - 14.7. Ограничения, накладываемые на разделяемую память
 	
- Пример	
 - 14.8. Резюме
	
Упражнение 
	
Часть 5.    Удаленный вызов процедур
Глава 15.    Двери	
15.1. Введение	
Пример	
15.2. Функция door_call	
15.3. Функция door_create
	
15.4. Функция door_return	
15.5. Функция door_cred	
15.6. Функция door_info	
15.7. Примеры	
Функция door_info	
Буфер результатов слишком мал	
Функция door_cred и информация о клиенте	
Автоматическое управление потоками сервера	
Автоматическое управление потоками сервера: несколько процедур	
Атрибут DOOR_UNREF для серверов	
15.8. Передача дескрипторов	
Пример	
15.9. Функция door_server_create
	
15.10. Функции door_bind, door_unbind и door_revoke
	
15.11. Досрочное завершение клиента или сервера	
Досрочное завершение сервера	
Непрерываемость системного вызова door_call
Идемпотентные и неидемпотентные процедуры	
Досрочное завершение клиента	
15.12. Резюме
	
Упражнения	
Глава 16.    Пакет Sun RPC	
- 16.1. Введение
 	
- Пример	
- История	
  - 16.2. Многопоточность
	
16.3. Привязка сервера 	
- Inetd и серверы RPC	
 - 16.4. Аутентификация
	
16.5. Тайм-аут и повторная передача 	
- Управление соединением по TCP	
- Идентификатор транзакций	
- Кэш повторных ответов	
   - 16.6. Семантика вызовов
	
16.7. Досрочное завершение сервера или клиента 	
- Досрочное завершение сервера	
- Досрочное завершение клиента	
  - 16.8. XDR: представление внешних данных
 	
- Пример: использование XDR без RPC	
- Пример: вычисление размера буфера	
- Пример: необязательные данные	
- Пример: обработка связного списка	
    - 16.9. Форматы пакетов RPC
16.10. Резюме 	
Упражнения
	
Эпилог	
Приложение  А
Измерение производительности
	
А.1. Введение
	
А.2. Результаты
	
А.3. Измерение полосы пропускания: программы
	
А.4. Измерение задержки передачи сообщений: программы
	
А.5. Синхронизация потоков: программы	
А.6. Синхронизация процессов: программы	
Приложение  Б
Основы многопоточного программирования
	
Б.1. Введение
	
Б.2. Основные функции для работы с потоками: создание и завершение	
Приложение  В
Вспомогательные исходные коды
	
В.1. Заголовочный файл unpipc.h
	
В.2. Заголовочный файл config.h	
В.3. Стандартные функции вывода сообщений об ошибках	
Приложение  Г
Решения некоторых упражнений	
Глава 1
	
Глава 2
	
Глава 3
	
Глава 4
	
Глава 5
	
Глава 6
	
Глава 7
	
Глава 9	
Глава 10
	
Глава 11
	
Глава 12
	
Глава 13	
Глава 14
Глава 15
	
Глава 16
Литература	
Алфавитный  указатель	
Начало
Cодержание
Отрывок
[Заказать книгу в магазине "Мистраль"]