Разрывное распределение памяти

Вид материалаДокументы

Содержание


Защита памяти
Управление вводом/выводом
Методы управления периферийными устройствами
Физическая организация устройств ввода/вывода
Управление файлами
Логическая организация файлов
Физическая организация файлов
Управление виртуальной памятью
Адресное пространство виртуальной памяти
Задачи управления виртуальной памятью
Виды структуризации виртуальной памяти
Механизм организации стековой памяти. Модель стека
Стек выражений.
Механизм стековой памяти
Распределенные ОС
Способы адресации
Вызов удаленных процедур
Распределенные файловые системы
Файловый сервис
Модель взаимодействия открытых систем
...
Полное содержание
Подобный материал:

Разрывное распределение памяти


1.Страничное распределение. Адресное пространство делится на группы, которые называются страницами. Страницы нумеруются в возрастающем порядке, начиная с нуля. Все станицы имеют одинаковый размер. Первый шаг – структуризация, в этом случае состоит в группировке адресов по страницам и нумерации страниц. Второй шаг заключается в том, что происходит перенумерация адресов в пределах каждой страницы. Каждую страницу рассматривают как отдельное адресное пространство. Адреса внутри страницы наз. смещением. После проведения структуризации одномерное адресное пространство превращается в 2-х мерное, т.к. теперь адрес задается 2-мя координатами, значением номера страницы и значением смещения внутри страницы.

2. Сегментное распределение. Адресное пространство разбивается на группы, которые наз. сегментами. Размер сегмента меньше размера страницы. Каждый сегмент получает собственный номер. Этот номер является идентификатором сегмента. Первый шаг структуризации состоит в присвоении имени. На втором шаге структуризации каждому сегменту присваивается базовый адрес, т.е. адрес начала сегмента в исходном адресном пространстве. Получаем 2-х мерное адресное пространство. Как и в случае со страницами в каждом сегменте происходит перенумерация адресов. В результате получается 3-х мерное пространство со следующими координатами номер сегмента, его базовый адрес и смещение в сегменте.

3. Сегментно-страничное распределение. Исходное адресное пространство разбивается на страницы. Затем происходит еще одна группировка: сегмент рассматривается как непрерывная последовательность номеров страниц в адресном пространстве. Размер сегмента – это количество страниц, которое в него входит. Каждый сегмент имеет свой уникальный номер. Затем в пределах каждого сегмента происходит перенумерация страниц, начиная с нуля в возрастающем порядке. Адресное пространство в пределах каждой страницы также нумеруется еще раз. В результате адрес в сегментно-страничном пространстве задается 4-мя координатами номером сегмента, базовым адресом сегмента, номером страницы в пределах сегмента и смещением в пределах страницы.


Свопинг


Программный процесс может быть блокирован из-за отсутствия какого-либо ресурса в то время, как память, необходимая для работы процесса, была предоставлена полностью. Возникает необходимость освободить память, блокированную процессом для того, чтобы передать ее другому процессу. Освобождение памяти происходит путем переписывания содержимого ячеек во внешнюю память. Этот процесс наз. «откачкой». «Откаченная» программа – это мгновенный «снимок» области основной памяти. В определенный момент «откаченную» программу можно будет восстановить, т.е. «подкачать» в основную память и возобновить программный процесс. Совокупность действий по «откачке» и «подкачке» наз. свопингом. Для реализации свопинга на системном диске выделяется специальная область свопинга. Применение свопинга позволяет эффективнее использовать аппаратные ресурсы вычислительной системы, ослабить ограничение по объему ОП, оперативнее реагировать на необходимость срочно создать новый процесс.


Защита памяти


Защита памяти предполагает выполнение следующих условий:

1. Все процессы делятся на несколько «уровней благонадежности». В большинстве систем выделяются 2 уровня и соответствующие 2 категории надежности – привилегированные и обычные процессы.

2. Привилегированные команды могут выполняться только привилегированными (системными) процессами. Попытка выполнить такую команду в обычном процессе может привести к ситуации нарушения защиты.

3. Обычным процессам разрешено обращаться только «к своей» памяти. Попытка обратиться к произвольному участку памяти вызывает ситуацию угрозы для безопасности памяти.

4. Доступ обычных процессов к привилегированным осуществляется только в небольшом количестве заранее оговоренных точек, которые наз. шлюзами.


Управление вводом/выводом


Основной задачей подсистемы управления вводом/выводом является обеспечение непрерывной организации и двусторонней передачи данных между ОП и устройствами вв. Аппаратуру ввода/вывода можно рассматривать как совокупность аппаратурных процессоров, которые способны работать параллельно относительно друг друга, а также относительно ЦП. На таких процессорах развиваются внешние процессы. Т.о. система управления ввода/вывода представляет собой один или несколько системных процессов, обеспечивающих информационное и управляющее взаимодействие между внутренними и внешними процессами.


Методы управления периферийными устройствами


