Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТОС_2013 / ТОС_6_3_проц_слайды1.doc
Скачиваний:
8
Добавлен:
03.03.2016
Размер:
1.56 Mб
Скачать

Области

В SCO UNIX адресное пространство процесса разделено на несколько участков, называемых областями (region).

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

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

Каждая активная область представлена соответствующей структурой данных ядра и служит основой для управления памятью процесса.

Каждая область представлена собственным сегментом памяти.

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

Примеры разделяемых областей разделяемая память, разделяемые библиотеки или отображаемые в память файлы.

Информация о каждой активной области хранится ядром в структуре данных region.

Т.к. одна и та же область может использоваться несколькими процессами, для каждого процесса ядро создает связанный список структур рregion (per process region), которые в свою очередь адресуют области, используемые процессом. Указатель на список структур pregion для каждого процесса находится в записи таблицы процессов — структуре proс.

Основные поля структур region и pregion приведены на рис. 3.10.

Указатели:

  • p_next организуют структуры pregion в виде связанного списка;

  • p_reg, обеспечивают адресацию соответствующей структуры region.

Флаги:

  • p_flags определяют права доступа к области, режим блокирования 1 памяти и т. д.

Поле p_type указывает на тип области:

Значение p_type

Описание

РТ_UNUSED

Область не используется

PT_ТEXT

Область содержит сегмент кода

PT_DATA

Область содержит сегмент данных

РТ_STACK

Область используется в качестве стека процесса

РТ_SHMEM

Область используется в качестве разделяемой памяти

Значение

Описание

PT_LIBTXT

Область содержит код библиотек

PT_LIBDAT

Область содержит данные библиотек

PT_SHFIL

Область используется для хранения

файла, отображенного в память

Поле p_regva задает виртуальный адрес области в адресном пространстве процесса.

Поля структуры region:

  • r_pgsz - размер области в страницах, из которых r_nvalid страниц присутствуют в оперативной памяти;

  • r_refcnt - число ссылок на одну и ту же область несколькими процессами;

  • r_pde - адрес таблицы страниц области;

  • r_iptr - адрес inode файла, где располагаются данные области (например, для области кода, r_iptr будет указывать на inode исполняемого файла).

Фактическую информацию о структурах управления адресным пространством процесса можно получить с помощью команды crash(). В примере определяется содержимое структур pregion процесса и характеристики соответствующих областей.

# crash

dumpfile = /dev/mem, namelist = /unix, outfile = stdout

> pregion 101

SLOT

PREG

REG#

REGVA

TYPE

FLAGS

101

0

12

0x700000

text

rdonly

1

22

0x701000

data

2

23

OxVffffffc

stack

3

145

0x80001000

lbtxt

rdonly

4

187

0x80031000

lbdat

pr

Как можно увидеть из вывода команды crash(), с рассматриваемым процессом связаны пять областей: сегмент кода, данных и стека, а также сегменты кода и данных подключенной библиотеки.

Столбец REG# определяет запись таблицы областей, где расположена адресуемая каждой pregion область region. Заметим, что значение в столбце REG# лишь отчасти соответствует полю p_reg структуры pregion, поскольку последнее является указателем, а не индексом таблицы. Столбец regva содержит значения виртуальных адресов областей.

Для областей, размер которых превышает 4 Мбайт, одной таблицы страниц недостаточно, и region хранит элементы каталога таблиц страниц в виде связанного списка.

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

>region 12 22 23

SLOT

PGSZ

VALID

SMEM

NONE

SOFF NONE SOFF

REF

SWP

NSW

FORW

BACK

INOX

TYPE

flags

12

1

1

1

0

0

11

0

0

15

5

154

stxt

dona!

22

3

1

0

0

0

1

0

0

238

23

154

priv

dona

23

2

1

1

0

0

1

0

0

135

24

priv

stack

Столбец pgsz определяет размер области в страницах, а столбец valid -число страниц этой области, находящихся в оперативной памяти. Как можно заметить, для сегментов данных и стека страниц недостаточно, поэтому может возникнуть ситуация, когда процессу потребуется обращение к адресу, в настоящее время отсутствующему в памяти. Заметим также, что столбец inox содержит индексы таблиц inode, указывающие на метаданные файлов, откуда было загружено содержимое соответствующих сегментов.

Мы можем взглянуть на дополнительные сведения об этом файле:

>inode 154

INODE TABLE SIZE = 472

SLOT 154

MAJ/MIN 1,42

FS 2

I NUMB 1562

RCNT 3

LINK 1

UID 123

GID 56

SIZE 8972

MODE f— 755

MNT 0

M/ST FLAGS R130 tx

Из этой таблицы мы можем определить файловую систему, в которой расположен файл (maj/min), а также номер его дискового inode - numb. В данном случае он равен 1562. Выполнив команду ncheck(), мы узнаем имя исполняемого файла, соответствующего исследуемому процессу:

$ ncheck -i 1562

/de/root:

1562 /home/andrei/CH3/test

Замещение страниц

Ранние версии UNIX работали на компьютерах PDP-11 с 16-разрядной архитектурой и адресным пространством 64 Кбайт.

