Читаем 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 / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

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

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