В подсистемах управления вводом/выводом используются в основном 2 типа методов управления периферийными устройствами - прямой и косвенный. Методы различаются степенью влияния ЦП на операцию ввода/вывода.

1. Прямой метод основан на наличии прямой связи между процессором и устройством ввода/вывода. Процессор опрашивает устройство, выясняет его готовность к приему передачи данных. Если устройство готово, то происходит операция ввода/вывода. Если устройство не готово, то опрос устройства продолжается. В этом случае выполнение команд процессора блокируется до тех пор, пока устройство не освободится. Этот метод еще называется асинхронным.

2. Косвенный метод основан на том, что между ЦП и периферийным устройством помещается специальный процессор, так называемый контроллер, который осуществляет фактическое управление операциями ввода/вывода. Контроллер программируется ЦП на выполнение определенных операций ввода/вывода. В дальнейшем управление операциями ввода/вывода осуществляется контроллером. Т.о., в один и тот же момент времени могут происходить операции ввода/вывода под управлением контроллера и работа ЦП по выполнению команд. Такой метод называется синхронным.


Буфер


Внешние процессы, развивающиеся на периферийных устройствах, как правило, намного медленнее, чем внутренние процессы, развивающиеся на центральных устройствах. Для сглаживания эффекта не соответствия скоростей между этими процессами помещают один или несколько буферов, роль которых выполняют непрерывные области памяти. Буфер является критическим ресурсом в отношении внутренних и внешних процессов, которые информационно взаимодействуют друг с другом. Через буфер данные либо посылаются от внутреннего процесса к внешнему (операция записи в отношении периферийного устройства), либо от внешнего процесса к внутреннему (операция чтения).


Физическая организация устройств ввода/вывода


Устройства ввода/вывода делятся на 2 типа: байт-ориентированные и блок-ориентированные.

Байт-ориентированные устройства – это устройства, которые генерируют (потребляют) последовательность байтов. Такие устройства не позволяют производить операцию поиска и не адресуемы. К таким устройствам относятся принтеры, сетевые адаптеры ит.д.

Блок-ориентированные устройства хранят информацию в блоках фиксированного размера, каждый из которых имеет свой адрес. Такими устройствами является жесткий диск и другие дисковые запоминающие устройства.


Драйверы


В состав системы управления вводом/выводом входит некоторое число драйверов. В драйвере устройства помещается информация, описывающая работу устройства. Каждый драйвер может управлять работой нескольких устройств одного типа. Драйвер устройства принимает запрос от центральных устройств и решает, как его выполнить. Самым типичным запросом является чтение блоков данных. Если драйвер был свободен во время поступления запроса, то операция выполняется немедленно. Если драйвер был занят обслуживанием другого запроса, то вновь поступивший запрос будет поставлен в очередь уже имеющихся запросов. Каждый драйвер состоит из 2-х частей. В первой части содержится набор программных модулей для выполнения операции по открытию/закрытию, чтению и записи специальных файлов, а также для упрощения режимами работы устройства. Вторая часть драйвера – модуль обработки прерываний. Для байт-ориентированных устройств прерывание возникает после передачи байта. Для блок-ориентированных после передачи блока.


Управление файлами


Составляющая ОС, обеспечивающая доступ к информации, размещенной на внешних устройствах наз. файловой системой или системой управления файлами.

Файловые системы выполняют следующие функции:

1. размещение данных во внешней памяти, причем количество файлов может быть произвольным, объем файлов не должен ограничиваться.

2. отслеживание места нахождения данных.

3. выполнение операции создания, редактирования, сортировки и удаления данных.

4. ведение справочников.

5. принятие решений о предоставлении доступа к данным.

6. разграничение информационных потоков.


Файловая система имеет сложную иерархическую структуру. Центральным понятием является понятие файла.

Файл - упорядоченная совокупность данных, имеющая уникальное имя, данные взаимосвязаны логически и обрабатываются общим для них способом.

Различают 2 уровня представления файла:

1. Уровень прикладной программы (системы программирования). На этом уровне определяется логическая структура файла, совокупность возможных операций над файлом, способы доступа к данным.

2. Уровень ОС (физический уровень). На этом уровне определяется тип и структура носителя данных, физическая организация файла, методы доступа к данным и т.д.


Логическая организация файлов


На логическом уровне происходят следующие операции установление соответствия между логической структурой и физической организацией, открытие файлов, обменные операции, закрытие файлов.

Организация обмена данными.

Существует 2 способа организации обмена данными с файлом:

1. Записе-ориентированный ввод/вывод. Логическая модель файла – это последовательность записей одинакового размера. Общее количество записей не ограничивается. Записе-ориентированный ввод/вывод заключается в копировании переменных структурного типа в физические записи файлов и обратно. Записи в файле логически упорядочены.

