Лекция № 7

Post on 10-Jan-2016

53 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Терминалы: '(' и ')'; нетерминал: 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

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

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

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

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

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

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

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

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

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

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

ВАПВАП

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

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

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

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

анализа

Стек вызовов

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

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

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

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

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

Нет Да

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

1 Много

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

Да Да

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

Нет Да

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

Нет Да

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

Нет Да

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

top related