MaterStudiorum.ru - домашняя страничка студента.
Минимум рекламы - максимум информации.


Авиация и космонавтика
Административное право
Арбитражный процесс
Архитектура
Астрология
Астрономия
Банковское дело
Безопасность жизнедеятельности
Биографии
Биология
Биология и химия
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
Валютные отношения
Ветеринария
Военная кафедра
География
Геодезия
Геология
Геополитика
Государство и право
Гражданское право и процесс
Делопроизводство
Деньги и кредит
Естествознание
Журналистика
Зоология
Издательское дело и полиграфия
Инвестиции
Иностранный язык
Информатика
Информатика, программирование
Исторические личности
История
История техники
Кибернетика
Коммуникации и связь
Компьютерные науки
Косметология
Краткое содержание произведений
Криминалистика
Криминология
Криптология
Кулинария
Культура и искусство
Культурология
Литература и русский язык
Литература(зарубежная)
Логика
Логистика
Маркетинг
Математика
Медицина, здоровье
Медицинские науки
Международное публичное право
Международное частное право
Международные отношения
Менеджмент
Металлургия
Москвоведение
Музыка
Муниципальное право
Налоги, налогообложение
Наука и техника
Начертательная геометрия
Новейшая история, политология
Оккультизм и уфология
Остальные рефераты
Педагогика
Полиграфия
Политология
Право
Право, юриспруденция
Предпринимательство
Промышленность, производство
Психология
Психология, педагогика
Радиоэлектроника
Разное
Реклама
Религия и мифология
Риторика
Сексология
Социология
Статистика
Страхование
Строительные науки
Строительство
Схемотехника
Таможенная система
Теория государства и права
Теория организации
Теплотехника
Технология
Товароведение
Транспорт
Трудовое право
Туризм
Уголовное право и процесс
Управление
Управленческие науки
Физика
Физкультура и спорт
Философия
Финансовые науки
Финансы
Фотография
Химия
Хозяйственное право
Цифровые устройства
Экологическое право
Экология
Экономика
Экономико-математическое моделирование
Экономическая география
Экономическая теория
Эргономика
Этика
Юриспруденция
Языковедение
Языкознание, филология
    Начало -> Информатика, программирование -> Механизмы межпроцессных взаимодействий в операционной системе Unix

Название:Механизмы межпроцессных взаимодействий в операционной системе Unix
Просмотров:66
Раздел:Информатика, программирование
Ссылка:none(0 KB)
Описание:Разделяемая память. Семафоры. Очереди сообщений. Структуры данных, используемые для организации очередей сообщений. Программные каналы. Программные гнезда (sockets). Одна из возможных конфигураций программных гнезд. Потоки (streams).

Часть полного текста документа:

