Операционные системы. Теория и практика. Замятин А.В. - 100 стр.

UptoLike

Составители: 

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