Министерство образования и науки Российской Федерации

Федеральное агентство по образованию

Рыбинская государственная авиационная технологическая академия им.

Факультет радиоэлектроники и информатики

Кафедра        ″Вычислительные системы″

″УТВЕРЖДАЮ″

Декан факультета РЭИ

                                                                       __________

РАБОЧАЯ  ПРОГРАММА


По дисциплине        ″Системное программное обеспечение

для направления 230100 – Информатика и вычислительная техника

для специальности  230101 – Вычислительные машины, комплексы,

системы и сети

Распределение часов

Форма обучения

Очная

Очно-заочная

Заочная

на базе ПСО

на базе СПО

на базе ПСО

на базе СПО

Лекции

54

6

Практические занятия

Лабораторные занятия

36

8

Индивидуальные занятия

7

3

Самостоятельная работа

в т. ч. курсовая работа

80

156

Всего часов

170

170

Форма контроля

экзамен

экзамен


Программу составил к. т.н. профессор _____________________

НЕ нашли? Не то? Что вы ищете?

Рабочая  программа  рассмотрена  на  заседании  кафедры  ″Вычислительные системы″  23  ноября  2005 г.

Заведующий кафедрой к. т.н. профессор ____________________

Согласовано Декан ФЗО _________________________________

Рыбинск 2005

Настоящая программа составлена в соответствии с Государственным стандартом высшего профессионального образования и Учебным планом подготовки специалиста по направлению 220100 (230101).

ЦЕЛИ И ЗАДАЧИ ИЗУЧЕНИЯ ДИСЦИПЛИНЫ


Цель преподавания дисциплины – изучение структуры системного программного обеспечения и его назначения в функционировании современных вычислительных комплексов.

Задачи изучения дисциплины – освоение методов управления задачами (процессами), памятью, вводом-выводом, приобретений теоретических знаний и практических навыков по организации трансляторов на основе формальных языков и грамматик.

В результате изучения дисциплины студент должен знать структуру и функции основных компонентов трансляторов, уметь провести лексический, синтаксический и семантический анализ исходной программы, помнить основные этапы перехода от программы на языке высокого уровня к размещению в памяти для исполнения программы в объектных кодах.

Рекомендации по изучению дисциплины – изучение дисциплины основывается на знаниях и практических навыках, полученных студентами при изучении дисциплин: «Информатика», «Программирование на языках высокого уровня», «Программирование на Ассемблере», «Операционные системы».

1. СОДЕРЖАНИЕ ДИСЦИПЛИНЫ


Введение (4 часа)

Предмет и содержание курса, его место в учебном плане, взаимосвязь со смежными дисциплинами.

Место системного программного обеспечения (СПО) в компьютерной системе, описание основных составных частей СПО, включая операционные системы, сервисные системы, инструментальные системы, системы технического обслуживания. Пользовательский интерфейс операционной среды, программный интерфейс и особенности их подключения. Программирование в операционной среде. Элементы повышения эффективности использования ресурсов вычислительной системы: оптимальное управление задачами, рациональное управление памятью, управление вводом-выводом, управление файлами (файловая система). Пример современной операционной системы.

Формальные языки и грамматики (16 часов). Языки и цепочки символов. Способы задания языков (4 часа).

Понятие языка. Формальное определение языка. Синтаксис и семантика языка. Классификация языков. Языки низкого уровня – ассемблеры. Макроязыки.

Грамматики и распознавачасов)

Формальное определение грамматик. Бэкуса-Наура форма (БНФ). Принцип рекурсии в правилах грамматики. Описание в БНФ программы на языке Паскаль. Распознаватели и преобразователи. Общая схема распознавателя. Виды распознавателей. Конечный и магазинный автоматы. Построение автомата по заданной грамматике. Классификация грамматик. Типы грамматик. Четыре типа грамматик по Хомскому.

Вывод цепочек. Сентенциальная форма (6 часов)

Определение вывода. Цепочки вывода. Сентенциальная форма грамматики. Левосторонний и правосторонний выводы. Дерево вывода. Методы построения  дерева  вывода.  Проверка  однозначности  и  эквивалентности  грамматик.