2. Потоко-ориентированный ввод/вывод. Логическая модель файла – совокупность цепочек произвольной длины. Под цепочкой понимается произвольная логически взаимосвязанная последовательность байтов или слов. Цепочки могут иметь специальные признаки конца. При этом при чтении файла опознается ситуация «конец цепочки». Максимальная длина цепочки может быть ограничена, кол-во цепочек не ограничено. В потоко-ориентированном файле можно хранить произвольные последовательности переменных любых типов.


Физическая организация файлов


Под физическим файлом понимается реально существующая совокупность данных, организованных определенным образом. Физическую организацию файла определяют носитель и его особенности, структура файла, способ доступа к файлу, метод организации, т.е. отображение структуры файла на носитель.

Основные возможности, предоставляемые носителями:

1.доступность по чтению и записи.

2. одноразовая или многоразовая запись (чтение).

3. монопольность и раздельность доступа.

4. возможность организации физически прямого доступа и т.д.

Организация буферов

ОС должна обеспечивать переход между логическим и физическим уровнями. Как правило, для этого используется промежуточное хранилище данных – буфер. Применение буфера связано с тем, что скорость развития внешних процессов (например, при работе жесткого диска) меньше чем скорость работы внутренних процессов. Буфер представляет собой участок ОП. Размер его равен или кратен размеру физической записи. Например, для жесткого диска буфер может содержать сектор, кластер или целиком дорожку. Способы организации буферной памяти отличаются по кол-ву буферов единственный буфер, несколько фиксированных буферов, неопределенное кол-во буферов с запросом из общего буферного пула. Буферный пул – раздел памяти, выделяемый ОС для буферизации. Несколько буферов могут быть организованы в виде списка.

Существует 2 различные стратегии заполнения буферов:

1. Заполнение по запросу. В этом случае физическая запись попадает в буфер после заявки на ее чтение.

2. Опережающее заполнение. Буфер заполняется по мере освобождения. При заявке на чтение запись уже находится в ОП.


Управление виртуальной памятью


Виртуальной памятью называют память, моделируемую на адреса внешней памяти.

Могут быть смоделированы следующие виды виртуальной памяти:

1.виртуальная оперативная память, обладающая всеми свойствами обычной ОП.

2. Виртуальная регистровая память (возможно только при определённой системе распределения аппаратных регистров).

3. Виртуальная внешняя память.


Т.о., при использовании специальных средств многоуровневой физической памяти может быть построена виртуальная память для каждого или нескольких уровней сразу. Такую схему построения виртуальной памяти называют вертикальной. Если на одном или более уровней допускается расслоение виртуальной памяти, то такую схему называют горизонтальной.


Адресное пространство виртуальной памяти


Адрес понимают как некий символ, однозначно идентифицирующий расположение элемента хранения среди других элементов в среде хранения. Все доступное множество адресов, упорядоченное каким-либо образом, является адресным пространством памяти. При использовании механизма физической адресации, адресом является число, которое однозначно определяет номер требуемого элемента хранения. Число элементов в последовательности адресов равно размеру адресного пространства. Если адрес задается не в числовой, а в какой-либо другой форме, то такой адрес будет отличаться от физических адресов конкретного вида памяти. Такой адрес называется виртуальным. Совокупность виртуальных адресов называется виртуальным адресным пространством.

Задачи управления виртуальной памятью


Любой элемент данных, помещенный в виртуальную память характеризуется тремя адресными атрибутами АВ – виртуальным адресом в виртуальном пространстве. АА – абсолютным адресом в адресном пространстве архивной среды хранения (устройство внешней памяти). АОП абсолютным адресом в адресном пространстве ОП. Между адресными атрибутами устанавливается соответствие с помощью функции преобразования адресов. Вид функций зависит, прежде всего, от схемы структуризации адресных пространств.

Существуют 4 задачи управления виртуальной памятью

1. Задача размещения. В результате решения этой задачи в адресном пространстве ОП выбираются страницы или сегменты, на которые будут отображаться страницы или сегменты виртуальной памяти. Для повышения скорости решения задачи выбирают максимально простой механизм распределения виртуально адресного пространства, в меньшей степени обращая внимание на возможные потери пространства. При этом алгоритм строят так, чтобы уменьшить частоту его использования, так как операция размещения виртуально адресного пространства является «длинной» по сравнению с операцией размещения адресного пространства ОП. При решении этой задачи может возникнуть так называемая внутренняя фрагментация. Поскольку в общем случае объем адресного пространства, выделенного под данные виртуальной памяти, кратен длине физического блока.

2. Задача перемещения. При решении этой задачи в архивной среде хранения выбирается та информация, которая принадлежит отображаемой виртуальной странице или сегменту. Эта информация переносится в страницу или сегмент ОП, найденный в результате решения задачи размещения. Решение задачи перемещения необходимо при перенесении данных из рабочей среды хранения в архивную. Адрес в архивной среде определяется с помощью соответствующей функции преобразования АА=F1 (АВ). Работа с архивной средой является «длинной» операцией по сравнению с работой в рабочей среде (ОП). Алгоритмы ориентированы на минимизацию времени помещения информации в архив и времени поиска информации в архиве.

