Введение в QNX/Neutrino 2. Руководство по программированию приложений реального времени в QNX Realtime Platform [Роб Кёртен] (fb2) читать постранично, страница - 139

- Введение в QNX/Neutrino 2. Руководство по программированию приложений реального времени в QNX Realtime Platform (пер. А. Н. Алексеев) 0.99 Мб, 372с. скачать: (fb2) - (исправленную)  читать: (полностью) - (постранично) - Роб Кёртен

 [Настройки текста]  [Cбросить фильтры]

sem_wait(), и не будут при этом блокироваться, если в момент запроса счетчик имел ненулевое значение. Вызывая функцию sem_wait(), поток уменьшает значение счетчика. Если поток вызывает sem_wait() в тот момент, когда счетчик равен нулю, поток блокируется, пока некоторый другой поток не вызывает функцию sem_post(), увеличивая тем самым значение счетчика. Сравните с барьером.

сервер, серверный процесс (server)
Сервер представляет собой обычный процесс, работающий в кольце пользователя и предоставляющий клиентам определенные сервисы (обычно на основе файловых дескрипторов). Серверы обычно являются администраторами ресурсов, и существует обширная специализированная библиотека функций, созданная компанией QSSL и содержащая готовые реализации многих функциональных возможностей администраторов ресурсов. Работа сервера состоит в том, чтобы принимать сообщения от клиентов, обрабатывать запросы и затем отвечать на сообщения, тем самым разблокируя клиентов. Любой поток может одновременно являться и клиентом, и сервером.

сигнал (signal)
Механизм, относящийся к ранним UNIX-системам, который применялся для посылки асинхронного уведомления о событиях от одного потока к другому. Сигналы не блокируют отправителя. Получатель сигнала может решить сам, обрабатывать ли сигнал синхронным способом, путем его явного ожидания. Сравните с импульсом.

синхронный (synchronous)
Это понятие применяется для указания на то, что данная операция синхронизирована по отношению к другой операции. Например, в процессе обмена сообщениями, когда сервер выполняет MsgReply() для ответа клиенту, говорят, что деблокирование клиента синхронно по отношению к операции ответа. Сравните с определением «асинхронный».

соединение (connection)
Понятие, говорящее о подключении клиента к каналу. Соединение устанавливается либо непосредственно клиентом (вызовом функции ConnectAttach()), либо «третьей» стороной от имени клиента (в случае вызова библиотечной функции open()). В любом случае, возвращаемый идентификатор соединения пригоден для использования в качестве дескриптора для всех операций обмена данными между клиентом и сервером.

условная переменная (condition variable)
Объект синхронизации, применяемый для множества потоков и характеризуемый как «точка встречи», в которой несколько потоков могут быть заблокированы в ожидании некоего сигнала (не путать с понятием сигнала в UNIX!). При поступлении сигнала один или более потоков разблокируются.

физический адрес (physical address)
Адрес, который выставляется ЦП на шину, связанную с подсистемой памяти. Поскольку QNX/Neutrino работает в режиме виртуальной адресации, это означает, что диспетчер памяти должен транслировать виртуальные адреса, которые используются потоками, в физические адреса, пригодные для использования подсистемой памяти. Сравните с виртуальной адресацией и виртуальной памятью.

фрагментация/дефрагментация сообщений (scatter/gather)
Применяется для определения операций обмена сообщениями, в которой множество различных фрагментов собираются ядром (на стороне либо клиента, либо сервера) (дефрагментация), после чего сообщение разбивается на фрагменты (их может быть и другое число, нежели было при дефрагментации) с другой стороны (фрагментация). Эта операция чрезвычайно полезна, когда, например, необходимо добавить к данным клиента заголовок прежде, чем их отправят серверу. Клиенту в таком случае следует определить вектор ввода/вывода (IOV), который должен содержать указатель на заголовок и его длину в виде первого элемента, а также указатель на данные и их длину в качестве второго элемента. Тогда ядро «дефрагментирует» эти данные и перешлет их серверу как один непрерывный объект. Действия на стороне сервера будут аналогичными.

(обратно)