1 / 18

Лекция № 7

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

desma
Download Presentation

Лекция № 7

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

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

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

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

  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

  8. Примеры • Арифметическое выражение • Терминалы: '+', '-', '*', '/', '(', ')', 'x' • нетерминалы: <выражение>, <слагаемое>, <множитель> • продукции: • <выражение> → <выражение> + <слагаемое> • <выражение> → <выражение> - <слагаемое> • <выражение> → <слагаемое> • <слагаемое> → <слагаемое> * <множитель> • <слагаемое> → <слагаемое> / <множитель> • <слагаемое> → <множитель> • <множитель> → ( <выражение> ) • <множитель> → x

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

  10. ВАП Стек вызовов Дерево синтаксического анализа Таблица констант Исходный текст Таблица кодировки символов

  11. Сегменты • Множество полностью независимых адресных пространств • Содержит линейную последовательность адресов от 0 до некоторого максимума

  12. Сравнение

  13. Сегментация с использованием страниц • При большом размере сегментов может быть невозможно хранить их в оперативной памяти целиком. • MULTICS 2^18, каждый из которых мог быть до 65536 (36 разрядных) слов длиной.

  14. Сампл • По номеру сегмента находится дескриптор сегмента. • Проверяется, находится ли таблица страница сегмента в памяти. Если таблица страниц в памяти, определяется ее расположение. Если нет – вызывается сегментное прерывание. При нарушении защиты происходит прерывание. • Изучается запись в таблице страниц для запрашиваемой виртуальной страницы. Если страница не находится в памяти, происходит страничное прерывание. Если она в памяти, из записи таблицы страниц извлекается адрес начала страницы в оперативной памяти. • К адресу начала страницы прибавляется смещение, что дает в результате адрес в оперативной памяти, где расположено нужное слово. • Чтение или сохранение.

  15. Intel Pentium • 16k независимых сегментов, каждый до 1 млрд 32 разрядных слов. • Локальная таблица дескрипторов (LDT) • Глобальная таблица дескрипторов (GDT) • Каждый селектор (указывает на дескриптор) представляет собой 16-разрядный номер.

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

More Related