^
Начало
Установить закладку
+ Настройки
14 | 16 | 18 | 20 | 22 | 24
Ширина текста:
50% | 60% | 70% | 80% | 90% | 100%
Шрифт:
Цвет текста:
Установить
Цвет фона:
Установить
Сбросить настройки
Введение
Потенциальная аудитория
Изменения в третьем издании
Как организована эта книга
Сопоставление с UNIX и библиотекой С
Примеры
Web-сайты, посвященные этой книге
Благодарности
От издательства
ГЛАВА 1
Знакомство с Win32 и Win64
Основные возможности операционных систем
Эволюция Windows
Версии Windows
Воздействие Windows на ситуацию на рынке
Windows, стандарты и открытые системы
Принципы, лежащие в основе Windows
Подготовка к работе с Win64
О целесообразности привлечения функций стандартной библиотеки C для обработки файлов
Что требуется для работы с данной книгой
Пример: простое последовательное копирование файла
Резюме
Упражнения
ГЛАВА 2
Использование файловой системы и функций символьного ввода/вывода Windows
Файловые системы Windows
Правила именования файлов
Операции открытия, чтения, записи и закрытияфайлов
Вступление: стандартные символы и символы Unicode
Стратегии использования символов Unicode
Стандартные устройства и консольный ввод/вывод
Пример: вывод на консоль сообщений и подсказок для пользователя
Пример: обработка ошибок
Пример: копирование нескольких файлов на стандартное устройство вывода
Пример: преобразование символов из ASCII в Unicode
Управление файлами и каталогами
Пример: печать текущего каталога
Резюме
Упражнения
ГЛАВА 3
Усовершенствованные средства для работы с файлами и каталогами и знакомство с реестром
64-битовая файловая система
Указатели файлов
Определение размера файла
Пример: обновление записей, находящихся в произвольном месте файла
Атрибуты файлов и управление каталогами
Точки монтирования
Пример: вывод списка атрибутов файла
Пример: установка меток времени файла
Стратегии обработки файлов
Блокирование файлов
Реестр
Управление системным реестром
Пример: вывод списка разделов и содержимого реестра
Резюме
Упражнения
ГЛАВА 4
Обработка исключений
Исключения и обработчики исключений
Исключения, возникающие при выполнении операций над числами с плавающей точкой
Ошибки и исключения
Пример: обработка ошибок как исключений
Обработчики завершения
Пример: использование обработчиков завершения для повышения качества программ
Пример: использование функции фильтра
Обработчики управляющих сигналов консоли
Пример: обработчик управляющих сигналов консоли
Векторная обработка исключений
Резюме
Упражнения
ГЛАВА 5
Управление памятью, отображение файлов и библиотеки DLL
Архитектура системы управления памятью в Win32 и Win64
Куча
Управление памятью кучи
Пример: сортировка файлов с использованием бинарного дерева поиска
Отображение файлов
Пример: последовательная обработка файлов с использованием метода отображения
Пример: сортировка отображенных файлов
Базовые указатели
Пример: использование базовых указателей
Динамически компонуемые библиотеки
Пример: явное связывание функци и преобразования файлов
Точки входа библиотеки DLL
Управление версиями DLL
Резюме
Упражнения
ГЛАВА 6
Управление процессами
Процессы и потоки Windows
Создание процесса
Счетчики дескрипторов процессов
Идентификаторы процессов
Дублирование дескрипторов
Завершение и прекращение выполнения процесса
Ожидание завершения процесса
Блоки и строки окружения
Пример: параллельный поиск указанного текстового шаблона
Процессы в многопроцессорной среде
Временные характеристики процесса
Пример: временные характеристики процессов
Генерация управляющих событий консоли
Пример: простое управление задачами
Объекты задач
Резюме
Упражнения
ГЛАВА 7
Потоки и планирование выполнения
Обзор потоков
Основные сведения о потоках
Управление потоками
Использование библиотеки С впотоках
Пример: многопоточный поиск контекста
Потоки и производительность
Модель "хозяин/рабочий" и другие модели многопоточных приложений
Пример: применение принципа "разделяй и властвуй" для решения задачи сортировки слиянием в SMP-системах
Производительность
Локальные области хранения потоков
Приоритеты процессов и потоков и планирование выполнения
Состояния потоков
Возможные ловушки и распространенные ошибки
Ожидание в течение конечного интервала времени
Облегченные потоки
Резюме
Упражнения
ГЛАВА 8
Синхронизация потоков
Необходимость в синхронизации потоков
Объекты синхронизации потоков
Объекты критических участковкода
Использование объектов CRITICAL_SECTION для защиты разделяемыхпеременных
Пример: простая система "производитель/потребитель"
Мьютексы
Семафоры
События
Пример: система "производитель/потребитель"
Обзор: объекты синхронизации Windows
Дополнительные рекомендации относительно использования мьютексов и объектов CRITICAL_SECTION
Другие функции взаимоблокировки
Учет факторов производительности при организации управленияпамятью
Резюме
Упражнения
ГЛАВА 9
Влияние синхронизации на производительность и рекомендации по ее повышению
Влияние синхронизации на производительность
Модельная программа для исследования факторов производительности
Настройка производительности SMP-систем с помощью спин-счетчиков
Дросселирование семафора для уменьшения состязательности между потоками
Родство процессоров
Порты завершения ввода/вывода
Рекомендации по повышению производительности и возможные риски
Резюме
Упражнения
ГЛАВА 10
Усовершенствованные методы синхронизации потоков
Модель переменных условий и свойства безопасности
Пример: объект порогового барьера
Объект очереди
Пример: использование очередей в многоступенчатом конвейере
Асинхронные вызовы процедур
Очередизация асинхронных вызовов процедур
Состояния дежурного ожидания
Безопасная отмена выполнения потоков
Создание переносимых приложений с использованием потоков Pthreads
Стеки потоков и допустимые количества потоков
Рекомендации по проектированию, отладке и тестированию программ
Как избежать создания некорректного программного кода
За рамками Windows API
Резюме
Упражнения
ГЛАВА 11
Взаимодействие между процессами
Анонимные каналы
Пример: перенаправление ввода/вывода с использованием анонимного канала
Именованные каналы
Функции транзакций именованных каналов
Пример: клиент-серверный процессор командной строки
Комментарии по поводу клиент-серверного процессора командной строки
Почтовые ящики
Создание, подключение и именование каналов и почтовых ящиков
Пример: сервер, обнаруживаемый клиентами
Комментарии по поводу многопоточных моделей
Резюме
Упражнения
ГЛАВА 12
Сетевое программирование с помощью сокетов Windows
Сокеты Windows
Серверные функции сокета
Клиентские функции сокета
Сравнение именованных каналов и сокетов
Пример: функция приема сообщений в случае сокета
Пример: клиент на основе сокета
Пример: усовершенствованный сервер на основе сокетов
Внутрипроцессные серверы
Ориентированные на строки сообщения, точкив хода DLL и TLS
Пример: безопасная многопоточная DLL для обмена сообщениями через сокет
Пример: альтернативная стратегия создания безопасных библиотек DLL с много поточной поддержкой
Дейтаграммы
Сравнение Berkeley Sockets и Windows Sockets
Перекрывающийся ввод/вывод с использованием Windows Sockets
Windows Sockets 2
Резюме
Упражнения
ГЛАВА 13
Windows Services
Написание программ, реализующихслужбы Windows Services: обзор
Функция main()
Функции ServiceMain()
Обработчик управляющих команд службы
Пример: "интерфейсная оболочка" службы
Управление службами Windows
Резюме: функционирование и управление службой
Пример:команднаяоболочкауправленияслужбами
Совместное использование объектов ядра приложениями и службами
Регистрация событий
Замечания по отладке службы
Резюме
Упражнения
ГЛАВА 14
Асинхронный ввод/вывод и порты завершения
Обзор методов асинхронного ввода/вывода Windows
Перекрывающийся ввод/вывод
Пример: использование дескриптора файла в качестве объекта синхронизации
Пример: преобразование файлов с использованием перекрывающегося ввода/вывода и множественной буферизации
Расширенный ввод/вывод с использованием процедуры завершения
Пример: преобразование файла с использованием расширенного ввода/вывода
Асинхронный ввод/вывод сиспользованием нескольких потоков
Таймеры ожидания
Пример: использование таймера ожидания
Порты завершения ввода/вывода
Пример: сервер, использующий порты завершения ввода/вывода
Резюме
Упражнения
ГЛАВА 15
Безопасность объектов Windows
Атрибуты безопасности
Общий обзор средств безопасности: дескриптор безопасности
Управляющие флаги дескриптора безопасности
Идентификаторы безопасности
Работа с ACL
Пример: использование разрешений на доступ в стиле UNIX к файлам NTFS
Пример: инициализация атрибутов защиты
Чтение и изменение дескрипторов безопасности
Пример: чтение разрешений на доступ к файлу
Пример: изменение разрешений на доступ к файлу
Защита объектов ядра и коммуникаций
Пример: защита процесса и его потоков
Обзор дополнительных возможностей защиты объектов
Резюме
Упражнения
ГЛАВА 16
Программирование в среде Win64
Нынешнее состояние Win64
Обзор 64-разрядной архитектуры
Надолго ли хватит 64 бит?
Модель программирования Win64
Типы данных
Перенос имеющегося программного кода
Пример: перенос программы sortMM (программа 5.5)
Резюме
Упражнения
ПРИЛОЖЕНИЕ А
Использование примеров программ
Структура каталогов
Листинги включаемых файлов
Дополнительные служебные программы
ПРИЛОЖЕНИЕ Б
Сопоставление функций Windows, UNIX и библиотеки С
ПРИЛОЖЕНИЕ В
Результаты измерения производительности
Тестовые конфигурации
Измерение производительности
Выполнение тестов
Библиография