Чтобы понять работу RPC, рассмотрим сначала выполнение вызова локальной процедуры в обычной машине, которая работает автономно. Пусть это, например, будет системный вызов
count=read (fd,buf,nbytes); где fd - целое число, buf - массив символов, nbytes - целое число.
Чтобы осуществить вызов, что вызывает процедура заталкивает параметры у стек в обратном порядке (рисунок 3.1). После того, как вызов read выполнен, он помещает что поворачивается значения в регистр, перемещает адрес возвращения и возвращает управление процедуре, которая вызывает, что выбирает параметры со стека, возвращая его в исходное состояние.
Устройства ввода вывода делятся на два типа: блок-ориентированные устройства и байт-ориентированные устройства. Блок-ориентированные устройства берегут информацию в блоках фиксированного размера, каждый из который имеет свой собственный адрес. Проще всего блок-ориентированное устройство - диск. Байт-ориентированные устройства не адресуемы и не позволяют делать операцию поиска, они генерируют или потребляют последовательность байтов. Примерами являются терминалы, строчные принтеры, сетевые адаптеры.
В некоторых файловых системах запить к внешним устройствам, в которых адресация осуществляется блоками (диски, ленты), перехватываются промежуточной программной прослойкой-подсистемой буферизации. Подсистема буферизации представляет собой буферный пул, который располагается в оперативной памяти, и комплекс программ, которые управляют этим пулом. Каждый буфер пула имеет размер, равный одному блоку. При поступлении запроса на чтение некоторого блока подсистема буферизации просматривает свой буферный пул и, если находит необходимый блок, то копирует его в буфер процесса, который спрашивает.
Понятие "нить"
В традиционных ОС понятие нити тождественно понятию процесса. В действительности желательно иметь несколько нитей управления, которые разделяют единое адресное пространство, но выполняющихся квазипараллельно.
Предположим, например, что файл-сервер блокируется, ожидание выполнения операции с диском. Если сервер имеет несколько нитей управления, вторая нить может выполняться, пока первая нить находится в состоянии ожидания. Это повышает пропускную способность и производительность.
Важным понятием синхронизации процессов есть понятия "критическая секция" программы. Критическая секция - это часть программы, в которой осуществляется доступ к что разделяются данным. Чтобы исключить эффект гонок относительно некоторого ресурса, необходимо обеспечить, чтобы в каждый момент в критической секции, связанной с этим ресурсом, находился максимум один процесс. Этот прием называют взаимным исключением.
Простейшее средство обеспечить взаимное исключение - позволить процессу, который находится в критической секции, запрещать все прерывания.
Многозадачные ОС подразделяются на трех типа согласно использованному при их разработке критериями эффективности:
системы пакетного обработки (например, OC EC),
системы деления времени (UNIX, VMS),
системы реального времени (QNX, RT/11).
Системы пакетного обработки назначались для решения задач в основном вычислительного характера, которые не нуждаются в быстром получении результатов. Главной целью и критерием эффективности систем пакетного обработки есть максимальная пропускная способность, то есть решение максимального числа задач в единицу времени.
Структура сетевой операционной системы
Сетевая операционная система составляет основу любой вычислительной сети. Каждый компьютер в сети в значительной мере автономен, поэтому под сетевой операционной системой в широком содержании понимается совокупность операционных систем отдельных компьютеров, которые взаимодействуют с целью обмена сообщениями и деления ресурсов по единым правилам - протоколам. В узком содержании сетевая ОС - это операционная система отдельного компьютера, который обеспечивает ему возможность работать в сети.
NDS использует для сохранности информации логическую структуру, называемую деревом каталогов (Directory Tree, DT). Эта иерархическая структура имеет корневой элемент (root) и ветви (рисунок 3.25). Администратору сети Netware 4. x дается удобная графическая утилита Netware Administrator, что работает в среде Windows, что наглядно подает каждый объект дерева каталогов NDS в виде иконки и отражающая связи между объектами. Пользователи также получают удобства прозрачного доступа к ресурсам всей сети, если они пользуются оболочкой Netware для Windows, что поддерживает диалог из NDS и подает доступные пользователю ресурсы в виде вложенных пиктограмм.
В то время как некоторые идеи (например, объектно-ориентированный подход) непосредственно касаются только разработчиков и лишь косвенно влияют на конечного пользователя, концепция множественных прикладных сред приносит пользователю долгожданную возможность выполнять на своей ОС программы, написанные для других операционных систем и других процессоров.
И сейчас дополнительное программное обеспечение позволяет пользователям некоторых ОС запускать чужие программы (например, Mac и UNIX позволяют выполнять программы для DOS и Windows).
Использование объектно-ориентированного подхода особенно эффективно при создании программного обеспечения, которое развивается активно, например, при разработке приложений, предназначенных для выполнения на разных аппаратных платформах.
Целиком объектно-ориентированные операционные системы очень привлекательные для системных программистов, потому что, используя объекты системного уровня, программисты смогут залезать вглубь операционных систем для приспособления их к своим нуждам, не возбуждаясь целостность системы.
Поворачиваясь к принципам организации взаимодействия сетей, сравним два основных подхода - мультиплексирование протоколов и трансляцию протоколов (шлюзы).
Встроенные в сетевую ОС средства мультиплексирования протоколов дают все те преимущества, которые присущий встроенным средствам:
Эти средства не нужно отдельно получать;
Нет проблем их совместимости с другими продуктами.
Основным недостатком этого подхода является чрезмерность. Хотя средства мультиплексирования обычно позволяют загружать и выгружать по желанию пользователя разные стеки протоколов, но если нужно одновременно работать с тремя разными сетями, то в каждую рабочую станцию необходимо загрузить все трех стека одновременно.
Обычно в распределенных системах используются как RPC, так и нити. Потому что нити были введенные как дешевая альтернатива стандартным процессам, то естественно, что исследователи обратили особое внимание в этом контексте на RPC: нельзя или их также сделать облегченными. Было замечено, что в распределенных системах значительное количество RPC обрабатывает на той же машине, на которой они были вызваны (локально), например, вызовы к менеджеру окон. Поэтому была предложена новая схема, которая делает возможным для нити одного процесса вызвать нить другого процесса на этой же машине более эффективно, чем обычным средством.
Распределенные системы часто обеспечивают репликацию (тиражирование) файлов в качестве одной из услуг, предоставленных клиентам. Репликация - это асинхронный перенос изменений данных исходной файловой системы в файловые системы, которые принадлежат разным узлам распределенной файловой системы. Другими словами, система оперирует несколькими копиями файлов, причем каждая копия находится на отдельному файловом сервере. Есть несколько причин для предоставления этого сервиса, главными с который есть:
1.
На рисунке 2.12 показанная схема страничного распределения памяти. Виртуальное адресное пространство каждого процесса делится на части одинакового, фиксированного для данной системы размера, называемые виртуальными страницами. В общем случае размер виртуального адресного пространства не является кратным размера страницы, поэтому последняя страница каждого процесса дополняется фиктивной областью.
Вся оперативная память машины также делится на части такого же размера, называемые физическими страницами (или блоками).
Память является важнейшим ресурсом, который нуждается в тщательном управлении со стороны мультипрограммной операционной системы. Распределения подлежит вся оперативная память, не занятая операционной системой. Обычно ОС располагается в самых младших адресах, однако может занимать и самой старшие адреса. Функциями ОС по управлению памятью есть: отслеживание свободной и занятой памяти, выделение памяти процессам и освобождение памяти при завершении процессов, вытеснение процессов из оперативной памяти на диск, когда размеры основной памяти не достаточные для размещения в ней всех процессов, и возвращение их в оперативную память, когда в ней освобождается место, а также настройка адресов программы на конкретную область физической памяти.
Концепция отдаленного вызова процедур
Идея вызова отдаленных процедур (Remote Procedure Call - RPC) составляется в расширении хорошо известного и понятного механизма передачи управления и данных внутри программы, которое выполняется на одной машине, на передачу управления и данных через сеть. Средства отдаленного вызова процедур предназначенные для облегчения организации распределенных вычислений. Самая большая эффективность использования RPC достигается в тех приложениях, в которых существует интерактивная связь между отдаленными компонентами с небольшим временем ответов и относительно малым количеством переданных данных.
s#0