Download - Лекция № 7
![Page 1: Лекция № 7](https://reader035.vdocuments.pub/reader035/viewer/2022070406/56814297550346895daec6e9/html5/thumbnails/1.jpg)
Лекция №Лекция №77
Управление памятьюСегментная, страничная и сегментно-страничная организация памяти.
![Page 2: Лекция № 7](https://reader035.vdocuments.pub/reader035/viewer/2022070406/56814297550346895daec6e9/html5/thumbnails/2.jpg)
КомпиляторКомпилятор Программа или техническое средство,
выполняющее компиляцию. Машинная программа, используемая для
компиляции. Транслятор, выполняющий преобразование
программы, составленной на исходном языке, в объектный модуль.
Программа, переводящая текст программы на языке высокого уровня, в эквивалентную программу на машинном языке.
Программа, предназначенная для трансляции высокоуровневого языка в абсолютный код или, иногда, в язык ассемблера. Входной информацией для компилятора (исходный код) является описание алгоритма или программа на проблемно-ориентированном языке, а на выходе компилятора — эквивалентное описание алгоритма на машинно-ориентированном языке (объектный код).
![Page 3: Лекция № 7](https://reader035.vdocuments.pub/reader035/viewer/2022070406/56814297550346895daec6e9/html5/thumbnails/3.jpg)
КомпиляторКомпилятор Большинство компиляторов переводит
программу с некоторого высокоуровневого языка программирования в машинный код, который может быть непосредственно выполнен центральным процессором. Как правило, этот код также ориентирован на исполнение в среде конкретной операционной системы, поскольку использует предоставляемые ею возможности (системные вызовы, библиотеки функций). Архитектура (набор программно-аппаратных средств), для которой производится компиляция, называется целевой машиной.
![Page 4: Лекция № 7](https://reader035.vdocuments.pub/reader035/viewer/2022070406/56814297550346895daec6e9/html5/thumbnails/4.jpg)
Компилятор компиляторовКомпилятор компиляторов Компилятор компиляторов —
программа, воспринимающая синтаксическое или семантическое описание языка программирования и генерирующая компилятор для этого языка. Синтаксис выражается в виде БНФ или её производной и должен удовлетворять правилам того метода синтаксического анализа, который будет использоваться в генерируемом компиляторе.
![Page 5: Лекция № 7](https://reader035.vdocuments.pub/reader035/viewer/2022070406/56814297550346895daec6e9/html5/thumbnails/5.jpg)
Форма Бэкуса — НаураФорма Бэкуса — Наура
Формальная система описания синтаксиса, в которой одни синтаксические категории последовательно определяются через другие категории. БНФ используется для описания контекстно-свободных формальных грамматик.
![Page 6: Лекция № 7](https://reader035.vdocuments.pub/reader035/viewer/2022070406/56814297550346895daec6e9/html5/thumbnails/6.jpg)
Контекстно-свободная Контекстно-свободная грамматикаграмматика частный случай формальной
грамматики (тип 2 по иерархии Хомского), у которой левые части всех продукций являются нетерминалами. Смысл термина «контекстно-свободная» заключается в том, что возможность применить продукцию к нетерминалу, в отличие от общего случая грамматики Хомского, не зависит от контекста этого нетерминала.
![Page 7: Лекция № 7](https://reader035.vdocuments.pub/reader035/viewer/2022070406/56814297550346895daec6e9/html5/thumbnails/7.jpg)
ПримерыПримеры Вложенные скобки
Терминалы: '(' и ')'; нетерминал: 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](https://reader035.vdocuments.pub/reader035/viewer/2022070406/56814297550346895daec6e9/html5/thumbnails/8.jpg)
ПримерыПримеры Арифметическое выражение
Терминалы: '+', '-', '*', '/', '(', ')', 'x' нетерминалы: <выражение>, <слагаемое>,
<множитель> продукции: <выражение> → <выражение> +
<слагаемое> <выражение> → <выражение> - <слагаемое> <выражение> → <слагаемое> <слагаемое> → <слагаемое> * <множитель> <слагаемое> → <слагаемое> / <множитель> <слагаемое> → <множитель> <множитель> → ( <выражение> ) <множитель> → x
![Page 9: Лекция № 7](https://reader035.vdocuments.pub/reader035/viewer/2022070406/56814297550346895daec6e9/html5/thumbnails/9.jpg)
Таблицы компилятораТаблицы компилятора
Исходный текст, сохраненный для печати листинга
Символьная таблица с именами и атрибутами переменных
Все используемые константы, с ПТ Дерево грамматического разбора,
содержащие синтаксический анализ программы
Стек, для процедурных вызовов внутри компилятора
![Page 10: Лекция № 7](https://reader035.vdocuments.pub/reader035/viewer/2022070406/56814297550346895daec6e9/html5/thumbnails/10.jpg)
ВАПВАП
Таблица кодировки символов
Исходный текст
Таблица констант
Дерево синтаксического
анализа
Стек вызовов
![Page 11: Лекция № 7](https://reader035.vdocuments.pub/reader035/viewer/2022070406/56814297550346895daec6e9/html5/thumbnails/11.jpg)
СегментыСегменты Множество полностью
независимых адресных пространств
Содержит линейную последовательность адресов от 0 до некоторого максимума
![Page 12: Лекция № 7](https://reader035.vdocuments.pub/reader035/viewer/2022070406/56814297550346895daec6e9/html5/thumbnails/12.jpg)
СравнениеСравнениеВопрос Страничная память Сегментация
Нужно ли программисту знать о том, что используется эта техника?
Нет Да
Сколько в системе линейных адресных пространств?
1 Много
Может ли суммарное адресное пространство превышать размеры физической памяти?
Да Да
Возможно ли разделение процедур и данных, а также раздельная защита для них?
Нет Да
Легко ли перемещаются таблицы с непостоянными размерами?
Нет Да
Облегчен ли совместный доступ пользователей к процедурам?
Нет Да
Зачем придумана эта техника? Что бы получить большое адресное пространство без дополнительных затрат на физическую память
Для возможности разбиения программ и данных на логически независимые адресные пространства, облегчение совместного доступа и защиты
![Page 13: Лекция № 7](https://reader035.vdocuments.pub/reader035/viewer/2022070406/56814297550346895daec6e9/html5/thumbnails/13.jpg)
Сегментация с Сегментация с использованием странициспользованием страниц При большом размере сегментов
может быть невозможно хранить их в оперативной памяти целиком.
MULTICS 2^18, каждый из которых мог быть до 65536 (36 разрядных) слов длиной.
![Page 14: Лекция № 7](https://reader035.vdocuments.pub/reader035/viewer/2022070406/56814297550346895daec6e9/html5/thumbnails/14.jpg)
СамплСампл1. По номеру сегмента находится
дескриптор сегмента.2. Проверяется, находится ли таблица
страница сегмента в памяти. Если таблица страниц в памяти, определяется ее расположение. Если нет – вызывается сегментное прерывание. При нарушении защиты происходит прерывание.
3. Изучается запись в таблице страниц для запрашиваемой виртуальной страницы. Если страница не находится в памяти, происходит страничное прерывание. Если она в памяти, из записи таблицы страниц извлекается адрес начала страницы в оперативной памяти.
4. К адресу начала страницы прибавляется смещение, что дает в результате адрес в оперативной памяти, где расположено нужное слово.
5. Чтение или сохранение.
![Page 15: Лекция № 7](https://reader035.vdocuments.pub/reader035/viewer/2022070406/56814297550346895daec6e9/html5/thumbnails/15.jpg)
Intel PentiumIntel Pentium 16k независимых сегментов, каждый
до 1 млрд 32 разрядных слов. Локальная таблица дескрипторов (LDT) Глобальная таблица дескрипторов
(GDT) Каждый селектор (указывает на
дескриптор) представляет собой 16-разрядный номер.
![Page 16: Лекция № 7](https://reader035.vdocuments.pub/reader035/viewer/2022070406/56814297550346895daec6e9/html5/thumbnails/16.jpg)
13 битов определяют номер записи в таблице дескрипторов, поэтому эти таблицы ограничены, каждая содержит 8К (2^13) сегментных дескрипторов.
1 бит указывает тип используемой таблицы дескрипторов LDT или GDT.
С учетом максимального размера сегмента - 4 Гбайта - каждая задача, при чисто сегментной организации виртуальной памяти, работает в виртуальном адресном пространстве в 64 Тбайта (4 Гбайта * 16К, где 16К=8К*2 т.к. LDT и GDT).
![Page 17: Лекция № 7](https://reader035.vdocuments.pub/reader035/viewer/2022070406/56814297550346895daec6e9/html5/thumbnails/17.jpg)
![Page 18: Лекция № 7](https://reader035.vdocuments.pub/reader035/viewer/2022070406/56814297550346895daec6e9/html5/thumbnails/18.jpg)