- •/Классификация операционных систем
- •Сравнительные характеристики ос.
- •/Процессы и примитивы.
- •Примитивы.
- •Процессы.
- •/Предполагаемая среда выполнения процессов.
- •/ Диаграмма переходов.
- •/Создание процессов.
- •/Уровневое представление ос unix
- •/Функции ядра операционной системы.
- •/Понятие прерываний в ос
- •/Структура ос
- •/Обзор подсистем ядра Unix
- •Описание подсистем ядра unix
- •Планирование но наивысшему приоритету (hpf)
- •Метод круговорота (карусель)
- •Очереди с обратной связно (fв)
- •Планирование в unix.
- •Типы многозадачности.
- •Состав планировщика
- •Зависимости подсистем ядра
- •Контроллер памяти (Метоrу Manager)
- •Механизм свопинга (Swapping)
- •Механизм пейджинга (Paging)
- •Внешний интерфейс
- •Verify_area()– проверка прав на доступ к выделенному региону памяти; get_free_page() / free_page() – выделение и освобождение физической памяти.
- •Реализация программ выделения памяти
- •Сборка мусора
- •Типы сборщиков памяти
- •Взаимодействие внутренних модулей мм
- •Архитектура vfs
- •Интерфейсы файловой системы
- •Ioctlo: установить атрибуты файла;
- •Защита файлов
- •Списки прав доступа
- •Механизмы обмена данными в vfs
- •Буферный кэш.
- •Механизмы обмена данными.
- •Логическая файловая система
- •Физическая организация файловой системы
- •Структура файла обычного типа
- •Примечания к физической организации vfs
- •Сетевая подсистема (Net)
- •Состав сетевой подсистемы
- •Представление и структуры данных
- •Внутренняя структура подсистемы
- •Зависимости сетевой подсистемы
- •Подсистема межпроцессного взаимодействия
Сетевая подсистема (Net)
Во время создания первых версий Unix сетевой механизм не был предусмотрен. Поэтому с развитием сетевых технологий разработчики были вынуждены решать вопрос о том, как передавать информацию по сети. Использование традиционного механизма работы с файлами вроде бы можно решить эту проблему, однако любое, передаваемое в сети сообщение должно включать в себя как информационную, так и управляющую часть. В управляющей части должен находиться адрес назначения, а так как структура адресных данных зависит от типа сети и используемого протокола, то, следовательно, процессам, работающим с такого типа файлами, необходимо знать тип сети. А это идет вразрез с тем принципом, по которому пользователи не должны обращать внимание на тип файла, ибо все устройства для пользователей выглядят, как файлы.
Кроме того, поскольку ни один процесс не может работать с удаленными файлами непосредственно, то для реализации этого необходимо создавать процесс, протекающий на другой машине, который должен действовать в качестве агента вызывающего процесса и, следовательно, процессу необходим способ связи со своим удаленным агентом через межмашинные границы. Локальный процесс должен являться клиентом удаленного обслуживающего (серверного) процесса.
Для решения этой задачи и был предложен механизм сокетов, который очень быстро распространился с Unix на все другие операционные системы.
Сетевая подсистема предназначена для реализации возможности соединения нескольких вычислительных систем в сеть. Для работы сетевой подсистемы необходимо наличие специального оборудовании и использование протоколов межмашинной связи.
Так как в системе UNIX новые процессы создаются с помощью систем ной функции fork(), к тому моменту, когда клиент попытается выполнить подключение, обслуживающий процесс уже должен существовать.
Если 6ы в момент создания нового процесса удаленное ядро получало запрос на подключение, возникла 6ы несогласованность с архитектурой системы. Чтобы избежать этого, некий процесс, обычно init, порождает обслуживающий процесс, который ведет чтение из канала связи, пока не получает запрос на обслуживание, после .чего в соответствии с некоторым протоколом выполняет установку соединения.
Выбор сетевых средств и протоколов обычно выполняют программы клиента и сервера, основываясь на информации, хранящейся в прикладных библиотеках; с другой стороны, выбранные пользователем средства могут быть закодированы в самих программах.
Чтобы разработать сетевые интерфейсы для системы UNIX, были предприняты значительные усилия. Реализация межсетевых потоков, начиная с версии V, располагает элегантным механизмом поддержки сетевого взаимодействия, обеспечивающим гибкое сочетание отдельных модулей протоколов и их согласованное использование на уровне задач.
Сокеты
В предыдущем разделе было показано, каким образом взаимодействуют между собой процессы, протекающие на разных машинах, при этом обращалось внимание на то, что способы реализации взаимодействия могут
различаться в зависимости от используемых протоколов и сетевых средств.
Более того, эти способы не всегда применимы для обслуживания взаимодействия процессов, выполняющихся на одной и той же машине, поскольку в них предполагается существование обслуживающего (серверного) процесса, который при выполнении системных функций ореn() или read() будет приостанавливаться драйвером.
В целях создания более универсальных методов взаимодействия процессов на основе использования многоуровневых сетевых протоколов сначала для системы BSD, а потом и для других ОС был разработан механизм, получивший название "sockets". В данном разделе рассматриваются некоторые аспекты применения сокетов (на пользовательском уровне представления).
Структура ядра в ОС Unix имеет три уровня поддержания работы в сети: Сокетов, протоколов И устройств. Смотри рис. 3.14.
Уровень сокетов выполняет функции интерфейса между обращениями к операционной системе (системным функциям) и средствами низких уровней, уровень протоколов содержит модули, обеспечивающие взаимодействие процессов, например, стек протоколов ТСР/IP, а уровень устройств содержит драйверы, управляющие сетевыми устройствами. Допустимые сочетания протоколов и драйверов указываются при построении системы (в секции конфигурации).
Процессы взаимодействуют между собой по схеме клиент-сервер: сервер ждет сигнала от сокета, находясь на одном конце дуплексной линии связи, а процессы-клиенты взаимодействуют с сервером через сокеты, расположенные на другом конце, который располагается на другой машине. Ядро обеспечивает внутреннюю связь и передает данные от клиента к серверу.
Реализованный в UNIX вариант механизма сонетов не может реализовать потоковый механизм управления (!), так как процессы взаимодействуют между собой по схеме «клиент-сервер» : сервер ждет сигнала от сокета, находясь на одном конце линии связи, а процессы-клиенты взаимодействуют с сервером через сокеты, которые могут располагаться на другой машине.
Сокеты, обладающие одинаковыми свойствами, например, опирающиеся на общие соглашения по идентификации и форматы адресов (в протоколах), группируются в домены (управляемые одним узлом). В ряде систем (BSD) поддерживаются домены: "UNIX system" - для взаимодействия процессов внутри одной машины и "Internet" - для взаимодействия через сеть.
Сонеты бывают двух типов: поток ориентированный (connection oriented) сонет и поток неориентированный (connectionless) сонет, который еще называют дейтаграммным.
Поток ориентированный сонет обеспечивает надежную доставку данных
с сохранением исходной последовательности.
Дейтаграммы не гарантируют надежной доставки с сохранением уникальности и последовательности, но они более экономны в смысле использования ресурсов вычислительной системы, таким образом, дейтаграммы полезны в отдельных случаях взаимодействия.
Для каждой допустимой комбинации типа домен - сонет в системе поддерживается по умолчанию некоторый протокол. Так, например, для доме-на "Internet" услуги виртуального канала выполняет протокол транспортной связи TPC, а функции дейтаграммы - пользовательской дейтаграммный протокол UDP