
- •1) Технологии проектирования операционных систем (микроядерные, монолитные ос, технология клиент - сервер)
- •2) Объектно-ориентированный подход в проектировании операционных систем.
- •3) Основные принципы проектирования операционных систем
- •4) Модульное программирование ос. Привилегированные, непривилегированные, рентабельные модули.
- •5) Управление процессами в многозадачных средах. Контекст и дескриптор процесса.
- •Состояния процессов
- •6) Управление процессами в многозадачных средах.
- •7. Методы синхронизации параллельно выполняющихся процессов. Взаимные исключения. Семафоры
- •8. Методы синхронизации параллельно выполняющихся процессов. Блокирующие переменные. Мониторы Хоара.
- •9. Управление процессами в многозадачных средах.
- •10) Логическая организация файловой системы. Файлы прямого, последовательного доступа, индексные файлы.
- •11) Физическая организация файлов на диске.
- •13) Файловая система ext. Особенности ее реализации.
- •14 Типы файловых систем
- •15) Общая модель современной файловой системы.
- •16) Методы защиты данных в ос unix.
- •17) Странично-сегментное управление памятью.
- •18) Виртуальные ресурсы. Виртуальная память. Свопинг.
- •19) Обеспечение эффективности обработки данных. Иерархия зу. Кэширование. Буферизация данных.
- •20) Управление устройствами ввода/вывода.
- •Прерывания и способы их обработки
- •Драйверы устройств
- •21) Управление устройствами ввода/вывода. Спулинг.
- •22) Компиляторы. Лексический анализатор. Дескрипторный текст программы.
- •23) Компиляторы. Синтаксический анализатор. Методы построения синтаксического дерева вывода.
- •24) Компиляторы. Семантический анализатор. Генерация, оптимизация кода программы.
- •25) Распределение оп при выполнении программ.
23) Компиляторы. Синтаксический анализатор. Методы построения синтаксического дерева вывода.
Компилятором называется системная программа (транслятор), выполняющая преобразование программы, написанной на одном алгоритмическом языке, в программу на языке, близком к машинному, и в определенном смысле эквивалентную первой. Другой разновидностью трансляторов являются интерпретаторы, осуществляющие анализ и перевод текста программы в машинный код пошагово, непосредственно перед выполнением, и сразу же исполняющие получившийся машинный код.
Процесс компиляции состоит из следующих этапов: 1.)Лексический анализ - на этом этапе последовательность символов исходного файла преобразуется в последовательность лексем. 2.)Синтаксический анализ - последовательность лексем преобразуется в семантическое дерево. 3.)Семантический анализ, включающий: оптимизацию - выполняется удаление лишних конструкций и упрощение семантического дерева, генерация кода - семантическое дерево преобразуется в целевой язык.
Синтаксический анализатор - это программа или часть программы, выполняющая синтаксический анализ. Синтаксический анализ (па́рсинг) - это процесс анализа входной последовательности символов, с целью разбора грамматической структуры в соответствии с заданной формальной грамматикой.
Основная задача синтаксического анализа - разбор структуры программы. Как правило, под структурой понимается дерево, соответствующее разбору в контекстно-свободной грамматике языка и хорошо подходящее для дальнейшей обработки. Обычно синтаксический анализ происходит в два шага: на первом идентифицируются осмысленные токены (выполняется лексический анализ), на втором создаётся дерево разбора.
Результатом синтаксического анализа является синтаксическое дерево со ссылками на таблицы объектов. В процессе синтаксического анализа также обнаруживаются ошибки, связанные со структурой программы.
Только при отсутствии ошибок возможна работа последующих модулей компилятора.
Методы построения дерева вывода разбиваются на два больших класса ВОСХОДЯЩИЕ и НИСХОДЯЩИЕ - в соответствии с порядком построения дерева pазбоpа. НИСХОДЯЩИЕ(методы свеpху-вниз) начинаются с коpня деpева и пытаются так его наращивать, чтобы последующие узлы дерева соответствовали синтаксису анализируемого выражения. ВОСХОДЯЩИЕ (методы снизу-вверх) начинают с элементов предложения(с "листьев") и отыскивают в грамматике какому понятию они соответствуют, т.е. определяют родительскую вершину для этих элементов, и т.д. пока не приходят к корню дерева. В современных компиляторах применяются как нисходящие, так и восходящие методы.
Кроме этого, алгоритмы синтаксического разбора делят на синтаксически-ориентированные и синтаксически неориентированные. Синтаксически-ориентированные алгоритмы являются универсальными для некоторого семейства языков и переход к распознаванию предложений другого языка выполняется путем смены грамматики, т.е. грамматика выполняет роль некоей "программы" распознавания предложений языка. Главным достоинством этого класса алгоритмов является их универсальность, а недостатком - наличие избыточности вследствие ориентации на семейство языков.
Синтаксически-неоpиентиpованные алгоритмы отличаются тем, что порядок действий в них определяется правилами грамматики данного конкретного языка. Достоинством этого класса алгоритмов является отсутствие избыточности, а недостатком - невозможность перенастройки на распознавание предложений другого языка.