18
Лекция № Лекция № 7 7 Управление памятью Сегментная, страничная и сегментно-страничная организация памяти.

Лекция № 7

  • Upload
    desma

  • View
    53

  • Download
    0

Embed Size (px)

DESCRIPTION

Лекция № 7. Управление памятью. Сегментная, страничная и сегментно-страничная организация памяти. Компилятор. Программа или техническое средство, выполняющее компиляцию. Машинная программа, используемая для компиляции. - PowerPoint PPT Presentation

Citation preview

Page 1: Лекция № 7

Лекция №Лекция №77

Управление памятьюСегментная, страничная и сегментно-страничная организация памяти.

Page 2: Лекция № 7

КомпиляторКомпилятор Программа или техническое средство,

выполняющее компиляцию. Машинная программа, используемая для

компиляции. Транслятор, выполняющий преобразование

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

Программа, переводящая текст программы на языке высокого уровня, в эквивалентную программу на машинном языке.

Программа, предназначенная для трансляции высокоуровневого языка в абсолютный код или, иногда, в язык ассемблера. Входной информацией для компилятора (исходный код) является описание алгоритма или программа на проблемно-ориентированном языке, а на выходе компилятора — эквивалентное описание алгоритма на машинно-ориентированном языке (объектный код).

Page 3: Лекция № 7

КомпиляторКомпилятор Большинство компиляторов переводит

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

Page 4: Лекция № 7

Компилятор компиляторовКомпилятор компиляторов Компилятор компиляторов —

программа, воспринимающая синтаксическое или семантическое описание языка программирования и генерирующая компилятор для этого языка. Синтаксис выражается в виде БНФ или её производной и должен удовлетворять правилам того метода синтаксического анализа, который будет использоваться в генерируемом компиляторе.

Page 5: Лекция № 7

Форма Бэкуса — НаураФорма Бэкуса — Наура

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

Page 6: Лекция № 7

Контекстно-свободная Контекстно-свободная грамматикаграмматика частный случай формальной

грамматики (тип 2 по иерархии Хомского), у которой левые части всех продукций являются нетерминалами. Смысл термина «контекстно-свободная» заключается в том, что возможность применить продукцию к нетерминалу, в отличие от общего случая грамматики Хомского, не зависит от контекста этого нетерминала.

Page 7: Лекция № 7

ПримерыПримеры Вложенные скобки

Терминалы: '(' и ')'; нетерминал: S; продукции: S→(S), S→ε; начальный нетерминал — S. Этой грамматикой задаётся язык вложенных скобок { (n)n | n≥0 }.

Целые числа

Терминалы: '+', '-', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9';

нетерминалы: <число>, <число без знака>, <последовательность цифр>, <ненулевая цифра>, <цифра>;

Продукции:

<число> → 0

<число> → +<число без знака>

<число> → -<число без знака>

<число> → <число без знака>

<число без знака> → <ненулевая цифра>

<число без знака> → <ненулевая цифра><последовательность цифр>

<последовательность цифр> → <цифра><последовательность цифр>

<последовательность цифр> → <цифра>

<цифра> → 0

<цифра> → <ненулевая цифра>

<ненулевая цифра> → 1

<ненулевая цифра> → 2

<ненулевая цифра> → 3

<ненулевая цифра> → 4

<ненулевая цифра> → 5

<ненулевая цифра> → 6

<ненулевая цифра> → 7

<ненулевая цифра> → 8

<ненулевая цифра> → 9

Page 8: Лекция № 7

ПримерыПримеры Арифметическое выражение

Терминалы: '+', '-', '*', '/', '(', ')', 'x' нетерминалы: <выражение>, <слагаемое>,

<множитель> продукции: <выражение> → <выражение> +

<слагаемое> <выражение> → <выражение> - <слагаемое> <выражение> → <слагаемое> <слагаемое> → <слагаемое> * <множитель> <слагаемое> → <слагаемое> / <множитель> <слагаемое> → <множитель> <множитель> → ( <выражение> ) <множитель> → x

Page 9: Лекция № 7

Таблицы компилятораТаблицы компилятора

Исходный текст, сохраненный для печати листинга

Символьная таблица с именами и атрибутами переменных

Все используемые константы, с ПТ Дерево грамматического разбора,

содержащие синтаксический анализ программы

Стек, для процедурных вызовов внутри компилятора

Page 10: Лекция № 7

ВАПВАП

Таблица кодировки символов

Исходный текст

Таблица констант

Дерево синтаксического

анализа

Стек вызовов

Page 11: Лекция № 7

СегментыСегменты Множество полностью

независимых адресных пространств

Содержит линейную последовательность адресов от 0 до некоторого максимума

Page 12: Лекция № 7

СравнениеСравнениеВопрос Страничная память Сегментация

Нужно ли программисту знать о том, что используется эта техника?

Нет Да

Сколько в системе линейных адресных пространств?

1 Много

Может ли суммарное адресное пространство превышать размеры физической памяти?

Да Да

Возможно ли разделение процедур и данных, а также раздельная защита для них?

Нет Да

Легко ли перемещаются таблицы с непостоянными размерами?

Нет Да

Облегчен ли совместный доступ пользователей к процедурам?

Нет Да

Зачем придумана эта техника? Что бы получить большое адресное пространство без дополнительных затрат на физическую память

Для возможности разбиения программ и данных на логически независимые адресные пространства, облегчение совместного доступа и защиты

Page 13: Лекция № 7

Сегментация с Сегментация с использованием странициспользованием страниц При большом размере сегментов

может быть невозможно хранить их в оперативной памяти целиком.

MULTICS 2^18, каждый из которых мог быть до 65536 (36 разрядных) слов длиной.

Page 14: Лекция № 7

СамплСампл1. По номеру сегмента находится

дескриптор сегмента.2. Проверяется, находится ли таблица

страница сегмента в памяти. Если таблица страниц в памяти, определяется ее расположение. Если нет – вызывается сегментное прерывание. При нарушении защиты происходит прерывание.

3. Изучается запись в таблице страниц для запрашиваемой виртуальной страницы. Если страница не находится в памяти, происходит страничное прерывание. Если она в памяти, из записи таблицы страниц извлекается адрес начала страницы в оперативной памяти.

4. К адресу начала страницы прибавляется смещение, что дает в результате адрес в оперативной памяти, где расположено нужное слово.

5. Чтение или сохранение.

Page 15: Лекция № 7

Intel PentiumIntel Pentium 16k независимых сегментов, каждый

до 1 млрд 32 разрядных слов. Локальная таблица дескрипторов (LDT) Глобальная таблица дескрипторов

(GDT) Каждый селектор (указывает на

дескриптор) представляет собой 16-разрядный номер.

Page 16: Лекция № 7

13 битов определяют номер записи в таблице дескрипторов, поэтому эти таблицы ограничены, каждая содержит 8К (2^13) сегментных дескрипторов.

1 бит указывает тип используемой таблицы дескрипторов LDT или GDT.

С учетом максимального размера сегмента - 4 Гбайта - каждая задача, при чисто сегментной организации виртуальной памяти, работает в виртуальном адресном пространстве в 64 Тбайта (4 Гбайта * 16К, где 16К=8К*2 т.к. LDT и GDT).

Page 17: Лекция № 7
Page 18: Лекция № 7