Разделяемые сегменты памяти
Подсистема виртуальной памяти представляет собой удобный механизм для решения задачи совместного доступа нескольких процессов к одному и тому же сегменту памяти, который в этом случае называется разделяемой памятью (shared memory).
Хотя основной задачей операционной системы при управлении памятью является защита областей оперативной памяти, принадлежащей одному из процессов, от доступа к ней остальных процессов, в некоторых случаях оказывается полезным организовать контролируемый совместный доступ нескольких процессов к определенной области памяти. Например, в том случае, когда несколько пользователей одновременно работают с некоторым текстовым редактором, нецелесообразно многократно загружать его код в оперативную память. Гораздо экономичней загрузить всего одну копию кода, которая обслуживала бы всех пользователей, работающих в данное время с этим редактором (для этого код редактора должен быть реентерабельным). Очевидно, что сегмент данных редактора не может присутствовать в памяти в единственном разделяемом экземпляре – для каждого пользователя должна быть создана своя копия этого сегмента, в которой помещаются редактируемый текст и значения других переменных редактора, например, его конфигурация, индивидуальная для каждого пользователя, и т.п.
Для организации разделяемого сегмента при наличии подсистемы виртуальной памяти достаточно поместить его в виртуальное адресное пространство каждого процесса, которому нужен доступ к данному сегменту, а затем настроить параметры отображения этих виртуальных сегментов так, чтобы они соответствовали одной и той же области оперативной памяти. Детали такой настройки зависят от типа используемой в ОС модели виртуальной памяти: сегментной или сегментно-страничной (чисто страничная организация не поддерживает понятие «сегмент», что делает невозможным решение рассматриваемой задачи). Например, при сегментной организации необходимо в дескрипторах виртуального сегмента каждого процесса указать один и тот же базовый физический адрес. При сегментно-страничной организации отображение на одну и ту же область памяти достигается за счет соответствующей настройки таблицы страниц каждого процесса.
В приведенном выше описании подразумевалось, что разделяемый сегмент помещается в индивидуальную часть виртуального адресного пространства каждого процесса (рис. 4.6, а) и описывается в каждом процессе индивидуальным дескриптором сегмента (и индивидуальными дескрипторами страниц, если используется сегментно-страничный механизм). «Попадание» же этих виртуальных сегментов на общую часть оперативной памяти достигается за счет согласованной настройки операционной системой многочисленных дескрипторов для множества процессов.
Возможно и более экономичное для ОС решение этой задачи – помещение единственного разделяемого виртуального сегмента в общую часть виртуального адресного пространства процессов, т.е. в ту часть, которая обычно используется для модулей ОС (рис. 4.6, б). В этом случае настройка дескриптора сегмента (и дескрипторов страниц) выполняется только один раз, а все процессы пользуются такой настройкой и совместно используют часть оперативной памяти.
При работе с разделяемыми сегментами памяти ОС должна выполнять некоторые функции, общие для любых разделяемых между процессами ресурсов – файлов и т.п. Эти функции состоят в поддержке схемы именования ресурсов, проверке прав доступа определенного процесса к ресурсу, а также в отслеживании количества процессов, пользующихся данным ресурсом (чтобы удалить его в случае ненадобности). Для того чтобы отличать разделяемые сегменты памяти от индивидуальных, дескриптор сегмента должен содержать поле, имеющее два значения: shared (разделяемый) или private (индивидуальный).
ОП
ВП2
ВП1
а
ОП
ВП2
ВП1 ВПn
б
Рис. 4.6. Два способа создания разделяемого сегмента памяти
Операционная система может создавать разделяемые сегменты как по явному запросу, так и по умолчанию. В первом случае прикладной процесс должен выполнить соответствующий системный вызов, по которому операционная система создаст новый сегмент в соответствии с указанными в вызове параметрами: размером сегмента, разрешенными над ним операциями (чтение/запись) и идентификатором. Все процессы, выполнившие подобные вызовы с одним и тем же идентификатором, получают доступ к этому сегменту и используют его по своему усмотрению, например в качестве буфера для обмена данными. Во втором случае операционная система сама в определенных ситуациях принимает решение о том, что нужно создать разделяемый сегмент.
Наиболее типичным примером такого рода является поступление нескольких запросов на выполнение одного и того же приложения. Если кодовый сегмент приложения помечен в исполняемом файле как реентерабельный и разделяемый, то ОС не создает при поступлении нового запроса новую индивидуальную для процесса копию кодового сегмента этого приложения, а отображает уже существующий разделяемый сегмент в виртуальное адресное пространство процесса. При закрытии приложения каким-либо процессом ОС проверяет, существуют ли другие процессы, пользующиеся данным приложением, и если их нет, то удаляет данный разделяемый сегмент.
Разделяемые сегменты выгружаются на диск системой управления виртуальной памятью по тем же алгоритмам и с помощью тех же механизмов, что и индивидуальные.
- Рецензенты:
- Ответственные за выпуск:
- Оглавление
- Введение
- 1. Назначение и функции операционной системы
- 1.1. Функциональные компоненты операционной системы автономного компьютера
- 1.1.1. Управление процессами
- 1.1.2. Управление памятью
- 1.1.3. Управление файлами и внешними устройствами
- 1.1.4. Защита данных и администрирование
- 1.1.5. Интерфейс прикладного программирования
- 1.1.6. Пользовательский интерфейс
- Вопросы для самопроверки
- Контрольные вопросы
- 1.2. Сетевые операционные системы
- 1.2.1. Сетевые и распределенные ос
- 1.2.2. Два значения термина «сетевая ос»
- 1.2.3. Функциональные компоненты сетевой ос
- 1.2.4. Сетевые службы и сетевые сервисы
- 1.2.5. Встроенные сетевые службы и сетевые оболочки
- 1.3. Требования к современным операционным системам
- Вопросы для самопроверки
- Контрольные вопросы
- 2. Архитектура операционной системы
- 2.1. Ядро и вспомогательные модули ос
- 2.2. Ядро и привилегированный режим
- 2.3. Многослойная структура ос
- 2.4. Аппаратная зависимость ос
- 2.5. Переносимость операционной системы
- Вопросы для самопроверки
- Контрольные вопросы
- 2.6. Микроядерная архитектура
- 2.6.1. Концепция
- 2.6.2. Преимущества и недостатки микроядерной архитектуры
- 2.7. Совместимость и множественные прикладные среды
- 2.7.1. Двоичная совместимость и совместимость исходных текстов
- 2.7.2. Трансляция библиотек
- 2.7.3. Способы реализации прикладных программных сред
- Вопросы для самопроверки
- Контрольные вопросы
- 3. Процессы и потоки
- 3.1. Мультипрограммирование
- 3.1.1. Мультипрограммирование в системах пакетной обработки
- 3.1.2. Мультипрограммирование в системах разделения времени
- 3.1.3. Мультипрограммирование в системах реального времени
- Вопросы для самопроверки
- Контрольные вопросы
- 3.2. Мультипроцессорная обработка
- Вопросы для самопроверки
- Контрольные вопросы
- 3.3. Планирование процессов и потоков
- 3.4. Понятия «процесс» и «поток»
- 3.4.1. Создание процессов и потоков
- 3.4.2. Планирование и диспетчеризация потоков
- 3.4.3. Состояния потока
- 3.4.4. Вытесняющие и невытесняющие алгоритмы планирования
- 3.4.5. Алгоритмы планирования, основанные на квантовании
- 3.4.6. Алгоритмы планирования, основанные на приоритетах
- 3.4.7. Смешанные алгоритмы планирования
- 3.5. Синхронизация процессов и потоков
- 3.5.1. Цели и средства синхронизации
- 3.5.2. Сигналы
- Вопросы для самопроверки
- Контрольные вопросы
- 4. Управление памятью
- 4.1. Функции операционной системы по управлению памятью
- 4.2. Типы адресов
- Вопросы для самопроверки
- Контрольные вопросы
- 4.3. Алгоритмы распределения памяти
- 4.3.1. Алгоритмы распределения без использования внешней памяти Распределение памяти динамическими разделами
- Распределение памяти перемещаемыми разделами
- 4.3.2. Алгоритмы распределения с использованием внешней памяти
- Свопинг и виртуальная память
- Страничное распределение
- Сегментное распределение
- Сегментно-страничное распределение
- Разделяемые сегменты памяти
- Вопросы для самопроверки
- Контрольные вопросы
- 5. Ввод-вывод и файловая система
- 5.1. Задачи операционной системы по управлению файлами и устройствами
- 5.2. Специальные файлы
- 5.3. Логическая организация файловой системы
- 5.3.1. Цели и задачи файловой системы
- 5.3.2. Типы файлов
- 5.3.3. Иерархическая структура файловой системы
- 5.3.4. Имена файлов
- 5.3.5. Монтирование
- 5.3.6. Атрибуты файлов
- 5.3.7. Логическая организация файла
- Вопросы для самопроверки
- Контрольные вопросы
- 5.4. Физическая организация файловой системы
- 5.4.1. Диски, разделы, секторы, кластеры
- 5.4.2. Физическая организация и адресация файла
- 2048 Записей
- 5.5. Физическая организация fat
- Кластер № 17 – начальный кластер файла file1; кластер № 18 – начальный кластер файла file2
- 5.6. Физическая организация файловых систем s5 и ufs
- 5.7. Физическая организация файловой системы ntfs
- 5.7.1. Структура тома ntfs
- 5.7.2. Структура файлов ntfs
- 5.7.3. Каталоги ntfs
- Вопросы для самопроверки
- Контрольные вопросы
- 5.8. Контроль доступа к файлам
- 5.8.1. Доступ к файлам как частный случай доступа к разделяемым ресурсам
- 5.8.2. Механизм контроля доступа
- Имена файлов
- 5.8.3. Организация контроля доступа в ос unix
- Процесс
- Запрос операции
- Вопросы для самопроверки
- Контрольные вопросы
- 5.8.4. Организация контроля доступа в ос Windows nt
- 5.8.5. Разрешения на доступ к каталогам и файлам
- Соотношение индивидуальных и стандартных разрешений для файлов
- Вопросы для самопроверки
- Контрольные вопросы
- Ответы на вопросы для самопроверки
- Лабораторные работы
- Методические указания для проведения лабораторных занятий и выполнения контрольной работы
- Лабораторная работа № 1 Системный реестр Windows 9x. Редактор базы данных регистрации
- Редактор системного реестра. Утилита regedit.Exe
- Командный файл системного реестра
- Утилита редактора системных правил Poledit
- Список ключей системного реестра
- Заблокировать возможность удаления принтеров.
- Заблокировать возможность добавления принтеров.
- Скрыть вкладку «Устройства» утилиты «Система».
- Скрыть вкладку «Профили оборудования» утилиты «Система».
- Лабораторная работа № 2 Администрирование сетевой ос Windows xp
- Установка удаленного терминала (Remote DeskTop Connection)
- Работа с Windows 2003 Server
- Утилиты панели управления
- Управление рабочей станцией
- Администрирование
- Конфигурирование сервера
- Управление контроллером домена
- Предоставление доступа к ресурсам сервера
- Привилегия клиента удаленного терминала
- Панель задач. Управление процессами
- Лабораторная работа № 3 Командные центры Windows 9х
- Утилита «Дата/время»
- Утилита «Клавиатура»
- Утилита «Мышь»
- Утилита «Специальные возможности»
- Утилита «Принтеры»
- Утилита «Шрифты»
- Утилита «Установка и удаление программ»
- Утилита «Система»
- Утилита «Язык и стандарты» Окно утилиты Язык и стандарты содержит вкладки Денежные единицы, Время, Дата, Региональные стандарты, Числа.
- Рабочий стол. Свойства рабочего стола
- Лабораторная работа № 4 Установка ос Fedora Core X. Режимы работы системы. Инсталляция приложений
- Подготовка жесткого диска к инсталляции ос Linux
- Программа редактирования разделов жесткого диска PowerQuest PartitionMagic 8.0
- Создать как: (Create as:) Logical Partition Тип раздела: (Partition type:) Linux Ext3 Размер: (Size:) 9500
- Инсталляция ос Fedora Core X
- Графический интерфейс gnome ос Linux
- Лабораторная работа № 4 Установка ос Fedora Core X
- Текстовый интерфейс ос Linux Алфавитно-цифровой терминал
- Режимы работы ос Linux
- Установка приложений в ос Red Hat
- Лабораторная работа № 5 Подсистемы управления ос
- Управление ресурсами ос Linux
- Графические утилиты управления процессами. Системный монитор
- Подсистемы управления, общие для всех ресурсов
- Администрирование в ос Red Hat. Локальные системы
- Пользовательский интерфейс
- Регистрация событий
- Лабораторная работа № 6 Файловые системы. Сетевые сервисы ос Linux
- Команды и утилиты, предназначенные для работы с файловыми системами
- Создание, редактирование и удаление разделов жесткого диска. Утилита fdisk
- Создание и локализация файловой системы
- Файловые службы и сетевые файловые системы
- Автомонтирование
- Сервисы Linux
- Список вопросов к контрольной работе
- Библиографический список