3. Задача преобразования. При решении этой задачи находят абсолютный адрес в адресном ОП по виртуальному адресу в соответствии с функцией преобразования АОП=F2(АВ). Решение задачи преобразования будет зависеть от различных схем структуризации виртуальной памяти.

4 Задача замещения. Если в адресном пространстве ОП по мере решения задачи размещения обнаруживается отсутствие свободных страниц, то должна решаться задача замещения. В ходе решения этой задачи в пространстве ОП выделяются страницы, содержимое которых будет принудительно вытеснено в архивную среду. Для выбора страниц подлежащих перераспределению существуют следующие правила а) Удаляется та страница, которая раньше всех среди прочих страниц была распределена какому-либо процессу. б) Случайная выборка, т.е. выбор кандидата на удаление происходит случайным образом. в) Замещается наименее активная страница, т.е. та страница за активный период дольше всех не было обращений. г) Идеальная стратегия замещения – выбирается та страница, к которой в будущем дольше всех не будет обращений.

Алгоритм замещения выбирают так, чтобы уменьшить число передач страниц между ОП и архивной средой. Может возникнуть критическая ситуация, когда процессам хронически не хватает ресурса ОП, т.е. каждый процесс не обеспечивается необходимым множеством страниц в течение длительного времени. В этом случае резко возрастает интенсивность страничных прерываний и интенсивность движения страниц между ОП и архивной средой. Пользовательские процессы находятся в невыгодном положении, т.к. постоянно прерываются системными процессами. Системные процессы в свою очередь активизируются из-за того, что приходится часто выполнять задачи замещения и перемещения. Интенсивность перераспределения ОП резко возрастает, деятельность всей системы резко вырождается. Это явление называется пробуксовка.


Виды структуризации виртуальной памяти


1. Сегментная структуризация. Одним из атрибутов каждого сегмента является его размер. Значение размера может быть занесено для каждого сегмента в справочник сегментов. При исполнении команд программы проверяется, находится ли полученный абсолютный адрес в пределах сегмента. ASO≤A≤ASO+qi . А- абсолютный адрес, ASO – базовый адрес сегмента,qi – размер сегмента. При сегментной организации реализуется возможность совместного использования одних и тех же сегментов несколькими программами. В целом сегментная организация ориентирована на первоочередное удовлетворение нужд пользователя при работе с многомодульными программами в многозадачных режимах.

2. Страничная структуризация. Прежде всего ориентирована на систему, поэтому связи системы с пользователем в данном случае намерено ослаблены. Такие функции как защита памяти осуществляются автоматически. Каждое обращение вне пределов физической страницы приводит к страничному прерыванию. В целом страничная организация ориентирована на первоочередное удовлетворение нужд системы и позволяет улучшить использование ОП.

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


Механизм организации стековой памяти. Модель стека


Тело стека составляет совокупность смежных элементов хранения ячеек ОП. Длина тела стека определяется количеством ячеек, которые в данный момент хранят информацию. Длина является величиной переменной. Информация из стека извлекается по правилу LIFO. При извлечении информации из стека его длина уменьшается на единицу. Поэтому возможны ситуации, когда стек может выродиться (стать нулевой длины), если в него не будет добавляться информация. Элемент стека, хранящий информацию, которая была помещена в стек последней, называется вершиной стека. Адрес вершины стека меняется каждый раз при помещении в стек новой информации, а также при извлечении информации из стека. При добавлении информации новой вершиной становится элемент, адрес которого на единицу меньше, чем у старой вершины. При извлечении информации выбирается элемент, который является вершиной стека, извлекается из него информация, затем определяется новая вершина, ее адрес будет на единицу больше, чем у старой вершины. Для реализации стековой памяти используют несколько регистров указатель вершины стека и указатель дна стека. Наличие этих регистров дает возможность контролировать изменение длины стека.


Стек выражений.


Для вычисления арифметических и логических выражений используются стеки выражений. Всякое арифметическое и логическое выражение обладает собственной внутренней логикой, которая определяет порядок вычислений. Обычно порядок вычислений задается правилами приоритетности выполнения действий. Каждое выражение можно представить в виде дерева, узлами которого являются операции и переменные.


Механизм стековой памяти


По мере возникновения и завершения пользования процессов должны динамически создаваться и уничтожаться стеки. В системе должен постоянно существовать так называемый корневой стек, он занимает высший уровень в иерархии стеков и содержит адресные ссылки на стеки нижних уровней иерархии. Каждый из стеков нижних уровней должен обладать свойством перемещаемости, поэтому в системе адресных ссылок необходимо использовать какие-то базовые характеристики. Вводится понятие дескриптор. Основное содержание дескриптора – физический адрес начала, т.е. адрес дна стека и его длина. Т.о., каждый дескриптор может рассматриваться в качестве базового регистра области памяти, отводимой под стек. Из дескрипторов стеков образуется массив дескрипторов, каждый вновь образуемый стек получает свой индивидуальный номер, который является относительным адресом в массиве дескрипторов стеков. По этому адресу должен располагаться соответствующий дескриптор нового стека.


