Взаимодействие процессов в unix.
Существует много способов обмена информацией между процессами. В версии V системы UNIX для этого существует пакет IPC (interprocess communication) который включает в себя три механизма:
Механизм сообщений дает процессам возможность посылать другим процессам потоки сформатированных данных;
механизм разделения памяти позволяет процессам совместно использовать отдельные части виртуального адресного пространства;
механизм семафоров - синхронизировать свое выполнение с выполнением параллельных процессов.
Несмотря на то, что они реализуются в виде отдельных блоков, им присущи общие свойства.
С каждым механизмом связана таблица, в записях которой описываются все его детали.
В каждой записи содержится числовой ключ (key), который представляет собой идентификатор записи, выбранный пользователем.
В каждом механизме имеется системная функция типа “get”, используемая для создания новой или поиска существующей записи; параметрами функции являются идентификатор записи и различные флаги (flag). Ядро ведет поиск записи по ее идентификатору в соответствующей таблице. Процессы могут с помощью флага IPC_PRIVATE гарантировать получение еще неиспользуемой записи. С помощью флага IPC_CREAT они могут создать новую запись, если записи с указанным идентификатором нет, а если еще к тому же установить флаг IPC_EXCL, можно получить уведомление об ошибке в том случае, если запись с таким идентификатором существует. Функция возвращает некий выбранный ядром дескриптор, предназначенный для последующего использования в других системных функциях, таким образом, она работает аналогично системным функциям creat и open.
В каждом механизме ядро использует следующую формулу для поиска по дескриптору указателя на запись в таблице структур данных: указатель = значение дескриптора по модулю от числа записей в таблице. Если, например, таблица структур сообщений состоит из 100 записей, дескрипторы, связанные с записью номер 1, имеют значения, равные 1, 101, 201 и т.д. Когда процесс удаляет запись, ядро увеличивает значение связанного с ней дескриптора на число записей в таблице: полученный дескриптор станет новым дескриптором этой записи, когда к ней вновь будет произведено обращение при помощи функции типа “get”. Процессы, которые будут пытаться обратиться к записи по ее старому дескриптору, потерпят неудачу. Обратимся вновь к предыдущему примеру. Если с записью 1 связан дескриптор, имеющий значение 201, при его удалении ядро назначит записи новый дескриптор, имеющий значение 301. Процессы, пытающиеся обратиться к дескриптору 201, получат ошибку, поскольку этого дескриптора больше нет. В конечном итоге ядро произведет перенумерацию дескрипторов, но пока это произойдет, может пройти значительный промежуток времени.
Каждая запись имеет некую структуру данных, описывающую права доступа к ней и включающую в себя пользовательский и групповой коды идентификации, которые имеет процесс, создавший запись, а также пользовательский и групповой коды идентификации, установленные системной функцией типа “control” (об этом ниже), и двоичные коды разрешений чтения - записи - исполнения для владельца, группы и прочих пользователей, по аналогии с установкой прав доступа к файлам.
В каждой записи имеется другая информация, описывающая состояние записи, в частности, идентификатор последнего из процессов, внесших изменения в запись (посылка сообщения, прием сообщения, подключение разделяемой памяти и т.д.), и время последнего обращения или корректировки.
В каждом механизме имеется системная функция типа “control”, запрашивающая информацию о состоянии записи, изменяющая эту информацию или удаляющая запись из системы. Когда процесс запрашивает информацию о состоянии записи, ядро проверяет, имеет ли процесс разрешение на чтение записи, после чего копирует данные из записи таблицы по адресу, указанному пользователем. При установке значений принадлежащих записи параметров ядро проверяет, совпадают ли между собой пользовательский код идентификации процесса и идентификатор пользователя (или создателя), указанный в запи си, не запущен ли процесс под управлением суперпользователя; одного раз решения на запись недостаточно для установки параметров. Ядро копирует сообщенную пользователем информацию в запись таблицы, устанавливая значения пользовательского и группового кодов идентификации, режимы доступа и другие параметры (в зависимости от типа механизма). Ядро не изменяет значения полей, описывающих пользовательский и групповой коды идентификации создателя записи, поэтому пользователь, создавший запись, сохраняет управляющие права на нее. Пользователь может удалить запись, либо если он является суперпользователем, либо если идентификатор процесса совпадает с любым из идентификаторов, указанных в структуре записи. Ядро увеличивает номер дескриптора, чтобы при следующем назначении записи ей был присвоен новый дескриптор. Следовательно, как уже ранее говорилось, если процесс попытается обратиться к записи по старому дескриптору, вызванная им функция получит отказ.
- Лекции по курсу Сетевые операционные системы Введение.
- Введение в типы операционных систем. Типы операционных систем.
- Среда времени выполнения.
- Сетевая операционная система Novell NetWare. Серверы.
- Клиентская часть в NetWare.
- Основные понятия nds.
- Классификация объектов nds.
- Классификация “листьев” nds.
- Правила именования объектов nds.
- Свойства объектов.
- Особенности функционирования операционной системы Unix Введение
- Базовые понятия ос unix.
- Файловая система
- Среда выполнения процессов.
- Конструкционные блоки.
- Функции ядра.
- Предполагаемая аппаратная среда.
- Прерывания и особые ситуации.
- Уровни прерывания процессора
- Распределение памяти
- Архитектура операционной системы unix Общие положения.
- Процессы
- Контекст процесса
- Состояния процесса
- Переходы из состояния в состояние
- “Сон” и пробуждение
- Резюме.
- Взаимодействие процессов в unix.
- Сетевое взаимодействие в unix. Межмашинный интерфейс
- Сокеты.
- Windows nt
- Архитектура WindowsNt
- Исполняющая система Windows nt.
- Диспетчер виртуальной памяти.
- Средства вызова локальных процедур.
- Диспетчер Кеша(CashManager)
- Драйверы файловой системы.
- Драйвер аппаратных устройств
- Система безопасности Windows nt.
- Сетевые драйверы
- Модель сетевой архитектуры Windows nt.
- Транспортные протоколы
- Интерфейс драйвера транспорта
- Рабочие станции и серверы Windows nt
- Редиректоры
- Серверы Windows nt
- Провайдеры и интерфейс провайдера.
- NetBios и Windows сокеты
- NetBios
- Tcp/ip дляWindows nt.
- Tcp и сетевые возможности
- Базовая поддержка протоколов tcp/ip.
- Конфигурирование tcp/iPиSnmp. Маршрутизация и сетевые шлюзы.
- Процесс межсетевой маршрутизации с использованием шлюзов.
- Протокол динамической конфигурации хостов (dhcp).
- Распознавание имен в сетях на базе WindowsNt.
- NetBios поверхTcp
- Сервис wins.
- Wins в маршрутизируемой среде
- Работа с сетями InternetилиIntranet
- Общие проблемы работы с сетями
- Программы маршрутизации и Устройства Защиты.
- Типичные Сетевые Конфигурации Место Intranet
- Место Internet
- Интегрирование Вашего IntranetсInternet
- Администрирование серверов с Internet Service Manager.
- Обнаружение Других Компьютеров в Вашей Подсети.
- Соединение с Internet
- Как Выбирать Правильное Соединение Internet
- Типы Соединений Internet.
- Типы Соединений
- Ip Адреса и dns
- Другие Услуги Пользователя Internet
- Публикации на Intranet
- Имя разрешающей системы.
- Использование Компьютерных Имен с wins server
- Использование Компьютерных Имен и lmhosts
- Использование Имен Домена с dns Станциями
- Использование Доменных Имен и hosTs
- Использование dhcp в Вашем Intranet
- Использование urLs и Создание html Связей для Intranet
- Snmp Текущий контроль.
- Создание Виртуальных серверов
- Использование ftp и Gopher Сервиса ftp сервис и Gopher сервис
- Что такое ftp сервис?
- Когда необходимо использовать ftp сервис?
- Как работает ftp Сервис?
- Конфигурирования Сеанса.
- Просмотр Текущих Сеансов
- Конфигурирование ftp Входа в систему
- Управление Анонимными Соединениями Установка имени пользователя и пароля защиты:
- Настройка Сообщений
- Конфигурирование ftp Каталогов. Установка Исходного каталога
- Установка, Стиля просмотра
- Установка разрешения на чтение и запись.
- Чтение.
- Создание Файлов Аннотации
- Аннотация файлов
- Ошибки клиента броузера ftp, Directory Annotation Enabled
- Специальные Каталоги в Home каталоге
- Использование Имени Пользователя Directories
- Использование Анонимного Каталога
- Ftp Клиенты
- Что такое Gopher сервис?
- Конфигурирование Gopher сервиса
- Управление Защитой через Имя Пользователя и Passord’s. Установка имени пользователя и пароля защиты.
- Установка wais Индексные Запросы
- Tag файлы
- Создание tag Файлов. Создавать файл отметки
- Резюме содержания файла.
- Интерпретация элементов ввода