Механизмы межпроцессных взаимодействий в операционной системе Unix Сергей Кузнецов Возникшие проблемы
    Избыточный набор системных средств, предназначенных для обеспечения возможности взаимодействия и синхронизации процессов, которые не обязательно связаны отношением родства
    IPC - Inter-Process Communication Facilities
    с появлением UNIX System V Release 4.0 все эти средства были узаконены и вошли в фактический стандарт ОС UNIX современного образца
    в разных вариантах системы средства IPC реализуются по-разному
    эффективность реализации различается
    усложняется разработка мобильных асинхронных программных комплексов
    Пакет средств IPC
    UNIX System V Release 3.0
    средства, обеспечивающие возможность наличия общей памяти между процессами (сегменты разделяемой памяти - shared memory segments)
    средства, обеспечивающие возможность синхронизации процессов при доступе с совместно используемым ресурсам, например, к разделяемой памяти (семафоры - semaphores)
    средства, обеспечивающие возможность посылки процессом сообщений другому произвольному процессу (очереди сообщений - message queues)
    Общие свойства всех трех механизмов:
    для каждого механизма поддерживается общесистемная таблица, элементы которой описывают всех существующих в данный момент представителей механизма (конкретные сегменты, семафоры или очереди сообщений)
    элемент таблицы содержит некоторый числовой ключ, который является выбранным пользователем именем представителя соответствующего механизма
    процесс, желающий начать пользоваться одним из механизмов, обращается к системе с системным вызовом из семейства "get", ответным параметром является числовой дескриптор
    ключ IPC_PRIVATE
    ключ IPC_CREAT
    защита доступа основывается на тех же принципах, что и защита доступа к файлам
    Разделяемая память
    shmget создает новый сегмент разделяемой памяти или находит существующий сегмент с тем же ключом
    shmat подключает сегмент с указанным дескриптором к виртуальной памяти обращающегося процесса
    shmdt отключает от виртуальной памяти ранее подключенный к ней сегмент с указанным виртуальным адресом начала
    shmctl служит для управления параметрами, связанными с существующим сегментом
    После подключения сегмента разделяемой памяти к виртуальной памяти процесса, он может обращаться к соответствующим элементам памяти с использованием обычных машинных команд чтения и записи
    shmid = shmget(key, size, flag);
    size определяет желаемый размер сегмента в байтах
    если в таблице разделяемой памяти находится элемент, содержащий заданный ключ, и права доступа не противоречат текущим характеристикам процесса, то значением системного вызова является дескриптор существующего сегмента
    реальный размер сегмента можно узнать с помощью системного вызова shmctl
    иначе создается новый сегмент с размером не меньше установленного в системе минимального размера сегмента разделяемой памяти и не больше установленного максимального размера
    создание сегмента не означает немедленного выделения под него основной памяти
    откладывается до выполнения первого системного вызова подключения сегмента к виртуальной памяти некоторого процесса
    при выполнении последнего системного вызова отключения сегмента от виртуальной памяти соответствующая основная память освобождается
    virtaddr = shmat(id, addr, flags);
    id - это ранее полученный дескриптор сегмента
    addr - желаемый процессом виртуальный адрес, который должен соответствовать началу сегмента в виртуальной памяти
    virtaddr - реальный виртуальный адрес начала сегмента
    не обязательно совпадает со значением прямого параметра addr
    если addr == 0, ядро выбирает наиболее удобный виртуальный адрес начала сегмента
    shmdt(addr);
    addr - виртуальный адрес начала сегмента в виртуальной памяти, ранее полученный от системного вызова shmat
    shmctl(id, cmd, shsstatbuf);
    cmd идентифицирует требуемое конкретное действие
    важна функция уничтожения сегмента разделяемой памяти
    Семафоры
    Обобщение классического механизма семафоров общего вида Диекстры
    Целесообразность обобщения сомнительна
    Обычно использовался облегченный вариант двоичных семафоров
    Известен алгоритм реализации семафоров общего вида на основе двоичных
    Семафор в ОС UNIX:
    значение семафора
    идентификатор процесса, который хронологически последним работал с семафором
    число процессов, ожидающих увеличения значения семафора
    число процессов, ожидающих нулевого значения семафора
    Три системных вызова:
    semget для создания и получения доступа к набору семафоров
    semop для манипулирования значениями семафоров
    semctl для выполнения управляющих операций над набором семафоров
    id = semget(key, count, flag);
    key, flag и id - обычный смысл
    count - число семафоров в наборе семафоров, обладающих одним и тем же ключом
    индивидуальный семафор идентифицируется дескриптором набора семафоров и номером семафора в наборе
    если набор семафоров с указанным ключом уже существует, то число семафоров в группе можно узнать с помощью системного вызова semctl
    oldval = semop(id, oplist, count);
    id - дескриптор группы семафоров
    oplist - массив описателей операций над семафорами группы
    count - размер этого массива
    возвращается значение последнего обработанного семафора
    Элемент массива oplist:
    номер семафора в указанном наборе семафоров
    операция
    флаги
    Если проверка прав доступа проходит нормально
    указанные в массиве oplist номера семафоров не выходят за пределы общего размера набора семафоров
    для каждого элемента массива oplist значение семафора изменяется в соответствии со значением поля "операция"
    Значение поля операции положительно
    значение семафора увеличивается на единицу
    все процессы, ожидающие увеличения значения семафора, активизируются (пробуждаются)
    Значение поля операции равно нулю
    если значение семафора равно нулю, выбирается следующий элемент массива oplist
    иначе число процессов, ожидающих нулевого значения семафора, увеличивается на единицу
    обратившийся процесс переводится в состояние ожидания (усыпляется)
    Значение поля операции отрицательно
    (1) его абсолютное значение меньше или равно значению семафора
    это отрицательное значение прибавляется к значению семафора
    если значение семафора стало нулевым, то ядро активизирует все процессы, ожидающие нулевого значения этого семафора
    (2) значение семафора меньше абсолютной величины поля операции
    число процессов, ожидающих увеличения значения семафора увеличивается на единицу
    текущий процесс откладывается
    Стремление добиться возможности избегать тупиковых ситуаций
    Системный вызов semop выполняется как атомарная операция
    Флаг IPC_NOWAIT заставляет ядро ОС UNIX не блокировать текущий процесс
    лишь сообщать в ответных параметрах о возникновении ситуации, приведшей бы к блокированию процесса
    semctl(id, number, cmd, arg);
    id - это дескриптор группы семафоров
    number - номер семафора в группе
    cmd - код операции
    arg - указатель на структуру, содержимое которой интерпретируется в зависимости от операции
    Можно уничтожить индивидуальный семафор в указанной группе
    Очереди сообщений
    Четыре системных вызова:
    msgget для образования новой очереди сообщений или получения дескриптора существующей очереди
    msgsnd для посылки сообщения (его постановки в очередь сообщений)
    msgrcv для приема сообщения (выборки сообщения из очереди)
    msgctl для выполнения управляющих действий
    msgqid = msgget(key, flag);
    Сообщения хранятся в виде связного списка
    Декскриптор очереди сообщений - индекс в массиве заголовков очередей сообщений
    В заголовке очереди хранятся:
    указатели на первое и последнее сообщение в данной очереди
    число сообщений
    общий размер в байтах сообщений, находящихся в очереди
    идентификаторы процессов, которые последними послали или приняли сообщение через данную очередь
    временные метки последних выполненных операций msgsnd, msgrsv и msgctl
    Структуры данных, используемые для организации очередей сообщений
    
    msgsnd(msgqid, msg, count, flag);
    msg - это указатель на структуру, содержащую целочисленный тип сообщения и символьный массив
    count - задает размер сообщения в байтах
    flag определяет действия ядра при выходе за пределы допустимых размеров внутренней буферной памяти
    Условия успешной постановки сообщения в очередь:
    процесс должен иметь право на запись в очередь
    длина сообщения не должна превосходить верхний предел
    общая длина сообщений не должна превосходить установленного предела
    тип сообщения должен быть положительным целым числом
    Процесс продолжает свое выполнение
    Ядро активизирует (пробуждает) все процессы, ожидающие поступления сообщений из очереди
    Превышается верхний предел суммарной длины сообщений
    обратившийся процесс откладывается до разгрузки очереди
    но есть флаг IPC_NOWAIT (как для семафоров)
    count = msgrcv(id, msg, maxcount, type, flag);
    msg - указатель на структуру данных в адресном пространстве пользователя для размещения принятого сообщения
    maxcount - размер области данных (массива байтов) в структуре msg
    type специфицирует тип сообщения, которое желательно принять
    flag указывает ядру, что следует предпринять, если в указанной очереди сообщений отсутствует сообщение с указанным типом
    count - реальное число байтов, переданных пользователю
    Значением параметра type является нуль
    выбирается первое сообщение
    копируется в заданную пользовательскую структуру данных
    процессы, отложенные по причине переполнения очереди сообщений, активизируются
    если значение параметра maxcount оказывается меньше реального размера сообщения, ядро не удаляет сообщение из очереди и возвращает код ошибки
    если задан флаг MSG_NOERROR, то выборка сообщения производится, и в буфер пользователя переписываются первые maxcount байтов сообщения
    Значение type есть положительное целое число
    выбирается первое сообщение с таким же типом
    Значение type есть отрицательное целое число
    выбирается первое сообщение, значение типа которого меньше или равно абсолютному значению type
    В очереди отсутствуют сообщения, соответствующие спецификации type
    процесс откладывается до появления в очереди требуемого сообщения
    но есть флаг IPC_NOWAIT
    msgctl(id, cmd, mstatbuf);
    опрос состояния описателя очереди сообщений
    изменение его состояния
    уничтожение очереди сообщений
    Программные каналы
    Создание неименованного программного канала
    pipe(fdptr);
    fdptr - это указатель массива из двух целых чисел для размещения дескриптора для чтения из программного канала (с помощью read) и записи в программный канал (с помощью write)
    обычные дескрипторы файлов
    два элемента таблицы открытых файлов процесса
    Создание именованных программных каналов (или получение доступа к существующим)
    Обычный системный вызов open
    если канал открывается на запись, и ни один процесс не открыл его для чтения, то процесс блокируется до тех пор, пока некоторый процесс не откроет этот канал для чтения
    аналогично обрабатывается открытие для чтения
    имеется флаг NO_DELAY
    Запись и чтение: read и write
    при записи данные помещаются в начало канала
    при чтении выбираются из конца канала
    возможны откладывания процессов
    Окончание работы процесса: close
    при выполнении последнего закрытия канала по записи все процессы, ожидающие чтения из программного канала, активизируются с возвратом кода ошибки из системного вызова
    Программные гнезда (sockets)
    Поддерживаемый ядром механизм, скрывающий особенности сетевой среды и позволяющий единообразно взаимодействовать процессам
    выполняющимся на одном компьютере
    в пределах одной локальной сети
    разнесенным на разные компьютеры территориально распределенной сети
    Первое решение:
    UNIX BSD 4.1 в 1982 г. ............






