Читаем Linux API. Исчерпывающее руководство полностью

Используя встроенную команду time, измерьте время выполнения второй программы при N, равном 0, 10 000, 20 000, 30 000 и 40 000. Соответствуют ли результаты ожидаемому линейному поведению?

51.6. Поэкспериментируйте с программой из листинга 51.2 (i_fcntl_locking.c), чтобы проверить утверждения, сделанные в подразделе 51.3.6 относительно зависания блокировок и приоритета блокировки записей вызовом fcntl().

51.7. Если у вас есть доступ к другим реализациям UNIX, задействуйте программу из листинга 51.2 (i_fcntl_locking.c). Проверьте, сможете ли определить правила блокировки записей вызовом fcntl(), касающиеся блокировки записывающих процессов и порядка, в котором удовлетворяются множественные запросы на получение блокировок.

51.8. Используйте программу из листинга 51.2 (i_fcntl_locking.c) для демонстрации того, что ядро обнаруживает циклическую взаимную блокировку на основе трех (или более) процессов, блокирующих один и тот же файл.

51.9. Напишите две программы (или одну, применяющую дочерний процесс), чтобы воспроизвести сценарий взаимной блокировки с помощью строгих блокировок, описанных в разделе 51.4.

51.10. Прочитайте справочную страницу утилиты lockfile(1), которая поставляется вместе с приложением procmail. Напишите ее упрощенную версию.

<p>52. Сокеты: введение</p>

Сокеты — это механизм межпроцессного взаимодействия, который позволяет обмениваться данными между приложениями, выполняемыми как локально, так и на разных компьютерах, соединенных по сети. Первая широко распространенная реализация программного интерфейса сокетов появилась в 4.2BSD в 1983 году и с тех пор была перенесена практически во все UNIX-системы и большинство систем других семейств.

Программный интерфейс сокетов формально описан в стандарте POSIX.1g, который был утвержден в 2000 году после примерно десяти лет рассмотрения. Позже ему на смену пришла спецификация SUSv3.

Эта и следующие главы описывают различные аспекты использования сокетов.

• Данная глава представит общие принципы программного интерфейса сокетов — фундамент, который вам потребуется при чтении остального материала. Здесь вы не найдете никаких примеров кода. Практические аспекты применения сокетов в UNIX- и интернет-доменах будут представлены позже.

• Глава 53 посвящена сокетам домена UNIX, позволяющим взаимодействовать приложениям в рамках одной системы.

• Глава 54 познакомит с различными концепциями компьютерных сетей и ключевыми возможностями сетевых протоколов TCP/IP. Применение этим знаниям вы найдете в следующих главах.

• Глава 55 описывает сокеты интернет-доменов, которые позволяют приложениям, находящимся на разных компьютерах, взаимодействовать по сети TCP/IP.

• В главе 56 мы обсудим архитектуру серверов, использующих сокеты.

• Глава 57 охватывает различные продвинутые темы, включая дополнительные возможности ввода/вывода сокетов, более подробный взгляд на протокол TCP и применение параметров сокета для получения и изменения его атрибутов.

Все указанные главы нацелены на то, чтобы помочь читателю хорошо подготовиться к работе с сокетами. Данная тема (особенно сетевое взаимодействие) сама по себе является огромным разделом в программировании, которому посвящены целые книги. Источники информации для дальнейшего изучения сокетов перечислены в разделе 55.15.

52.1. Краткий обзор

При использовании клиент-серверной архитектуры взаимодействие клиентов с помощью сокетов происходит следующим образом:

• каждое приложение создает сокет — «устройство», позволяющее им общаться друг с другом. Каждая из сторон должна иметь собственный сокет;

• сервер привязывает свой сокет к общеизвестному адресу (имени), чтобы клиенты могли его найти.

Сокет создается с применением системного вызова socket(); вся дальнейшая работа с сокетом выполняется с помощью дескриптора, возвращенного этим вызовом:

fd = socket(domain, type, protocol);

В следующих подразделах мы рассмотрим сокеты доменов и их виды. Во всех приложениях, которые приводятся в данной книге, аргумент protocol всегда равен 0.

Домены взаимодействия

Сокеты существуют внутри домена взаимодействия, определяющего:

• способ идентификации сокета (то есть формат его «адреса»);

• диапазон взаимодействия (то есть находятся ли приложения в одной системе или на разных компьютерах, соединенных по сети).

Современные операционные системы поддерживают как минимум домены следующих видов:

• UNIX-домен (AF_UNIX) позволяет взаимодействовать приложениям, находящимся на одном компьютере (в спецификации POSIX.1g синонимом AF_UNIX является константа AF_LOCAL, хотя в стандарте SUSv3 она не предусмотрена);

• IPv4-домен (AF_INET) позволяет взаимодействовать приложениям, которые выполняются на разных компьютерах, соединенных по сети на основе протокола IPv4 (Internet Protocol version 4);

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
C# 4.0: полное руководство
C# 4.0: полное руководство

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

Герберт Шилдт

Программирование, программы, базы данных
C++ Primer Plus
C++ Primer Plus

C++ Primer Plus is a carefully crafted, complete tutorial on one of the most significant and widely used programming languages today. An accessible and easy-to-use self-study guide, this book is appropriate for both serious students of programming as well as developers already proficient in other languages.The sixth edition of C++ Primer Plus has been updated and expanded to cover the latest developments in C++, including a detailed look at the new C++11 standard.Author and educator Stephen Prata has created an introduction to C++ that is instructive, clear, and insightful. Fundamental programming concepts are explained along with details of the C++ language. Many short, practical examples illustrate just one or two concepts at a time, encouraging readers to master new topics by immediately putting them to use.Review questions and programming exercises at the end of each chapter help readers zero in on the most critical information and digest the most difficult concepts.In C++ Primer Plus, you'll find depth, breadth, and a variety of teaching techniques and tools to enhance your learning:• A new detailed chapter on the changes and additional capabilities introduced in the C++11 standard• Complete, integrated discussion of both basic C language and additional C++ features• Clear guidance about when and why to use a feature• Hands-on learning with concise and simple examples that develop your understanding a concept or two at a time• Hundreds of practical sample programs• Review questions and programming exercises at the end of each chapter to test your understanding• Coverage of generic C++ gives you the greatest possible flexibility• Teaches the ISO standard, including discussions of templates, the Standard Template Library, the string class, exceptions, RTTI, and namespaces

Стивен Прата

Программирование, программы, базы данных