Распределенные ОС


Главным отличием распределенных ОС является необходимость обеспечения связи между несколькими компьютерами. При этом, если в обычных ОС, связь между параллельными процессами решалась при помощи наличия разделяемой ОП, то в распределенных ОС основой взаимодействия между процессами развивающимися на разных компьютерах может стать только передатчик по сети сообщения. В самом простом случае системные средства обеспечения связи могут быть сведены к 2 основным системным вызовам (примитивам) для посылки сообщения и для его получения. Эффективность работы сети зависит от выбранного варианта реализации системных вызовов, от способа задания адреса, от того является системный вызов блокирующим или не блокирующим, какие выбраны способы буферизации сообщения и насколько надежным является протокол обмена сообщениями.

Способы адресации


Для того, чтобы послать сообщение, необходимо указать в нем адрес получателя. В простой сети адрес может задаваться в виде константы, в более сложных сетях используется более сложный метод адресации. Варианты адресации:

1. Использование физических адресов сетевых адаптеров. Корректно работает только в том случае, если в получающем компьютере выполняется только один процесс.

2. Использование имен назначения. Состоят из 2 частей – номера машины и номера процесса. При этом необходимо явно задавать адрес машины получателя.

3. Назначение каждому процессу уникального адреса, не связанного с адресом машины. Используется централизованный механизм распределения адресов процессов. Данный механизм работает как счетчик. При получении запроса на выделение адреса он возвращает текущее значение счетчика, затем увеличивает счетчик на единицу. Другой метод назначения процессу уникальных номеров заключается в разрешении каждому процессу выбирать свой собственный идентификатор из очень большого адресного пространства. Для того чтобы процесс отправитель мог определить номер машины процесса получателя, используются 2 подхода. Первый предполагает использование в сети широковещательного режима передачи сообщений. В такой сети предусмотрено получение сообщения всеми сетевыми адаптерами. При получении сообщения на каждой машине проверяется адрес процесса и, если этот адрес соответствует идентификатору процесса на данной машине, то процесс получает сообщение. Другой подход – использование специальной аппаратуры. При случайном выборе адресов процессов, конструкция сетевых адаптеров должна позволять хранить эти адреса, тогда адреса процессов могут непосредственно указываться в сообщении.


Примитивы


1. Блокирующие и неблокирующие примитивы. При использовании блокирующего примитива, процесс, выдавший запрос на его выполнение, приостанавливается до полного завершения примитива. При использовании неблокирующего примитива управление возвращается вызывающему процессу немедленно, еще до того как требуемая работа будет выполнена. При этом возможно параллельное выполнение вызывающего процесса и процесса передачи сообщения.

2. Буферизируемые и небуферизируемые примитивы. Небуферизируемые примитивы неудовлетворительно работают при условии, что получатель выполняет вызов ПОЛУЧИТЬ раньше, чем отправитель получает вызов послать. Вызов ПОЛУЧИТЬ сообщает, по какому адресу должно поступить сообщение и в какую область памяти его необходимо поместить. При использовании буферизируемых примитивов, поступающие сообщения некоторое время хранятся на машине получателя в ожидании того, что будет выполнен соответствующий вызов ПОЛУЧИТЬ. При поступлении каждого подобного сообщения включается таймер. Если по истечении определенного времени сообщение не было востребовано, то оно теряется.

3. Надежные и ненадежные примитивы. Отправленные сообщения могут не дойти до адресата и потеряться. Существуют 3 варианта решения этой проблемы 1) система не берет на себя ни каких обязательств по поводу доставки сообщения 2) принимающая машина посылает квитанцию подтверждения отправляющей машине на каждое сообщение. На посылающей машине пользовательский процесс будет разблокирован только после получения подтверждения. 3) В тех системах, в которых запрос всегда сопровождается ответом, ответ обязательно должен быть получен передающей машиной в качестве подтверждения. Отправитель будет заблокирован до получения ответа.


Вызов удаленных процедур


RPC (Remote Procedure Call). Идея RPC состоит в передачи управления и данных через сеть. Средства удаленного вызова предназначены для облегчения организации распределенных вычислений. Характерные черты 1) Ассиметричность (одна из взаимодействующих сторон является инициатором обмена) 2) Синхронность (выполнение вызывающей процедуры приостанавливается с момента выдачи запроса и возобновляется только после возврата из вызываемой процедуры. Сложность реализации удаленных вызовов состоит в том, что вызывающая и вызываемая процедуры выполняются на разных машинах, следовательно, они имеют разное адресное пространство. Так как невозможно использовать разделяемую память, то значение параметров удаленных процедур не должны содержать ссылки на ячейки памяти, значение параметров просто копируется с одного компьютера на другой.


Нити


В случае, если процесс можно разделить на несколько частей, то эти части будут называться нитями. При реализации на машине с одним процессором, нити выполняются последовательно и разделяют процессор так же, как это делают процессы. В многопроцессорной системе нити выполняются параллельно.

Существует 2 подхода к управлению нитями: статический и динамический.

1) Статический подход. Количество нитей определяется до начала выполнения процессов. Каждой нити назначается фиксированная область памяти (стек).

