Джонсон Харт — Системное программирование в среде Windows
99 Пожалуйста дождитесь своей очереди, идёт подготовка вашей ссылки для скачивания.
Скачивание начинается. Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.
Описание книги «Системное программирование в среде Windows»
Описание и краткое содержание «Системное программирование в среде Windows» читать бесплатно онлайн.
Эта книга посвящена вопросам разработки приложений с использованием интерфейса прикладного программирования операционных систем компании Microsoft (Windows 9х, Windows XP, Windows 2000 и Windows Server 2003). Основное внимание уделяется базовым системным службам, включая управление файловой системой, процессами и потоками, взаимодействие между процессами, сетевое программирование и синхронизацию. Рассматривается методика переноса приложений, написанных в среде Win32, в среду Win64. Подробно описываются все аспекты системы безопасности Windows и ее практического применения. Изобилие реальных примеров, доступных также и на Web-сайте книги, существенно упрощает усвоение материала.
Книга ориентирована на разработчиков и программистов, как высокой квалификации, так и начинающих, а также будет полезна для студентов соответствующих специальностей.
Системное программирование в среде Windows
В этой книге описывается разработка приложений с использованием интерфейса прикладного программирования (Application Programming Interface, API) операционных систем Windows компании Microsoft, причем основное внимание уделяется базовым системным службам, включая управление файловой системой, процессами и потоками, межпроцессное взаимодействие, сетевое программирование и синхронизацию. Пользовательские интерфейсы, внутренние функции Windows и драйверы ввода/вывода в данной книге не рассматриваются, хотя сами по себе эти темы не менее важны и представляют не меньший интерес. Для примеров преимущественно выбирались реалистичные сценарии, и поэтому многие из них вполне могут служить в качестве основы для построения реальных приложений.
Win32/Win64 API, или обобщенно Windows API, поддерживаются семейством 32– и 64-разрядных операционных систем компании Microsoft, в которое в настоящее время входят Windows XP, Windows 2000 и Windows Server 2003. К числу ранних представителей этого семейства относятся операционные системы Windows NT, Windows Me, Windows 98 и Windows 95; в настоящее время эти системы считаются устаревшими, однако многие из приведенных в книге примеров программ способны выполняться и под их управлением. Вопросы перехода от платформы Win32 к развивающейся платформе Win64 обсуждаются по мере необходимости. Win64, поддерживаемый в качестве 64-разрядного интерфейса в некоторых версиях Windows Server 2003 и Windows XP, почти идентичен Win32.
Не вызывает сомнений, что Windows API является важнейшим фактором, который оказывает влияние на весь процесс разработки приложений, и во многих случаях вытесняет поддерживаемый операционными системами UNIX и Linux POSIX API, поскольку считается более предпочтительным или, по крайней мере, предоставляющим те же возможности для приложений, ориентированных на настольные и серверные системы. Поэтому многие опытные программисты заинтересованы в скорейшем изучении Windows API, и данная книга призвана содействовать этому.
Прежде всего, необходимо рассказать вам о том, что представляет собой Windows API, и показать, как им пользоваться в реальных ситуациях, причем этот рассказ должен быть как можно более кратким и не перегруженным излишними деталями. Поэтому данная книга предназначена не для использования в качестве справочного руководства, а для ознакомления с основными свойствами наиболее важных функций и демонстрации возможностей их применения в ситуациях практического программирования. Вооружившись этими знаниями, читатель сможет воспользоваться обширной справочной документацией, предоставляемой компанией Microsoft, для самостоятельного углубленного изучения отдельных вопросов, расширенных возможностей и менее приметных функций в соответствии с возникшими потребностями или заинтересованностью. Лично мне при таком подходе изучение Windows API далось легко, а разработка Windows-программ доставила огромное удовольствие, хотя и без неприятных минут также не обошлось. Мои порывы энтузиазма легко просматриваются в некоторых местах книги, что, собственно, и неудивительно. Впрочем, это вовсе не свидетельствует о том, что я безоговорочно соглашусь с превосходством Windows API над API других операционных систем (ОС), но относительно того, что у него есть масса положительных качеств, вряд ли кто-либо станет возражать.
Авторы многих книг, посвященных Windows, значительное внимание уделяют объяснению того, что представляют собой процессы, виртуальная память, межпроцессное взаимодействие, вытесняющий планировщик, но при этом не показывают, как все это используется в реальных ситуациях. Программистам, имеющим опыт работы с системами UNIX, Linux, IBM MVS, Open VMS и некоторыми другими ОС эти понятия уже знакомы, и они заинтересованы лишь в том, чтобы как можно быстрее перейти к изучению того, как эти возможности реализованы в Windows. К тому же, в большинстве книг по Windows важное место отводится методам программирования на основе пользовательского интерфейса. С целью концентрации внимания лишь на самых главных базовых возможностях, предоставляемых системой, в данной книге тема пользовательского интерфейса не затрагивается, и мы ограничиваемся обсуждением лишь простого консольного символьного ввода/вывода.
В соответствии с принятой в данной книге точке зрения Windows — это всего лишь API операционной системы, предоставляющий набор вполне понятных средств. Потребность в ускоренном изучении Windows испытывают многие программисты, независимо от уровня их опыта, и без знания Windows немыслимо обсуждение таких, например, тем, как модель компонентного объекта (Component Object Model, СОМ), разработанная компанией Microsoft. В некоторых отношениях системы Windows превосходят остальные системы, в других — отстают от них или находятся примерно на том же уровне. Задача данной книги состоит в том, чтобы продемонстрировать, как эффективнее всего использовать эти возможности в реальных ситуациях для разработки полезных, высококачественных и высокопроизводительных приложений.
• Все, кто хочет быстро научиться разрабатывать приложения, независимо от уровня подготовки.
• Программисты и специалисты по разработке программного обеспечения, перед которыми стоит задача переноса существующих приложений, написанных, в частности, для UNIX, на любую из платформ Windows. В книге демонстрируются сравнительные возможности функций и моделей программирования, связанных с использованием Windows, UNIX и стандартной библиотеки С. Каждая из обычных функциональных возможностей UNIX, включая управление процессами, синхронизацию, файловые системы и межпроцессное взаимодействие, рассматривается в терминах Windows.
• Читатели, приступающие к разработке новых проектов, которые не ограничены в своих действиях необходимостью переноса имеющихся программных кодов на другие платформы. В книге охвачены многие аспекты проектирования и реализации программ и продемонстрированы способы использования функций Windows для создания полезных приложений и решения обычных задач программирования.
• Программисты, использующие СОМ и .NET Framework, которые найдут здесь массу полезной информации, облегчающей изучение принципов работы динамически подключаемых библиотек (dynamic link libraries, DLL), моделей потоков и способов их применения, интерфейсов и синхронизации.
• Студенты, изучающие компьютерные дисциплины на старших курсах вузов или занятые подготовкой дипломных работ, связанных с системным программированием или разработкой приложений. Книга будет полезна также тем, кто изучает многопоточное программирование или сталкивается с необходимостью создания сетевых приложений. Ее также можно использовать в качестве полезного дополнения к таким, например, источникам, как книга У. Ричарда Стивенса (W. Richard Stevens) Advanced Programming in the UNIX Environment (см. библиографию), что позволит студентам сравнить возможности Windows и UNIX. Эта книга будет хорошим подспорьем и для студентов, проходящих курс ОС, поскольку в ней показано, какими именно средствами обеспечивается базовая функциональность ОС, представляющих интерес в коммерческом отношении.
Единственным допущением, которое неявно присутствует во всем вышесказанном, является предположение о том, что читатели имеют опыт программирования на языке С.
Изменения в третьем издании
Наряду со значительным обновлением и реорганизацией по сравнению с первыми двумя изданиями, в третьем издании добавлен обширный объем нового материала. Это издание призвано решать следующие задачи:
• Охватить новые возможности, появившиеся в Windows XP, Windows 2000 и Windows Server 2003, а также рассмотреть вопросы перехода к платформе Win64.
• Исключить материал, учитывающий специфику ОС Windows 95, Windows 98 и Windows ME (семейство «Windows 9x»), как устаревший, поскольку на поставляемых в настоящее время персональных системах устанавливается Windows XP, и ограничения, свойственные Windows 9х, уже потеряли свою актуальность.[1] В примерах программ без каких бы то ни было оговорок используются средства, которые входят лишь в текущие версии Windows, хотя в результате этого в Windows 9x некоторые программы работать не будут.
• Предоставить более полное освещение темы потоков и синхронизации, включая связанные с этим аспекты производительности, масштабируемости и надежности. Глава 9, равно как и некоторые из примеров в главе 10, являются новыми.
• Подчеркнуть все возрастающее влияние Windows 2000 и Windows Server 2003 и входящих в их состав новых средств на возможности высокопроизводительных, масштабируемых, многопоточных серверных приложений.
• Исследовать зависимость производительности программ от принципов их построения, обратив особое внимание на многопоточные программы с синхронизацией и на особенности эксплуатации этих программ в условиях симметричных многопроцессорных (Symmetrical Multiprocessor, SMP) систем.
Системное программирование в среде Windows
Автор: | Джонсон М Харт |
Перевод: | А. Г. Гузикевич |
Жанры: | Программирование , ОС и Сети |
Год: | 2005 |
ISBN: | 5-8459-0879-5 |
Эта книга посвящена вопросам разработки приложений с использованием интерфейса прикладного программирования операционных систем компании Microsoft (Windows 9х, Windows XP, Windows 2000 и Windows Server 2003). Основное внимание уделяется базовым системным службам, включая управление файловой системой, процессами и потоками, взаимодействие между процессами, сетевое программирование и синхронизацию. Рассматривается методика переноса приложений, написанных в среде Win32, в среду Win64. Подробно описываются все аспекты системы безопасности Windows и ее практического применения. Изобилие реальных примеров, доступных также и на Web-сайте книги, существенно упрощает усвоение материала.
Книга ориентирована на разработчиков и программистов, как высокой квалификации, так и начинающих, а также будет полезна для студентов соответствующих специальностей.
В этой книге описывается разработка приложений с использованием интерфейса прикладного программирования (Application Programming Interface, API) операционных систем Windows компании Microsoft, причем основное внимание уделяется базовым системным службам, включая управление файловой системой, процессами и потоками, межпроцессное взаимодействие, сетевое программирование и синхронизацию. Пользовательские интерфейсы, внутренние функции Windows и драйверы ввода/вывода в данной книге не рассматриваются, хотя сами по себе эти темы не менее важны и представляют не меньший интерес. Для примеров преимущественно выбирались реалистичные сценарии, и поэтому многие из них вполне могут служить в качестве основы для построения реальных приложений.
Джонсон харт системное программирование среде windows
Размер шрифта:
14 | 16 | 18 | 20 | 22 | 24
Цвет текста:
Установить
Цвет фона:
Установить
Изменения в третьем издании
Как организована эта книга
Сопоставление с UNIX и библиотекой С
Web-сайты, посвященные этой книге
ГЛАВА 1
Знакомство с Win32 и Win64
Основные возможности операционных систем
Воздействие 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
Серверные функции сокета
Клиентские функции сокета
Сравнение именованных каналов и сокетов
Пример: функция приема сообщений в случае сокета
Пример: клиент на основе сокета
Пример: усовершенствованный сервер на основе сокетов
Ориентированные на строки сообщения, точкив хода DLL и TLS
Пример: безопасная многопоточная DLL для обмена сообщениями через сокет
Пример: альтернативная стратегия создания безопасных библиотек DLL с много поточной поддержкой
Сравнение Berkeley Sockets и Windows Sockets
Перекрывающийся ввод/вывод с использованием Windows Sockets
Windows Sockets 2
ГЛАВА 13
Windows Services
Написание программ, реализующихслужбы Windows Services: обзор
Обработчик управляющих команд службы
Пример: «интерфейсная оболочка» службы
Управление службами Windows
Резюме: функционирование и управление службой
Совместное использование объектов ядра приложениями и службами
Замечания по отладке службы
ГЛАВА 14
Асинхронный ввод/вывод и порты завершения
Обзор методов асинхронного ввода/вывода Windows
Пример: использование дескриптора файла в качестве объекта синхронизации
Пример: преобразование файлов с использованием перекрывающегося ввода/вывода и множественной буферизации
Расширенный ввод/вывод с использованием процедуры завершения
Пример: преобразование файла с использованием расширенного ввода/вывода
Асинхронный ввод/вывод сиспользованием нескольких потоков
Пример: использование таймера ожидания
Порты завершения ввода/вывода
Пример: сервер, использующий порты завершения ввода/вывода
ГЛАВА 15
Безопасность объектов Windows
Общий обзор средств безопасности: дескриптор безопасности
Управляющие флаги дескриптора безопасности
Пример: использование разрешений на доступ в стиле UNIX к файлам NTFS
Пример: инициализация атрибутов защиты
Чтение и изменение дескрипторов безопасности
Пример: чтение разрешений на доступ к файлу
Пример: изменение разрешений на доступ к файлу
Защита объектов ядра и коммуникаций
Пример: защита процесса и его потоков
Обзор дополнительных возможностей защиты объектов
ГЛАВА 16
Программирование в среде Win64
Нынешнее состояние Win64
Обзор 64-разрядной архитектуры
Надолго ли хватит 64 бит?
Модель программирования Win64
Перенос имеющегося программного кода
Пример: перенос программы sortMM (программа 5.5)
ПРИЛОЖЕНИЕ А
Использование примеров программ
Листинги включаемых файлов
Дополнительные служебные программы
ПРИЛОЖЕНИЕ Б
Сопоставление функций Windows, UNIX и библиотеки С
ПРИЛОЖЕНИЕ В
Результаты измерения производительности