798.00K
Категория: ИнформатикаИнформатика

Механизмы синхронизации

1.

Механизмы синхронизации

2.

Как бороться с фрагментацией?
Необходимо отказаться от понятия непрерывного
линейного отображения и перейти к кусочно-линейному
отображению, т.е. отображать мы будем линейно, но
разрывною
Примерно в одно и то же время возникло две идеи:
страничная организация памяти;
сегментная организация памяти.

3.

Страничная организация памяти
• Есть некоторая программа или процесс со своим
логическим адресным пространством.
• Помимо этого процесса есть физическое адресное
пространство, соответствующее ОП.
• Это физическое адресное пространство частично занято –
там уже находятся другие процессы.
• Необходимо данный процесс разместить в оставшейся
оперативной памяти.
• Каким образом это сделать?

4.

Страничная организация памяти
• Разобьём логическое пространство на части одинаковой
длинны, которые назовем страницы.
• Последняя страница в логическом адресном
пространстве может быть занята не полностью (очень
тяжело написать программу, которая бы полностью
умещалась строго в кратное количество килобайт).
• Дальше физическое адресное пространство разобьем на
куски того же размера и назовем их кадрами.
• Адрес в логическом адресном пространстве, т.е. в
пространстве, в котором работает процесс после
разбиения на страницы, вычисляется легко.

5.

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

6.

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

7.

Страничная организация памяти
• Мы поместили в память весь наш процесс, хотя
непрерывного куска для его помещения не
существовало.
• Для того, чтобы наша программа нормально работала
естественным образом на этапе исполнения должно
осуществляться окончательное вычисление физического
адреса.
• Как вычислить физический адрес?
• Процессы работают в терминах логических адресов.

8.

Страничная организация памяти
• Реально мы должны брать адрес физический.
• Менеджер памяти должен осуществить преобразование
из адреса логического в адрес физический.
• Что для этого нужно?
• Для этого нужно знать какая страница логическая
соответствует какому кадру.
• Смещения будут совпадать.
• Достаточно ввести некую табличку, которая получила
название таблица страниц, где осуществляется
преобразование из номера страницы в номер кадра.

9.

10.

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

11.

Связь логического и физического адресов при страничной организации памяти

12.

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

13.

Страничная организация памяти. Работа
менеджера памяти
• При таком выборе размера страницы можно логический
адрес разбить на 2 части:
• офсет - смещение в адресном пространстве.
• номер страницы.
• Для того, чтобы логический адрес успешно
преобразовывался во время работы в физический адрес
менеджер памяти должен иметь доступ к таблице
страницы.
• В этой таблице задается соответствие между номером
страницы и номером кадра.

14.

Страничная организация памяти. Работа
менеджера памяти
• Принято считать, что это массив и индекс в этом массиве
– это номер страницы, а содержимое – это номер кадра.
• В результате должны получить физический адрес.
• Каким образом?
• Физический адрес тоже будет делиться на две части:
офсет остается тем же за счет того, что размер страницы
совпадает с размером кадра, а вместо номера страницы
должен стоять номер кадра.
• Необходимо заменить номер страницы на номер кадра и
все

15.

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

16.

Сегментная организация памяти.
• Считалось, что линейное адресное пространство
становится не одномерным, а двумерным.
• Имеется линейное адресное пространство.
• Разбиваем его на части, каждая часть представляет свое
собственное независимое адресное пространство
(сегмент 1, сегмент 2, сегмент 3, сегмент кода, сегмент
данных, сегмент стека).
• Каждый сегмент представляет отдельное адресное
пространство и в каждом сегменте нумерация адресов
начинается с 0 и идет самостоятельно

17.

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

18.

Сегментная организация памяти.
• Берется сегмент 1, кладется в свободное место памяти
непрерывным образом.
• Потом сегмент 2 кладется в память, если есть место
непрерывным образом.
• То же самое проделывается с сегментом 3.
• Поскольку мы ушли от непрерывного линейного
отображения к кусочному непрерывному отображению
за счет введения двумерности исходного логического
адресного пространства, можно положить в память
процесс, даже если непрерывного пустого места не
хватало.

19.

Сегментная организация памяти.
• Для вычисления реального физического адреса
необходима функция, которая позволит вычислять этот
адрес.
• Взять номер сегмента, найти адрес начала сегмента
физической памяти и прибавить к нему офсет.
• Получим реальный физический адрес, который
соответствует логическому адресу в логическом
адресном пространстве.
• Нужна таблица сегментов (каждому сегменту ставим в
соответствие начальный адрес размещения в памяти).

20.

Сегментная организация памяти.
• Физический адрес линейный получается как физический
адрес начала сегмента плюс офсет.
• Здесь в отличии от страничной организации памяти
остается внешняя фрагментация.
Преобразование логического
адреса при сегментной
организации памяти

21.

Сегментная организация памяти. Работа
менеджера памяти
• Максимальный размер сегмента есть величина кратная
степени 2.
• Занимает определенное количество бит в физическом
адресе и офсет умещается в это количество бит.
• Можно рассмотреть логический адрес в котором
работает процессор, как составляющую из двух
компонентов:
• смещение внутри сегмента, не превышающего максимального
размера сегмента – младшие биты адреса.
• младшие биты – номер сегмента

22.

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

23.

24.

Сегментная организация памяти. Работа
менеджера памяти
• Поэтому в таблицу сегментов включен размер сегмента.
• Чтобы случайно не залезть в чужой адрес необходимо
проделать дополнительные действия.
• По номеру сегмента берется адрес начала. Берется
смещение. Сравнивается с размером сегмента.
• Если размер сегмента не превышает смещения, тогда
формируется физический адрес. В противном случае
считается ошибкой (попали в чужую память).

25.

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

26.

Сегментно - страничная организация
памяти.
• Логическое адресное пространство делится на сегменты
и является двумерным.
• Каждый сегмент делится на страницы одинакового
размера.
• Память делится на кадры.
• Каждый сегмент по принципу отображения страничного
отображения физической памяти.

27.

Сегментно - страничная организация
памяти.
• Имеется ЦПУ.
• Из ЦПУ идет логический адрес.
• Логический адрес разбивается на две части – номер
сегмента и смещение внутри сегмента.
• Далее сегмент разбивается на страницы, что означает
смещение внутри сегмента должно быть поделено на две
части – номер страницы внутри сегмента и смещение
внутри данной страницы.

28.

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

29.

Сегментно - страничная организация
памяти.
• Берется номер страницы, офсет внутри страницы.
• Получаем физический адрес, который передается в
память.

30.

Сегментно - страничная организация
памяти.
• На каждый сегмент заводится своя таблица страниц.
• Офсет внутри сегмента является тем самым адресом,
который надо рассматривать как страничный для
обычной страничной организации памяти.
• Он делится на две части: номер страницы и смещение
внутри страницы.
• В таблице сегментов находится адрес таблицы страниц
для данного сегмента.
• Находим соответствующий номер кадра. Исходя из
номера кадра и офсета строим реальный физический
адрес.
English     Русский Правила