Система программирования. Понятие и структура системы программирования. Мобильность программного обеспечения (2 часа)

Формула системы программирования. Описание формулы. Трансляторы, генератор кода загрузки. Функции транслятора, генератора кода и загрузчика. Общая схема работы транслятора. Лексический, синтаксический и семантический анализаторы как составные части компилятора.

Лексический анализ (7 часов) Лексический анализатор (сканер) (2 часа)

Назначение сканера, принципы построения сканеров, особенности работы сканера.

Регулярные языки и грамматики (3 часа)

Регулярные и автоматные грамматики. Конечные автоматы. Минимизация конечных автоматов. Свойства регулярных языков.

Построение лексических анализаторов (2 часа)

Три способа задания регулярных языков. Построение конечного автомата на основе левосторонней грамматики.

Синтаксический анализ (8 часов) Основные принципы работы синтаксических анализаторов (2 часа)

Назначение  синтаксического  анализатора.  Автоматы  с  магазинной  памятью.

Методы синтаксического анализа (6 часов)

Метод операторного предшествования – метод восходящего разбора. Грамматики простого предшествования. Сущность метода операторного предшествования.

Метод рекурсивного спуска – метод нисходящего разбора. Устранение левой рекурсии в методе рекурсивного спуска. Проблема альтернативного выбора.

Генерация кода (2 часа)

Назначение семантического анализа как этапа подготовки к генерации кода. Общие принципы генерации кода.

Трансляторы. Процесс трансляции программ (6 часов) Особенности организации эффективных программ (2 часа) Машинно-независимые особенности процесса трансляции на примере компилятора (2 часа)

Основные причины машинной зависимости компиляторов. Промежуточная форма представления программ. Машинно-зависимая оптимизация кода. Оптимизация линейных участков программ.

Машинно-независимые особенности компилятор (2 часа)

Статическое и динамическое распределение памяти, виды переменных. Машинно-независимая оптимизация кода.

Структура компиляторов и интерпретаторов (2 часа)

Варианты построения компиляторов.

Однопроходные компиляторы. Особенности организации многопроходных компиляторов. Интерпретаторы.

Загрузчики (7 часов)

Функции загрузчика. Разновидности загрузчиков. Семь метод адресации команд. Структура объектного файла. Функциональное описание загрузчиков. Статическое и динамическое связывание программ. Настраивающий и динамический загрузчики. Оверлейная структура программы. Загрузка со связывающим загрузчиком. Подключение библиотек. Загрузка с редактором связей.

2. ПЕРЕЧЕНЬ ЛАБОРАТОРНЫХ РАБОТ (36 часов)


Исследование интерфейса пользовачаса) Изучение БНФ на примере языка Паскаль (4 часа) Лексический анализатор (4 часа) Синтаксический анализатор (8 часов) Изучение работы с главной загрузочной записью жесткого диска (8 часов) Управление программами (8 часов)

3. ПЕРЕЧЕНЬ ТЕМ КУРСОВОЙ РАБОТЫ


Еженедельник (Органайзер). Многофункциональный таймер-будильник. Калькулятор для научного работника. Калькулятор для инженерных расчетов.

4. СПИСОК ЛИТЕРАТУРЫ И ПЕРЕЧЕНЬ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ


Основной

Системное программное обеспечение: Учебник для вузов/ – СПб.: Питер, 2003. – 396 с.: ил. , , Филатов программирование. Основы построения трансляторов./ Учебное пособие для высших и средних учебных заведений. – 2-е изд. – СПб.: Корона принт, 2004. – 256 с. Фельдман программирование. Полный курс лекций с теоретическими материалами и лабораторными работами, 2003. – 512 с. Пинаев методы описания языков программирования и построения трансляторов: Конспект лекций/ РГАТА. – Рыбинск, 1995. – 84 с.

5. МЕТОДИЧЕСКИЕ УКАЗАНИЯ СТУДЕНТАМ ПО ИЗУЧЕНИЮ ДИСЦИПЛИНЫ


