а < Адр. < б
При выходе любого адреса программы за отведенные ей границы, работа программы прерывается.
3.2.3. Мультипрограммирование с переменными разделами. (multiprogramming with a variable number of tasks (MVT).
Метод Multiprogramming with a Variable number of Tasks предполагает разделение памяти на разделы и использование загрузочных модулей в перемещаемых адресах, однако, границы разделов не фиксируются.
0 | ОС | ||||
90 Кб | а | Раздел 1 | |||
П5 | П4 | П3 | П2 | П1 | Раздел 2 |
Раздел 3 | |||||
Раздел 4 | |||||
80 Кб |
Как следует из рисунка, в начальной фазе отсутствует фрагментация, связанная с тем, что размер очередного процесса меньше размера, занимаемого этим процессом раздела. На этой фазе причиной фрагментации является несоответствие размера очередного процесса и оставшегося участка памяти. По мере завершения работы программы освобождаются отдельные разделы. В том случае, когда освобождаются смежные разделы, границы между ними удаляются и разделы объединяются.
0 | ОС | ||
90 Кб | а | Раздел 1 | |
П7 | П6 | П5 | 100 Кб |
Раздел 4 | |||
За счет объединения или слияния смежных разделов образуются большие фрагменты, в которых можно разместить большие программы из очереди.
Таким образом, на фазе повторного размещения действуют те же причины фрагментации, что и для метода MFT.
3.2.4. Мультипрограммирование с переменными разделами и уплотнением памяти.
Ясно, что метод Multiprogramming with a Variable number of Tasks порождает в памяти множество малых фрагментов, каждый из которых может быть недостаточен для размещения очередного процесса, однако суммарный размер фрагментов превышает размер этого процесса.
Уплотнением памяти называется перемещение всех занятых разделов по адресному пространству памяти. Таким образом, чтобы свободный фрагмент занимал одну связную область.
Вторичная память | Таблица страниц | Основная память | ||||||
программы А | 0. | |||||||
стр. 0 | 0. | 1 | 1. | стр. 0 | ||||
программа | стр. 1 | 1. | 3 | 2. | ||||
А | стр. 2 | 2. | 4 | 3. | стр. 1 | |||
стр. 3 | 0. | 7 | 0. | стр. 2 | ||||
0. | ||||||||
1. | |||||
2. | стр. 3 |
старшие разряды | младшие разряды | ||||
2n+1 | 2n | f | |||
2n-1 | 2n | Д |
На рисунке заштрихованы незаполненные нулевые разряды. Для того чтобы операция конкатенации была возможна, необходимо, чтобы базовые адреса страничных рамок располагались только в старших разрядах (2n+1), а следующие — только младших разрядов (20, 21, 22).
Например, при n=9 базовые адреса страничных рамок — это следующий ряд: 512, 1024, 1536. Следовательно, размер страничной рамки равен 512 байт.
В современных операционных системах типичный размер страницы составляет 2 Кб или 4 Кб.
Каждая операционная система поддерживает свой собственный метод работы с таблице страниц. Обычно за каждым процессом, находящимся в основной памяти, закреплена отдельная таблица страниц. В этом случае указатель на таблицу страниц хранится в PCB соответствующего процесса.
3.3.2. Аппаратная поддержка страничной организации памяти.
Преобразование логического адреса в физические осуществляется для каждого адреса, генерируемого процессором, поэтому часто для ускорения этого процесса применяются аппаратные методы. На рисунке приведена схема, иллюстрирующая метод, использующий ассоциативные регистры (associative registers).
Каждый ассоциативный регистр кроме операций чтения - записи может обрабатывать операцию сравнения кода, поступающего на его вход с частью кода, хранимого в регистре. Матрица ассоциативных регистров хранит часть таблицы страниц. Номер страницы П подается одновременно на входы всех ассоциативных регистров, которые параллельно выполняют операцию сравнения. На выходе матрицы ассоциативных регистров образуется начальный адрес страничной рамки f того регистра, в котором про-