Jump to content

ПКЛС кольцо

PCLSRing (также известный как Program Counter Lusering) . [1] [а] ) — это термин, используемый в операционной системе ITS для обозначения принципа согласованности в том, как один процесс получает доступ к состоянию другого процесса. [2]

Проблемный сценарий

[ редактировать ]

Этот сценарий представляет особые сложности:

  • Процесс А выполняет трудоемкий системный вызов. Под «затратой времени» подразумевается, что системе необходимо поместить процесс А в очередь ожидания и может запланировать выполнение другого процесса, если он готов к запуску. Типичным примером является операция ввода-вывода .
  • Пока процесс A находится в состоянии ожидания, процесс B пытается взаимодействовать с процессом A или получить к нему доступ, например, отправить ему сигнал .

Каким должно быть видимое состояние контекста Процесса А во время доступа Процесса Б? Фактически процесс A находится в середине системного вызова, но ITS создает видимость того, что системные вызовы не видны другим процессам (или даже тому же самому процессу).

ИТС-решение: прозрачный перезапуск

[ редактировать ]

Если системный вызов не может завершиться до доступа, его необходимо перезапустить . Это означает, что контекст сохраняется до момента входа в системный вызов, а аргументы вызова обновляются, чтобы отразить ту часть операции, которая уже завершена. [2] Для операции ввода-вывода это означает, что начальный адрес буфера должен быть увеличен по сравнению с уже переданными данными, а длина передаваемых данных должна быть соответствующим образом уменьшена. После завершения взаимодействия процесса B процесс A может возобновить выполнение, и системный вызов возобновится с того места, где он был остановлен.

Этот метод программно отражает то, что PDP-10 делает аппаратно. Некоторые инструкции PDP-10, такие как BLT, могут не выполняться до завершения либо из-за прерывания, либо из-за ошибки страницы. [2] В ходе обработки инструкции PDP-10 изменял регистры, содержащие аргументы инструкции, так что позже инструкцию можно было запустить снова с новыми аргументами, которые завершили бы всю оставшуюся работу. PCLSRing применяет ту же технику к системным вызовам.

Это требует некоторой дополнительной сложности. Например, страницы памяти в пространстве пользователя не могут быть выгружены во время системного вызова в ITS. Если бы это было разрешено, то, когда системный вызов имеет PCLSRed и пытается обновить аргументы, чтобы вызов мог быть прерван, страница, содержащая аргументы, могла бы отсутствовать, и системный вызов пришлось бы заблокировать, предотвращая успех PCLSR. Чтобы предотвратить это, ITS не позволяет выгружать страницы памяти в пространстве пользователя после первого доступа к ним во время системного вызова, а системные вызовы обычно начинаются с касания страниц в пространстве пользователя, к которым, как они знают, им понадобится доступ. [2]

Unix-решение: перезапуск по запросу

[ редактировать ]

Сравните это с подходом, принятым в операционной системе UNIX , где есть возможность перезапуска, но она непрозрачна. Вместо этого операция ввода-вывода возвращает количество фактически переданных байтов (или ошибку EINTR , если операция была прервана до фактической передачи каких-либо байтов), и приложение должно проверить это и управлять собственным возобновлением операции. пока все байты не будут переданы. В философии UNIX это было дано Ричардом П. Габриэлем как пример принципа « чем хуже, тем лучше ».

Асинхронные подходы

[ редактировать ]

Возможен другой подход. Из вышеизложенного очевидно, что системный вызов должен быть синхронным , то есть вызывающий процесс должен дождаться завершения операции. Это не является неизбежным: в операционной системе OpenVMS все операции ввода-вывода и другие трудоемкие операции по своей сути асинхронны , что означает, что семантика системного вызова такова: «запустить операцию и выполнить одно или несколько таких уведомлений по ее завершению». ", после чего он немедленно возвращается вызывающему объекту. Существует стандартный набор доступных уведомлений (например, установка флага события или доставка асинхронной системной ловушки ), а также набор системных вызовов для явной приостановки процесса во время их ожидания, которые: а) полностью перезапускаются в Смысл ITS и б) гораздо меньше по количеству, чем набор реальных системных вызовов, отнимающих много времени.

OpenVMS предоставляет альтернативные синхронные версии всех трудоемких системных вызовов «начать операцию и дождаться завершения». Они реализованы как «выполнение фактической асинхронной операции», за которой следует «ожидание, пока операция не установит флаг события». Любой доступ к контексту процесса в течение этого времени будет означать, что он собирается (повторно) войти в вызов флага ожидания события.

Примечания

[ редактировать ]
  1. ^ Это называется «PC luser-ing», потому что ПК принудительно переводят в «режим luser», где «luser» — ласковое имя для «пользователя» в Массачусетском технологическом институте.
  1. ^ Счетчик программ LoSeRing, http://www.xxeo.com/archives/2006/06/29/vms.html.
  2. ^ Jump up to: а б с д Алан Боуден. «PCLSRing: сохранение модульности состояния процесса» .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 11c0a759e25e85aa1cf09a87a84975d4__1697563680
URL1:https://arc.ask3.ru/arc/aa/11/d4/11c0a759e25e85aa1cf09a87a84975d4.html
Заголовок, (Title) документа по адресу, URL1:
PCLSRing - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)