- •Лексический анализатор, назначение, проблема определения границ лексем
- •Простейшие методы построения таблиц идентификаторов
- •Структура и основные компоненты вычислительной системы. Регистры, система прерываний.
- •Какие цели преследуется при организации таблицы символов?
- •Назначение и принципы организации таблиц идентификаторов. Хэш-адресация с использованием метода цепочек. Комбинированные способы построения таблиц идентификаторов.
- •Какими характеристиками могут обладать лексические элементы исходной программы? Какие характеристики являются обязательными?
- •Процессы и потоки в спо.
- •Построение таблиц идентификаторов по методу бинарного дерева.
- •Вопросы планирования процессов в спо
- •Назначение лексического анализатора
- •Назначение и принципы организации таблиц идентификаторов. Хэш- функции и хэш-адресация. Хэш- адресация с рехэшированием.
- •Проблема определения границ лексем
- •Мультипрограммный режим работы вычислительной системы
- •Преимущества и недостатки древовидной организации таблиц идентификаторов
- •Классификации ос. Основные функции ос
- •В чем заключается алгоритм логарифмического поиска? Какие преимущества он дает по сравнению с простым перебором и какие он имеет недостатки
- •Однозадачные ос. Подсистемы ms dos, общая схема работы
- •Построение лексических анализаторов (сканеров)
- •Многозадачные ос. Архитектура многозадачных ос
- •Общий алгоритм функционирования лексического анализатора
- •Ядро многозадачных ос
- •Проблема возникновения коллизий при формировании таблиц идентификаторов.
Проблема определения границ лексем
См. билет №1.
Мультипрограммный режим работы вычислительной системы
Режим работы ПО и аппаратуры, обеспечивающий одновременную обработку или одновременное выполнение нескольких программ называется мультипрограммным режимом.
Изначально мультипрограммирование появилось в целях максимальной загрузки ЦП, поскольку когда-то это устройство было самым дорогостоящим. На сегодняшний день ЦП, пожалуй, одно из самых дешевых устройств.
Давайте посмотрим, что нужно от аппаратуры вычислительной системы для поддержания мультипрограммирования. Для начала перечислим те проблемы, которые могут возникнуть, начиная с того момента, когда помимо ОС и одной программы пользователя появилась еще одна программа пользователя.
Итак, первая проблема — проблема защиты памяти. То есть в вычислительной системе должен быть реализован на аппаратном уровне механизм, обеспечивающий защиту адресного пространства программ от несанкционированного доступа других программ, проверять корректность этого доступа.
Вторая проблема. Пусть, например, имеет место в системе устройство печати. И есть два процесса, сначала один процесс обращается к устройству вывода — напечатать строку из какой-то таблицы, которая должна быть выведена на печать, а другой процесс начинает печатать другой документ и тоже обращается к устройству печати. В итоге получается документ, представляющий из себя набор бесполезных строк. Другой пример — таблица приписки в ОС заполняется программно, предположим, что два процесса приписали себе одинаковые страницы памяти — в результате получается неразбериха.
Проблема же заключается в том, что в обоих примерах пользователю были доступны команды управления устройствами (в первом случае — ВУ, во втором — ОЗУ). Организовать процесс мультипрограммирования в таких условиях будет тяжело, так как какие-либо программы могут оказаться несогласованными, а это в свою очередь приведет к краху системы.
Итак, вторым условием существования мультипрограммирования — наличие привилегированного режим в системе. Это такой режим, в котором программе доступны все возможные команды ЦП. Соответственно, непривилегированный (пользовательский или математический) режим — это такой режим, в котором программе доступна лишь часть команд ЦП, и программы пользователя не смогут обратиться к некоторым функциям напрямую.
Обычно в привилегированном режиме работает ОС. Она же является посредником между программами и устройствами. То есть программа формирует запрос, где параметрами служат конкретные описания того, что следует сделать. В частности, обращение к внешним устройствам проходит по данной схеме — через обращение к ОС.
Таким образом, вывод на печать является не прямым обращением к устройству печати, а является обращением к ОС с заказом напечатать некоторую строчку. ОС принимает заказ и строку и буферизует информацию в некоторых своих программных буферах. То есть все, что мы пожелаем напечатать, будет аккумулировано в буферах ОС. Распечатка этого буфера будет происходить только когда будет ясно, что заказов на печать от конкретной задачи больше не поступит. То есть печать производится последовательно. Это еще один элемент связи между аппаратным и программным обеспечением.
Третья проблема. Имеется мультипрограммный режим. И в одной из программ появилась ошибка — программа зациклилась. Система повисла, ни одна программа не может работать. Помощь может оказать некоторое средство, которое будет периодически прерывать выполнение программ. Как минимум, это должно быть прерывание по таймеру — чтобы раз в некоторый диапазон времени управление передавалось в ОС. А далее уже должна реагировать сама ОС. А вот наличие такого прерывание и есть третье необходимое условие организации мультипрограммного режима.
При наличии прерывания по таймеру можно отказаться от наличия асинхронной системы прерываний.
Итак, мы перечислили три условия на аппаратуру вычислительной системы, которые должны быть выполнены для организации мультипрограммного режима работы.
ОС |
1ая программа |
2ая программа |
... |
Nая программа |
Такой механизм подкачки достаточно эффективен, он позволяет в ОЗУ от каждой из выполняемых программ держать незначительную часть. А когда в обработке находится большое число программ, то всегда при подкачке одной программы может выполняться другая.
С одной стороны подкачка поддерживается аппаратурой (подсчет “активности” страниц памяти сложно организовать программно), с другой стороны — все реальное управление программно.