ВУЗ:
Составители:
100
Следует отметить, что разбиение на сегменты позволяет дифферен-
цировать способы доступа к разным частям программы (сегментам).
Например, можно запретить обращаться с операциями записи и чтения в
кодовый сегмент программы, а для сегмента данных разрешить только
чтение. Кроме того, разбиение программы на «осмысленные» части де-
лает принципиально возможным разделение одного сегмента несколь-
кими процессами. Например, если два процесса используют одну и ту
же математическую подпрограмму, то в ОП может быть загружена
только одна копия этой подпрограммы (рис. 27).
Сегмент 0
Сегмент 1
Сегмент 2
Сегмент 3
Виртуальное адресное
пространство процесса А
0
1
2 выгружен
3 выгружен
ОС
Сегмент 0
процесса А
Сегмент 1 процесса А
…
Сегмент 2 процесса В
Сегмент 0
процесса В
Сегмент 0
Сегмент 1
Сегмент 2
0
1 выгружен
2
Виртуальное адресное
пространство процесса В
Таблица сегментов
процесса А
Таблица сегментов
процесса В
Разделенный
сегмент
Рисунок 27 – Пример распределения памяти сегментами
Каждый сегмент размещается в памяти как до определенной степе-
ни самостоятельная единица. Логически обращение к элементам про-
граммы в этом случае будет состоять из имени сегмента и смещения от-
носительно начала этого сегмента. Физически имя (или порядковый но-
мер) сегмента будет соответствовать некоторому адресу, с которого этот
сегмент начинается при его размещении в памяти, и смещение должно
прибавляться к этому базовому адресу.
Преобразование имени сегмента в его порядковый номер осу-
ществляет система программирования. Для каждого сегмента система
программирования указывает его объем. Он должен быть известен ОС,
чтобы она могла выделять ему необходимый объем памяти. Операцион-
ная система будет размещать сегменты в памяти и вести для каждого
сегмента учет о местонахождении этого сегмента. Вся информация о те-
кущем размещении сегментов задачи в памяти обычно сводится в таб-
Страницы
- « первая
- ‹ предыдущая
- …
- 98
- 99
- 100
- 101
- 102
- …
- следующая ›
- последняя »