Похожие работы:

Название:Последние наблюдения процессов образования планет в нашей галактике
Просмотров:745
Описание: , заставляют по новому взглянуть на теорию образования солнечной системы Ранее обнаруженные объекты формирующихся звезд и планетных систем в разных районах нашей Галактики, вносят массу загадок того, насколько сл

Название:Биофизика клетки и мембранных процессов
Просмотров:875
Описание: А.Б.Рубин, О.Р.Кольс, Т.Е.Кренделева и др. Разнообразие живых систем во многом определяется многообразием структуры и функции клеточных мембран. Они не только формируют клетку и внутриклеточные структуры, отделяют

Название:Биофизика фотобиологических процессов
Просмотров:888
Описание: А.Б.Рубин, О.Р.Кольс, Т.Е.Кренделева и др. Одной из важнейших фундаментальных проблем биофизики является расшифровка механизмов первичных процессов действия света на разные биологические системы. Свет является о

Название:Описание процесса соотнесения пропагандистских и рекламных коммуникаций в сети Интернет
Просмотров:677
Описание: Булавко Елена Если ваша фирма планирует продвижение нового товара или услуги на рынок, попробуйте воспользоваться возможностями сети Internet. (Предварительно оцените свою целевую аудиторию. Если на 80 - 90% она состои

Название:Модели технологических процессов взаимодействия службы занятости с безработными и ищущими работу гражданами
Просмотров:733
Описание: Задание № 1 Проанализируйте таблицу, сделайте выводы. РАСПРЕДЕЛЕНИЕ ЧИСЛЕННОСТИ БЕЗРАБОТНЫХ ПО ВОЗРАСТНЫМ ГРУППАМ И УРОВНЮ ОБРАЗОВАНИЯ в 2008 г. (на конец ноября; в процентах к итогу) Проанализировав таблицу,

 
     

Вечно с вами © MaterStudiorum.ru