2) Динамический подход. Нити оперативно создаются и удаляются по ходу выполнения процессов. Системный вызов для создания нити обычно содержится в теле главной программы в виде указателя на процедуру с указанием размера стека. Завершаться нити могут одним из двух способов по своей инициативе или извне. Нити используют разделяемую память, в которой хранятся данные для совместного использования несколькими нитями. Доступ к разделяемым данным обычно организуется с использованием критических участков, предотвращающих попытки нескольких нитей одновременно обратиться к одним и тем же данным. Критические участки могут быть реализованы с помощью семафоров.


Распределенные файловые системы


Одним из главных компонентов распределенной системы является файловая система. Файловая система поддерживается одной или несколькими машинами называемыми файл-серверами. Они перехватывают запросы на чтение или запись файлов, поступающих от других машин. Эти машины называются клиентами. Каждый посланный запрос проверяется и выполняется, а ответ отсылается обратно. Файл-серверы обычно содержат иерархические файловые системы, каждая из которых имеет корневой каталог и каталоги более низких уровней. Рабочая станция может подсоединять эти файловые системы к своим локальным файловым системам.


Файловый сервис


Это описание функций, которые файловая система предлагает своим пользователям. Описание включает имеющиеся примитивы, их параметры и функции которые они выполняют. Файловый сервис в распределенных файловых системах имеет 2 функционально различные части собственно файловый сервис и сервис каталогов.

(1) Файловый сервис имеет дело с операциями над отдельными файлами, такими как чтение, запись, удаление и добавление. Может быть разделен на 2 типа, в зависимости от того какую модель поддерживает.

Первый тип. Модель загрузки-выгрузки.

Содержатся средства чтения или записи файла целиком. Схема обработки файла содержит следующие этапы:

1) чтение файла с сервера на машину клиента

2) обработка файла на машине клиента

3) запись обновленного файла на сервер.


Второй тип. Модель удаленного доступа.

Вся файловая система выполняется на серверах, а не на клиентских машинах. Данная модель делает возможными операции над частями файла.

(2) Сервис каталогов имеет дело с созданием каталогов и управлением ими, добавлением файлов в каталог и удалением и т.д. В большинстве распределенных систем используется двухуровневое именование файлов. На одном уровне файлы имеют символические имена, ориентированные на пользователя, на другом уровне – внутренние двоичные имена для использования самой системы. Каталоги обеспечивают отображение между этими двумя уровнями имен. При этом одному символьному имени может соответствовать несколько двоичных имен. Обычно это используется для создания нескольких копий одного файла. При использовании нескольких двоичных имен можно при недоступности одной копии обратиться к другой.


Кэширование


В системах, состоящих из клиентов и серверов, имеется четыре места для хранения файлов и их частей диск сервера, память сервера, диск клиента, память клиента. Наиболее подходящим местом для хранения является диск сервера. При использовании диска сервера главной проблемой является производительность. Перед тем, как клиент сможет прочитать файл, он должен быть отправлен с диска сервера в оперативную память сервера, затем передан по сети в память клиента. Обе передачи занимают время. Увеличение производительности может быть достигнуто за счет использования кэш-памяти сервера. При выборе алгоритма кэширования решаются следующие задачи:

1) определение единиц, которыми оперирует кэш. При кэшировании файлов файлы могут храниться на диске в виде непрерывных областей. Это уменьшает число операций между дисками и памятью. При кэшировании блоков диска оптимизируемой величиной является дисковое пространство.

2) Правила замены данных при заполнении кэш-памяти. Одним из правил замены является следующее: из кэш-памяти удаляется блок, к которому дольше всего не было сообщений. Кэширование может быть организовано как в памяти сервера, так и в памяти клиента. Кэш-память на сервере прозрачна для клиента. Она исключает обмен с диском при каждом доступе, но при этом остается обмен данными по сети. Способ избежать обмена по сети – кэширование на стороне клиента. В большинстве систем кэширование используется в памяти клиента, а не на диске.

Имеются 3 варианта размещения кэша в памяти:

1) Кэширование файлов внутри адресного пространства. Обычно кэш управляется с помощью библиотеки системных вызовов. По мере того как файлы открываются, закрываются, читаются, пишутся, библиотека просто сохраняет наиболее часто используемые файлы. По окончанию работы модифицированные файлы записываются на сервер.

2) Место кэширования – ядро ОС. В случае обращения к файлу, даже если он находится в кэше, необходимо выполнять системные вызовы, однако в этом случае файлы остаются в кэше и по завершению работы.

