Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГЛАВА 10. Компоненты ОС.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
209 Кб
Скачать
☆

Очереди

Помимо каналов операционная система IBM OS/2 имеет другое, более сложное средство передачи данных между процессами - очереди (queue ).

Очереди позволяют организовать передачу данных от нескольких "передающих" процессов к одному "принимающему". Они также часто используются для передачи данных между различными задачами внутри одного процесса.

Через очередь можно передавать элементы данных размером 32 бит, причем формат этих элементов полностью определяется процессом или задачей, создавшими очередь.

Схема работы очереди отличается от схемы работы канала.

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

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

Для синхронизации передачи данных для очереди можно назначить один семафор.

Система управления памятью

Система управления памятью IBM OS/2 Warp представляет собой сложный и совершенный механизм, с помощью которого процессы и задачи могут получать в свое распоряжение сотни Мбайт виртуальной памяти.

Для того чтобы лучше разобраться в том, как выполняется адресация памяти в IBM OS/2 Warp, необходимо совершить краткий экскурс в системы управления памяти DOS и Microsoft Windows. Нужно также изучить особенности адресации памяти в защищенном режиме процессоров i386 и процессоров более старших моделей. Вы найдете подробное описание защищенного режима работы процессоров в 6 томе "Библиотеки системного программиста", который так и называется - "Защищенный режим работы процессоров Intel 80286/80386/80486". Здесь же из-за недостатка места мы рассмотрим только самые основные моменты.

Управление памятью в первых версиях ibm os/2 и в стандартном режиме Microsoft Windows

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

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

Появилось понятие "логический адрес ". Когда программа адресуется к памяти в защищенном режиме, она не указывает сегмент и смещение, вместо этого она пользуется логическим адресом.

Логический адрес состоит из двух компонент - селектора и смещения.

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

Эта схема адресации памяти была использована в первых версиях операционной системы IBM OS/2 и в стандартном режиме работы Microsoft Windows.

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

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

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

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

Несмотря на то что общий объем непосредственно адресуемой памяти возрос до 16 Мбайт, максимальный размер сегмента остался равным 64 Кбайт. Поэтому программисты по-прежнему вынуждены использовать различные модели памяти и модификаторы near и far .

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

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

Для каждого процесса в IBM OS/2 создается своя локальная таблица дескрипторов . Именно поэтому адресные пространства процессов разделены физически. Таким образом, каждый процесс может адресоваться к "разрешенным" сегментам системной памяти и к своим собственным сегментам, но никак не к сегментам других процессов.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]