Программные оверлееи (overlay), используются как для прикладных задач, так и для ядра операционной системы.

Суть этого метода заключается в том, что в неиспользуемые участки адресного пространства процесса записываются другие части программы.

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

Недостатки:

-значительная сложности такого подхода для разработчиков ПО,

- низкая переносимости программ, поскольку они в значительной степени зависели от конкретной организации памяти.

Свопинг

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

Механизм страничного замещения по требованию

(реализован в UNIX в 1978 году на новом компьютере VAX-11/780, имевшем 32-разрядную архитектуру, 4 Гбайт адресуемого пространства и аппаратную поддержку страничного механизма, ОС 3.xBSD)

В системах с виртуальной памятью, основанной на страничном механизме, адресное пространство процесса разделено на последовательные участки равной длины, называемыми страницами.

Такая же организация присуща и физической памяти. Любое место физической памяти адресуется номером страницы и смещением в ней.

Деление адресного пространства процесса является логическим. Логическим последовательным страницам виртуальной памяти при поддержке ОС и аппаратуры (MMU процессора) ставятся в соответствие определенные физические страницы ОП. Эта операция получила название трансляции адреса.

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

Чтобы удовлетворить второму условию, каждая страница виртуальной памяти имеет флаг присутствия в ОП.

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

Т.о., для выполнения процесса является необходимым присутствие в памяти лишь нескольких страниц процесса, к которым в данный момент происходит обращение (рис. 3.12).

Конкретный механизм страничного замещения зависит от того, как реализованы три основных принципа:

  1. При каких условиях система загружает страницы в память, т. н. принцип загрузки (fetch policy).

  2. В каких участках памяти система размещает страницы, т. н. принцип размещения (placement policy).

  3. Каким образом система выбирает страницы, которые требуется освободить из памяти, когда отсутствуют свободные страницы для размещения, т. н. принцип замещения (replacement policy).

Обычно принцип размещения не оказывает существенного влияния на работу механизма в целом.

Т.о. эффективность управления памятью полностью зависит от двух остальных принципов: загрузки и замещения.

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

Производительность таких систем полностью зависит от реализации принципа замещения.

Большинство современных версий UNIX не используют чистого страничного замещения по требованию.

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

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

Виртуальное адресное пространство может изменяться в результате динамического размещения памяти (хипа) или увеличения стека процесса.

Т.о., сам процесс "видит" только собственное виртуальное адресное пространство. Однако физические страницы, соответствующие этому адресному пространству могут в действительности располагаться в различных местах (рис. 3.13)

1. Виртуальный адрес может быть ассоциирован со страницей физической памяти.

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

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

2. Страница м.б. перемещена в область свопинга, если требуется освободить память для другого процесса.

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

(записи таблицы страниц) таким образом, чтобы виртуальный адрес указывал на новую страницу. Если потребуется опять переместить такую страницу в область свопинга, ядро сделает это только в том случае, если с момента последней загрузки произошла модификация страницы.

  1. Адресуемая страница отсутствует в памяти, но ее содержимое находится в файле на диске.

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

  1. Адресуемая страница отсутствует в памяти и она не ассоциирована ни с областью свопинга, ни с файлом.

ПРИМЕР: страница сегмента неинициализированных данных. Обращение к такой странице потребует размещения новой страницы, заполненной нулями.

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

Различные версии UNIX используют разные подходы для описания страниц.

Например, в SCO UNIX используются структуры pfdat и связанные с ними дескрипторы дисковых блоков. В UNIX 4.3BSD для этого используются поля записи таблицы страниц.

Страничное замещение имеет ряд важных преимуществ по сравнению со свопингом:

- Размер программы ограничивается лишь размером виртуальной памяти (который для компьютеров с 32-разрядной архитектурой составляет 4 Гбайт).

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

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

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

Планирование выполнения процессов

Как и ОП, процессор является разделяемым ресурсом.

Планировщик - подсистема ядра, которая обеспечивает предоставление процессорных ресурсов процессам, выполняющимся в ОС.

Ф-ции планировщика

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

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

3. Подключение процессора к процессу. При этом необходимо установить значения регистров процессора в соответствии с текущим состоянием процесса. Эти действия производятся регулировщиком.

4. Отключение процессора от процесса, например, при истечении выделенного интервала времени или при переходе процесса в состояние ожидания ввода-вывода. При этом должны быть сохранены значения отражающих состояние процесса управляющих регистров, что необходимо для последующего его восстановления. Эта функция также выполняется регулировщиком.

UNIX является системой разделения времени, это означает, что каждому процессу вычислительные ресурсы выделяются на ограниченный промежуток времени, после чего они предоставляются другому процессу и т. д.

Максимальный временной интервал, на который процесс может захватить процессор, называется временным квантом (time quantum или time slice).

UNIX является многозадачной системой, а это значит, что одновременно выполняются несколько приложений.

три основных класса приложений:

- Интерактивные приложения. К этому классу относятся командные интерпретаторы, текстовые редакторы и другие программы, непосредственно взаимодействующие с пользователем. Допустимая задержка для таких приложений составляет от 100 до 200 миллисекунд.

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

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

Примеры: измерительные комплексы или системы управления.