3) Создание кэш-менеджера. Создается отдельный процесс пользовательского уровня, который управляет операциями кэш-памяти.


Протоколы


Протоколами передачи данных называют процедуры обмена данными между рабочими станциями сети, реализующие при этом определенные методы доступа к передающей среде. Метод доступа – это 1) Способ определения того, какая из рабочих станций сети может следующей использовать ресурсы сети. 2) Набор правил используемых сетевым оборудованием для того, чтобы направлять поток сообщений через сеть.


Модель взаимодействия открытых систем


Открытая система – это система, реализующая открытые спецификации на интерфейсы, службы и форматы данных, достаточные для того чтобы обеспечить:

1) Возможность переноса (мобильность прикладных систем), разработанных должным образом с минимальными изменениями на широкий диапазон систем.

2) Совместную работу с другими прикладными системами на локальных и удаленных платформах.

3) Взаимодействие с пользователями в стиле облегчающем последним переход от системы к системе.


На физическом уровне протоколы управления физическим каналом, на канальном – информационным каналом, на сетевом – сетью, на транспортном – трафиком, на сессионном – сеансами, на представительном – представлением данных, на уровне приложений – прикладными процессами.

Уровни:

1) Физический уровень. Управляет процессами передачи данных между соседними узлами на физическом уровне.

2) Канальный уровень (уровень данных). Осуществляет передачу данных между соседними узлами путем организации и управления самим каналом.

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

4) Транспортный уровень обеспечивает управление трафиком (потоком данных), управление качеством передачи данных, разбиением сообщения на пакеты и сборкой сообщений из пакетов.

5) Сессионный уровень. Выполнение функций управления для протоколов представительского уровня (установление режимов передачи данных, управление потоками данных и т.д.).

6) Представительский уровень. Устанавливаются формы протоколов прикладного уровня (уровня приложений), управляет преобразованием данных, форматами данных, сжатием данных и т.д.

7) Уровень приложений протоколы этого уровня предназначены для организации доступа каждого пользователя к программам отдаленных пользователей. Предусмотрены следующие функции пересылка файлов, заданий, обращения к БД и т.д.


Методы синхронизации распределенных систем


1.Назначение координатора. Координатор может быть назначен по наибольшему сетевому адресу. Произвольный процесс должен запрашивать у координатора разрешение на вход на критический участок. В случае если один процесс получил разрешение на вход на критический участок, координатор будет выдавать отказ всем остальным процессам, желающим войти на этот участок, пока первый процесс не выйдет из критического участка и не пришлет об этом извещение. Недостатком подобного способа является хранение информации в одном месте. При выходе из строя компьютера, который являлся координатором, происходит потеря работоспособности всей сети.

2.Отправление широковещательного запроса. Процесс желающий войти на критический участок посылает широковещательный запрос, содержащий имя этого участка, свой номер и дату отправки сообщений. На полученное сообщение процесс может отреагировать следующим образом:

1) Если процесс, получивший такой запрос, находится вне этого критического участка и не собирается выходить на него, он посылает разрешение.

2) Если процесс находится внутри критического участка, он посылает отказ, запрашиваемый процесс помещается в очередь.

3) Если процесс намерен войти на этот критический участок, но еще не сделал этого, то он сравнивает время посылки полученного запроса с временем того запроса, который послал он сам. Если собственный запрос был более поздним, он посылает разрешение, иначе посылает отказ и устанавливает другой процесс в очередь. После того как процесс разослал запросы, в течение определенного времени он ждет разрешения от каждого. Если от какого либо процесса получен отказ, то по прошествии некоторого времени запрашивающий процесс повторяет рассылку запросов. Если какой либо процесс не отвечает на запросы, то он находится вне игры. Запрашивающий процесс может войти на критический участок, только если получены все разрешения. После выхода из критического участка процесс рассылает разрешение войти всем процессам запросы от которых находятся в очереди.


Методы синхронизации системных часов


На всех компьютерах сети должно поддерживаться одно и тоже системное время. Оно может отличаться от физического, но в рамках одной системы все процессы должны происходить по одним логическим часам. Единственный способ отслеживать последовательность событий происходящих в распределенной системе – это помечать каждое событие временным маркером. Для поддержания системного времени используются следующие алгоритмы:

1) Алгоритм Лампорта. Каждому сообщению приписывается время его отправки по локальным часам процесса отправителя. Получающий процесс сравнивает это время со своим, и в случае если оно меньше или равно, устанавливает свое время на единицу большим, чем время отправки полученного им сообщения. Существенным недостатком является трудность в определении реальных интервалов времени между отдельными событиями. Так если компьютер почти или совсем не взаимодействовал с остальными, то показания его часов будут отличаться от других.

2) Алгоритм усреднения. Этот способ используется в качестве исправления недостатков предыдущего алгоритма. Через определенный промежуток времени каждый компьютер посылает широковещательное сообщение с показанием своих часов. После этого все показания собираются и усредняются. Для точности могут быть введены поправки на время распространения сообщений, на отбрасывание самых недостоверных значений и т.д.


