
- •Системное программное обеспечение Кошкин в. В.
- •Место программных средств в вычислительных системах
- •Состав по
- •Общие требования к программному обеспечению
- •Требования к проектируемому программному обеспечению
- •(2) Основные принципы проектирования программного обеспечения (по).
- •Механизмы выполнения программы
- •Последовательность выполнения программы. Основные положения.
- •2) Понятие процедур.
- •(3) Прерывания
- •(4) Процедура ввода/вывода.
- •Управление реальной памятью.
- •Управление виртуальной памятью.
- •Р абота с файлами.
- •Планирование заданий.
- •Распределение ресурсов
- •Защита пользователей.
- •Синхронизация процессов. (1) Синхронизация. Мониторы как инструмент синхронизации.
- •(2) Синхронизация. Реализация взаимного исключения. Семафоры.
- •Загрузчики.
- •Загрузчик, абсолютный загрузчик
- •Перемещающий загрузчик.
- •Управление процессами загрузки.
- •Связывающие загрузчики.
- •Динамическое связывание.
- •Макропроцессоры. (1) понятия о макропроцессорах.
- •(2 )Варианты построения макропроцессоров.
- •Компиляторы Основные функции компиляторов. Последовательность компиляции.
- •Свойства компиляторов, варианты построения.
- •Интерпретаторы.
- •Компиляторы в р-код.
- •Автоматизация процедуры компиляции.
- •Тестовое по. Основные принципы построения тестового по.
- •Основы методики тестирования.
- •Генерация тестовых последовательностей.
- •Вопросы для подготовки к экзаменам по Системному программному обеспечению
- •Объектный файл 1.Obj
- •Выполняемый файл 1.Exe
- •Если нужны изменения
Свойства компиляторов, варианты построения.
Существует несколько факторов, которые должны учитываться при выборе одно или многопроходных компиляторов. Если важна скорость, то однопроходные предпочтительнее. Это относится к просчету различных вариантов заданий и их отладке. Ускорение процессов компиляции при множестве запусков может дать в целом выигрыш во времени. Если же скомпилированные программные модули используются многократно без изменений, тогда предпочтительнее использовать многопроходные компиляторы, поскольку они приведут к оптимальному объему программы. Кроме того, многопроходные компиляторы более рационально используют ОЗУ и случае ее дефицита предпочтительнее. При этом, с увеличением числа проходов требуемые ресурсы снижаются. В пользу многопроходных компиляторов и говорит тот факт, что отладка программы более проста и может быть распараллелена по проходам.
Интерпретаторы.
Интерпретаторы относят к классу компиляторов, поскольку они решают туже задачу — преобразование текста программы в коды и выполнение этой программы. Основное отличие интерпретаторов в том, что они непосредственно исполняют написанную программу, не преобразуя ее в чисто машинные коды. Интерпретатор конечно же формирует машинные коды из исходного текста программы, но не для всего текста сразу, а как бы фрагментами: анализирует текст строки, преобразует, исполняет, вновь следующую строку по тому же алгоритму. Интерпретаторы подобно компиляторам выполняют трансляцию фрагмента исходной программы в свое внутреннее состояние. Одно из таких состояний — последовательность четверок или исходная форма записи программы. Это промежуточное состояние, из которого получаются машинные коды. После трансляции интерпретатор выполняет заданные операции. При этом на фазе выполнения интерпретатор можно рассматривать как набор подпрограмм. Вызов этих подпрограмм и осуществляется под управлением внешней оттраслированной программы (похоже на макроассемблер). Трансляция исходной программы в такой набор подпрограмм проще и быстрее чем компиляция, но процедура выполнения таких подпрограмм гораздо медленнее, чем массива машинных кодов. Отсюда интерпретатор быстро преобразует, но медленно выполняет. Определенные преимущества интерпретатора над компиляторами в средствах отладки программ. Интерпретатор обычно имеет таблицу идентификаторов (номера строк исходной программы). Во время трассировки по этим номерам легко проследить последовательность выполнения. Отсюда интерпретаторы имеют преимущества при обучении. Большинство языков программирования имеют как программы интерпретаторы, так и компиляторы. Отсюда, на различных этапах работы возможно пользоваться различными программами. В тоже время режим интерпретации может иметь особенности. При динамическом переопределении типов данных, имен удобнее использовать интерпретаторы.
Компиляторы в р-код.
Основные идеи, положенные в основу интерпретаторов и компиляторов, Р-код (псевдокод) весьма похожи. В обоих случаях исходная программа преобразуется во внутреннее представление, которое затем выполняется. Для компиляторов Р-кода внутреннее представление это некий машинный язык гипотетической ЭВМ. При этом компилятор формирует объектную программу на Р-коде. Эта объектная программа вместе с интерпретатором Р-кода выполняется, т. е. реализуются те же процедуры, что и при компиляции. Главная идея применения Р-кода в том, что программное обеспечение легко переносится с одной машины на другую. Компилятору не нужны машинные коды для разных ЭВМ. Объектная программа на псевдокоде должна выполняться на любой ЭВМ с интерпретатором Р-кода. При этом сама объектная программа часто намного короче, чем программа на машинных языках. Если же возникают проблемы со временем выполнения программ, то Р-коды не оптимальны, машинные коды самые быстрые. Отсюда и применение таких компиляторов — аналогично интерпретаторам.