5.1. МЕТОДИЧЕСКИЕ УКАЗАНИЯ ПО ИЗУЧЕНИЮ ТЕОРЕТИЧЕСКОГО КУРСА

Студент должен активно участвовать в работе при проведении лекционных занятий, просматривать перед лекцией предыдущий материал, осуществлять поиск дополнительной литературы по данной дисциплине.

5.2. МЕТОДИЧЕСКИЕ УКАЗАНИЯ ПО ВЫПОЛНЕНИЮ ЛАБОРАТОРНЫХ РАБОТ

Выполнение лабораторных работ должно проводиться в соответствии с методическими  материалами  к  лабораторным  работам  и  заданием  преподавателя.

6. СПИСОК ЭКЗАМЕНАЦИОННЫХ (ЗАЧЕТНЫХ) ВОПРОСОВ


Структура СПО. Роль сервисных систем. Разновидности интерфейсов и схемы их подключения. Структура систем программирования. Описание грамматики с помощью БНФ. Определение рекурсии. Пример построения грамматики в БНФ для языка Паскаль. Дерево грамматического разбора. Лексический анализатор (сканер) и принципы его работы. Синтаксический анализ. Общие положения. Грамматики простого предшествования. Сущность метода операторного предшествования. Метод рекурсивного спуска при грамматическом разборе. Генерация кода. Особенности организации эффективных программ. Два принципа. Промежуточная формула представления программ и необходимость применения ее в процессе трансляции. Машинно-зависимая оптимизация кода. Статическое распределение памяти при компилировании программ. Динамическое распределение памяти при компилировании программ. Машинно-независимая оптимизация кода. Варианты построения компиляторов. Интерпретаторы. Разновидности загрузчиков. Классификация методов адресации машинных команд. Непосредственная, прямая и косвенная адресация. Виды адресации с использованием регистров. Стековая адресация. Структура объектного файла. Абсолютный загрузчик. Два способа перемещения программ. Связывание программ. Оверлейная структура программы. Описание с помощью команд загрузчика. Функции менеджера оверлея при оверлейной структуре программ. Загрузка со связывающим загрузчиком. Загрузка с редактором связей.

7. КОНТРОЛЬНЫЕ ВОПРОСЫ


Какие интерфейсы могут быть? Чем отличаются по существу записи: readln и <readln>? Какая ситуация описывается выражением R > S? Какая ситуация описывается выражением R < S?

Где используется следующая конструкция                        ?

Что является результатом применения метода операторного предшествования? Как можно исключить левую рекурсию из правил грамматики? Что такое спецификатор лексемы? Чем оценивается эффективность программы? Что является основой промежуточной формы представления программ? Что такое линейный участок программы? При  какой  ситуации  не  работает  статическое  распределение  памяти? Какова структура области инициализации? Где хранятся записи PREV? Представьте вариант четырехпроходного компилятора. Представьте вариант трехпроходного компилятора. Представьте вариант двухпроходного компилятора. Какой из видов трансляции более эффективен с точки зрения экономии ОП? Что такое абсолютный загрузчик? Какой вид адресации описывается выражением EA = (R)? Какой вид адресации описывается выражением EA = (R) + A? Какой вид адресации описывается выражением EA = (A)? Какой вид адресации описывается выражением EA = R? Какой вид адресации описывается выражением EA = (A) + (R)? Какие записи обязательно используются в структуре объектного файла? Каково содержание записи-определения? Когда обязательно должна использоваться запись-ссылка? Когда используется запись-модификатор? Что такое управляющая секция? Используется ли связывающий загрузчик при отсутствии управляющих секций? Что означает запись SEGMENT S5(F, H)? В каком случае может использоваться запись PARENTS3

  SEGMENT S5(FK)

  SEGMENT S7(L)?

Что может входить в корневой сегмент оверлейной программы? Как передается управление в оверлейной программе на сегмент, находящийся в ОП? Как передается управление на управляющую секцию, не находящуюся в ОП?