Тупики в распределенных системах


Существует 2 типа тупиков в распределенных системах:

1) Возникающие при разделении ресурсов.

2) Связанные с коммуникацией. Наиболее типичным алгоритмом обнаружения тупиков является алгоритм Chundi-Misra-Haas. В случае, когда при очередном запросе ресурсов процесс вынужден ждать, он генерирует специальное сообщение и посылает его процессу или процессам, захватившим необходимый ресурс. В сообщении указываются 3 числа номер блокированного процесса, номер процесса посылающего сообщение и номер процесса, которому это сообщение предназначено. Если процесс, который получил сообщение, также блокирован, то он прописывает свой номер во второе поле и номер процесса и номер процесса, от которого он ждет ресурса в третье и отсылает далее. Если процесс, получивший сообщение, в первом поле обнаруживает свой номер, то это значит, что в системе возникла тупиковая ситуация.

Алгоритмы предупреждения тупиков:

1) Пронумеровать все ресурсы и разрешить процессам их запрашивать только в порядке возрастания номера, т.е. процесс, занимающий ресурс с большим номером не может получить ресурс с меньшим номером.

2) Каждый процесс хранит время своего рождения. Блокирование возможно только в том случае, когда процесс, запрашивающий ресурс моложе того процесса, который занимает ресурс в данный момент.

Безопасность ОС


Надежная система – это система, использующая достаточные аппаратные и программные средства, чтобы обеспечить одновременную обработку информации разной степени секретности группой пользователей без нарушения прав доступа. Политика безопасности – это набор законов правил и норм поведения определяющих, как организация обрабатывает, защищает и распространяет информацию.

Политика безопасности


Субъект безопасности – активная составляющая системы безопасности (пользователь).

Объект безопасности – пассивная составляющая, к которой применяется политика безопасности (файл и т.д.). Основными элементами политики безопасности являются: 1) Дискреционное управление доступом – метод ограничения доступа к объектам, основанный на учете личности субъекта или группы, в которую субъект входит. 2) Полномочное (принудительное) управление доступом. Требует сопоставления классификационных меток каждого субъекта и каждого объекта. Метки назначаются администратором, по средствам меток назначаются классификационные уровни. 3) Контроль над повторным использованием объекта. Предназначен для предотвращения попыток незаконного получения информации, остатки которой могли сохраниться в некоторых областях памяти, ранее используемых другим пользователем.


Учет использования системы защиты.


1) Главное средство учета идентификация и аутентификация. Идентификация и проверка подлинности субъектов доступа осуществляется при входе в систему по идентификатору и паролю. После идентификации выполняется аутентификация, т.е. проверяется содержательность полученного идентификатора для системы защиты ОС. Аутентификация включает в себя процесс авторизации пользователя. Под авторизацией пользователя понимается определение прав пользователя на доступ к различным объектам ОС на основании введенного пользователем идентификатора.

2) Анализ регистрационной информации заключается в регистрации специальных данных о различных типах событий происходящих в системе и влияющих на ее безопасность, например вход или выход системы, операции с файлами, обращение к удаленной системе, смена режима доступа, уровня благонадежности пользователя и т.д.


Классы безопасности


Классификация ОС по безопасности основывается на следующих документах:

1) «Оранжевая книга» министерства обороны США 1993г. Предусматривает 4 уровня безопасности D, C, B, A. Уровни B и C разделяются на подуровни с постепенным возрастанием надежности C1, C2; B1, B2, B3.

2) Рекомендации X.800. Приняты в Женеве в 1991г. Рассматриваются сетевые функции безопасности и необходимые защитные механизмы.

3) Руководящие документы государственной технической комиссии России (1992г.) Автоматизированные системы разбиваются на классы с постепенным убыванием надежности 3Б, 3А, 2Б, 2А, 1Д, 1Г, 1В, 1Б, 1А.


Современные концепции проектирования ОС


К современным ОС предъявляются следующие требования:

1) Расширяемость. Код системы должен быть написан так, чтобы, если потребуется, в него можно было бы легко внести дополнения и изменения, не нарушив целостности системы.

2) Переносимость. Код должен легко переноситься с процессора одного типа на процессор другого типа и с аппаратной платформы одного типа на аппаратную платформу другого типа.

3) Надежность и отказоустойчивость. Система должна быть защищена, как от внешних, так и от внутренних ошибок, сбоев и отказов. Ее действия всегда должны быть предсказуемы, а приложения не могли бы повредить ОС.

4) Совместимость. ОС должна иметь средства для выполнения прикладных программ написанных для других ОС. Пользовательский интерфейс ОС должен быть совместим с существующими нормами и стандартами.

5) Безопасность. ОС должна обладать собственными средствами защиты.

6) Производительность. ОС должна обладать производительностью, сопоставимой с производительностью аппаратной платформы на которой она установлена.