Технология MOSIX :: Реализация :: Механизм представитель/удаленный |
Заместитель представляет удаленного процесса на UHN. В то время как пространство памяти пользователя в целом постоянно находится на удалённом узле, заместитель хранит свою карту памяти. Вместе это разделение основной памяти ядра подобно нитям ядра. В большинстве своем деятельность ядра, такая как запуск системных запросов, представляет собой передачу данных между пространством пользователя и ядра. Такое взаимодействие осуществляется при помощи примитивов ядра copy_to_user(), copy_from_user(). В MOSIX любая операция ядра с памятью включает в себя доступ к пространству пользователя, требующего связи заместителя с удалённым для передачи необходимых данных. Накладные расходы на связь обусловленные операциями удалённого копирования, которые могут повторяться в течение некоторого времени без простого системного вызова, совершенно реальны и представлены, главным образом, задержками передачи по сети. Устранить наиболее часто встречающееся избыточное удаленное копирование, были разработан специальный кеш, уменьшающий число требуемых взаимодействий упреждающей выборкой стольких данных, сколько возможно выбрать в течении инициализации системного запроса, в то время как буферизированная часть данных заместителя возвращается удаленному по окончанию системного вызова. Для предохранения от удаления основных отображаемых в памяти файлов (для страниц по требованию) в отсутствии карты памяти, заместитель хранит специальную таблицу тех файлов, которые отображаются в памяти у удаленного. Регистры пользователя мигрированного процесса нормально находятся в контексте удаленного. Впрочем, каждый регистр или комбинация регистров, может стать временно захвачена для управления заместителем. Удаленный (гостевой процесс) недоступен для других процессов, которые запущены на этом узле (локальных или любых других мигрированных с других узлов) и наоборот. Они не принадлежат любому конкретному пользователю (на удаленном узле, где они работают) и также они не могут послать сигналы или провести любые другие манипуляции с локальным процессом. Их память закрыта для доступа и они могут в принудительном порядке, под контролем системного администратора, мигрировать куда-нибудь еще. Процесс может нуждаться в совершении некоторых MOSIX-функций в то время как логически он спит или остановлен. Так процесс запустивший MOSIX-функции "в совей спячке", прерывает свой сон, если случится какое-нибудь событие, которого он ожидает. Например, процесс мигрировал, возможно в то время когда он спал. С этой целью, MOSIX поддерживает логическое состояние, описывая в каком состоянии другой процесс увидит процесс, в отличии от его непосредственного состояния. |