Введение в QNX/Neutrino 2. Руководство по программированию приложений реального времени в QNX Realtime Platform [Роб Кёртен] (fb2) читать постранично, страница - 139
sem_wait(), и не будут при этом блокироваться, если в момент запроса счетчик имел ненулевое значение. Вызывая функцию sem_wait(), поток уменьшает значение счетчика. Если поток вызывает sem_wait() в тот момент, когда счетчик равен нулю, поток блокируется, пока некоторый другой поток не вызывает функцию sem_post(), увеличивая тем самым значение счетчика. Сравните с барьером.
сервер, серверный процесс (server)
Сервер представляет собой обычный процесс, работающий в кольце пользователя и предоставляющий клиентам определенные сервисы (обычно на основе файловых дескрипторов). Серверы обычно являются администраторами ресурсов, и существует обширная специализированная библиотека функций, созданная компанией QSSL и содержащая готовые реализации многих функциональных возможностей администраторов ресурсов. Работа сервера состоит в том, чтобы принимать сообщения от клиентов, обрабатывать запросы и затем отвечать на сообщения, тем самым разблокируя клиентов. Любой поток может одновременно являться и клиентом, и сервером.
сигнал (signal)
Механизм, относящийся к ранним UNIX-системам, который применялся для посылки асинхронного уведомления о событиях от одного потока к другому. Сигналы не блокируют отправителя. Получатель сигнала может решить сам, обрабатывать ли сигнал синхронным способом, путем его явного ожидания. Сравните с импульсом.
синхронный (synchronous)
Это понятие применяется для указания на то, что данная операция синхронизирована по отношению к другой операции. Например, в процессе обмена сообщениями, когда сервер выполняет MsgReply() для ответа клиенту, говорят, что деблокирование клиента синхронно по отношению к операции ответа. Сравните с определением «асинхронный».
соединение (connection)
Понятие, говорящее о подключении клиента к каналу. Соединение устанавливается либо непосредственно клиентом (вызовом функции ConnectAttach()), либо «третьей» стороной от имени клиента (в случае вызова библиотечной функции open()). В любом случае, возвращаемый идентификатор соединения пригоден для использования в качестве дескриптора для всех операций обмена данными между клиентом и сервером.
условная переменная (condition variable)
Объект синхронизации, применяемый для множества потоков и характеризуемый как «точка встречи», в которой несколько потоков могут быть заблокированы в ожидании некоего сигнала (не путать с понятием сигнала в UNIX!). При поступлении сигнала один или более потоков разблокируются.
физический адрес (physical address)
Адрес, который выставляется ЦП на шину, связанную с подсистемой памяти. Поскольку QNX/Neutrino работает в режиме виртуальной адресации, это означает, что диспетчер памяти должен транслировать виртуальные адреса, которые используются потоками, в физические адреса, пригодные для использования подсистемой памяти. Сравните с виртуальной адресацией и виртуальной памятью.
Применяется для определения операций обмена сообщениями, в которой множество различных фрагментов собираются ядром (на стороне либо клиента, либо сервера) (дефрагментация), после чего сообщение разбивается на фрагменты (их может быть и другое число, нежели было при дефрагментации) с другой стороны (фрагментация). Эта операция чрезвычайно полезна, когда, например, необходимо добавить к данным клиента заголовок прежде, чем их отправят серверу. Клиенту в таком случае следует определить вектор ввода/вывода (IOV), который должен содержать указатель на заголовок и его длину в виде первого элемента, а также указатель на данные и их длину в качестве второго элемента. Тогда ядро «дефрагментирует» эти данные и перешлет их серверу как один непрерывный объект. Действия на стороне сервера будут аналогичными.
(обратно)
Последние комментарии
26 секунд назад
13 минут назад
23 минут 42 секунд назад
28 минут 44 секунд назад
29 минут 54 секунд назад
32 минут 13 секунд назад