Организация виртуальной памяти, преобразование адреса

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

Обмен данными между процессами на основе виртуальной памяти.

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

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

  • Например, несколько пользователей работают с одной программой. Данные у них должны быть, конечно, в двух экземплярах, но код программы – в одной.
  • Или для межпроцессного обмена данными, когда один поток пишет данные в буфер, а второй – оттуда читает.

Сегмент памяти в этом случае называется РАЗДЕЛЯЕМОЙ ПАМЯТЬЮ.

При работе с виртуальной памятью это сделать можно по-разному:

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

a.При сегментной организации для этого надо – в дескрипторах виртуального сегмента указать один и тот же базовый физический адрес

b. При сегментно-страничной – надо настроить таблицу страниц каждого процесса

c. При чисто страничной – не выйдет, нет понятия сегмент.

Функции работы ОС по работе с разделяемой памятью:

  • Поддержка схемы именования ресурсов
  • Проверка прав доступа процесса к ресурсу
  • Отслеживать, сколько процессов пользуются ресурсом

ОС может создавать разделяемый ресурс:

  • По запросу (через системный вызов – все процессы, запрашивающие создание разделяемого ресурса с одним и тем же id, могут им пользоваться)
  • По умолчанию – например, когда поступает несколько запросов на выполнение одного и того же приложения.

Выгрузка разделяемых сегментов на диск ничем не отличается от выгрузки индивидуальных сегментов.

Аппаратная поддержка сегментной организации памяти в системах на основе процессоров с архитектурой IA32.

Небольшое вступление про процессоры IA-32 и аппаратную поддержку мультипрограммирования

Аппаратные средства поддержки мультипрограммирования есть во всех современних процессорах, в полной мере есть они и в семействе 32-разрядных процессоров Intel: Pentium, Pentium Pro, Pentium 2, 3, Celeron, 80386, 80486. Архитектуру этих процессоров называют еще IA-32 или х86.

Процессоры х86 могут работать в:

— реальном режиме (разработан для совместимости с процем 8086, 16-разрядные инструкции и 1 Мб оперативы)

— защищенном режиме (основной режим работы проца);

Важную роль в организации вычислительного процесса играют регистры процессора, поэтому эту страшную мутотень надо подробно рассмотреть. Одно утешение – на ТСИСе тоже это надо сдавать на экзамене. Так что бьем двух зайцев.

Группы регистров процессоров Пентиум:

1) РОН – регистры общего назначения

2) Регистры сегментов

3) Указатель инструкций

4) Регистр флагов

5) Управляющие регистры

6) Регистры системных адресов

7) Регистры отладки и тестирования + регистры математического сопроцессора (для выполнения операций с плавающей точкой);

РОН

Есть 8 32-разрядных РОН.

  • Первые 4 РОН: А, B, C, D – для хранения операндов команд (арифметических, логических и всяких прочих)
  • Последние 4 – ESI, EDI, EBP, ESP – для задания смещения внутри сегмента данных. Используются совместно с регистрами сегментов (см дальше) для задания виртуального адреса.

К первым 4 регистрам можно обращаться:

  • Целиком (EAX, EBX, ECX, EDX)
  • К младшему их байту (AL, BL, CL, DL);
  • Ко второму по старшинству байту (AH, BH, CH, DH);
  • К двум младшим байтам (AX, BX, CX, DX);

Регистры сегментов

6 регистров – ссылаются на дескрипторы сегментов памяти:

  • CS – дескриптор кодового сегмента
  • SS – дескриптор сегмента стека
  • DS, ES, FS, GS – дескрипторы сегментов данных

Все они, кроме первого, доступны программно (туда можно загрузить новое значение с помощью команды);

Каждый сегмент хранит в себе СЕЛЕКТОР – 16-разрядное число.

Структура селектора:

12 разрядов 1 разряд 3 разряда
Индекс в таблице дескрипторов сегментов Показывает, где находится дескриптор:- в GDT- в LDT Поле RPL – уровень привилегий запроса к этому сегменту

3. Указатель инструкций EIP – содержит смещение адреса текущей инструкции.

EIP + CS(из регистров сегментов) = виртуальный адрес инструкции.

4. Регистр флагов (EFLAGS)– содержит признаки, характеризующие результат выполнения операции:

— флаг знака

— флаг нуля

— флаг переполнения

— флаг паритета

— флаг переноса и тд

— флаг разрешения аппаратных прерываний (разрешение аппаратных прерываний IF)

5. Управляющие регистры:

5 управляющих регистров: CR0, CR1, CR2, CR3, CR4 – хранят данные об общем состоянии процессора.

CR0 – все основные признаки:

— реальный / защищенный режим

— вкл / выкл страничного механизма

— признаки, влияющие на работу кэша и выполнение команд с плавающей точкой

CR1 – зарезервирован

CR2 – линейный адрес страничного отказа

CR3 – физический адрес таблицы разделов

CR4 – работа архитектурных расширений (возможность использования страниц > 4 Мб)

Рандомно подобранные статьи с сайта:

Операционные системы, урок 7: Организация памяти. Виртуальная память.


Похожие статьи:

admin