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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



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

 

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

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

· Или для межпроцессного обмена данными, когда один поток пишет данные в буфер, а второй – оттуда читает.

 

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

 

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

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

· Поместить разделяемый сегмент в ВАП каждого процесса, и настроить параметры отображения этих виртуальных сегментов на одну область оперативной памяти.

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 – зарезервирован

 



Поделиться:


Последнее изменение этой страницы: 2017-02-05; просмотров: 345; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.222.179.186 (0.008 с.)