Кафедра К3
Прикладная математика, информатика
и вычислительная техника
Системное программное обеспечение
Преподаватель: Чернышов Александр Викторович
Направление подготовки: 654600 «Информатика и вычислительная техника»
Специальность: 230101 (220100) «Вычислительные машины, комплексы, системы и сети»
Семестры: 6, 7
Вид итогового контроля:
зачет — 6 семестр
экзамен — 7 семестр
курсовая работа — 7 семестр
Содержание курса:
-
Введение. Предмет и задачи СПО
- Понятие СПО.
- Соотношение СПО и операционной системы.
- Функции ОС, используемые в СПО и дополняемые СПО: пользовательский интерфейс операционной среды, управление задачами, управление памятью, управление вводом-выводом, управление памятью.
-
Пример ОС и её СПО
- ОС UNIX и её разновидности: Linux, FreeBSD.
- Основные принципы построения.
- Стандарт POSIX.
- Мобильность программного обеспечения.
- Базовые команды UNIX/Linux.
- Основные принципы решения сложных задач.
- Фильтры.
- Перенаправление ввода-вывода.
- Конвейеры.
- Применение описанных принципов для администрирования систем.
-
Язык Ассемблера
- Базовые понятия и принципы.
- Программирование в машинных кодах.
- Достоинства и недостатки.
- Мнемокоды и машинный код.
- Директивы.
- Определение меток и адресов памяти.
- Двухпроходный алгоритм трансляции.
- Трансляция в абсолютные адреса.
- Машинно зависимые и машинно независимые особенности.
- Литералы.
- Определения.
- Выражения.
- Способы адресации.
- Понятие перемещения программ.
- Трансляция перемещаемой программы.
- Машинно независимые особенности ассемблеров: программные блоки и управляющие секции.
- Трансляция программы как набора независимых модулей.
- Внешние определения и ссылки.
- Понятие разрешения ссылок.
- Варианты построения.
- Однопроходные ассемблеры.
- Многопроходные ассемблеры.
- Ассемблеры с оверлейной структурой.
- Соотношение изученных принципов с реально существующим ассемблером для ПЭВМ IBM PC.
-
Загрузчики и редакторы связей
- Назначение и функции загрузчика.
- Разновидности загрузчиков: абсолютный, перемещающий, связывающий.
- Связь Ассемблера и загрузчика через объектный код программы.
- Базовый алгоритм работы загрузчика.
- Машинно-зависимые особенности реализации.
- Машинно независимые особенности загрузчиков.
- Статическое и динамическое связывание.
- Подключение библиотек.
- Создание программ оверлейной структуры.
- Базовая схема.
- Особенности трансляции, редактирования связей, загрузки и выполнения.
- Статическое связывание и откладывание связывания на этап исполнения программы.
- Динамическое связывание в процессе исполнения программы.
-
Макропроцессоры
- Назначение и функции.
- Базовый алгоритм функционирования.
- Машинно независимые особенности реализаций.
- Специализированные и универсальные макропроцессоры.
- Проблемы универсализма.
- Варианты реализации.
- Примеры реализаций.
-
Компиляторы
- Введение.
- История понятия «транслятор».
- Языки программирования низкого и высокого уровней.
- Трансляторы с языков и на языки.
- Назначение и функции транслятора.
- Структура транслятора.
- Лексический, синтаксический и семантический анализаторы, генератор кода.
- Формальные языки и грамматики.
- Типы грамматик.
- Синтаксический разбор.
- Схема трансляции.
- Приоритеты.
- Ассоциативность.
- Рекурсивность.
- Вывод цепочек.
- Распознавание цепочки.
- Автоматы-распознаватели.
- Преобразование левоассоциативной и леворекурсивной грамматики в праворекурсивную.
- Рекурсивный спуск.
- Основные понятия лексического анализа.
- Алфавит языка.
- Лексема и терминальный символ.
- Соотношение и взаимодействие лексического и синтаксического анализаторов.
- Таблица символов (имён).
- Стековая машина.
- Вычисление арифметических выражений на стековой машине.
- Реализация управляющих конструкций типа if, while на стековой машине.
- Построение автомата по заданной грамматике.
- Реализация простейшего транслятора инфиксной записи выражений в постфиксную.
- Лексический анализ.
- Разбор входного потока на лексемы.
- Буферизация входного потока и особенности обработки. Регулярные выражения.
- Понятие конечного автомата.
- Недетерминированный конечный автомат (НКА).
- Понятие.
- Формальное определение НКА.
- Диаграммы разбора. Формализованные правила построения диаграммы НКА по заданному регулярному выражению. Детерминированный конечный автомат (ДКА). Свойства.
- Преобразование НКА в ДКА.
- Промежуточная форма представления программы.
- Генератор промежуточного кода.
- Оптимизация кода.
- Машинно зависимые и машинно независимые варианты оптимизации.
- Генерация целевого кода.
- Структуры данных.
- Распределение памяти.
- Виды переменных.
- Организация вызова подпрограмм.
- Структурно-вложенные языки.
- Обработка ошибок при трансляции.
- Постановка задачи.
- Цели, правила и способы обработки ошибок.
- Сообщения об ошибках.
- Примеры правильных и неправильных сообщений.
- Варианты реализации трансляторов.
- Компиляторы, интерпретаторы и трансляторы на P-код.
- Различия в структуре компиляторов и интерпретаторов.
- Особенности реализации и применения трансляторов на P-код.
-
Инструментальные средства программирования
- Компиляторы компиляторов. Разновидности.
- Генератор программ синтаксического разбора YACC.
- Применение YACC для разработки транслятора с заданной грамматикой.
- Генератор программ лексического разбора LEX.
- Особенности используемых регулярных выражений.
- Применение LEX как самостоятельного средства разработки программ.
- Совместное использование YACC и LEX для разработки программ.
- Пример разработки интерактивного калькулятора выражений.
- Постановка задачи введения в интерактивный калькулятор именованных ячеек памяти.
- Возникающие вопросы и пути их решения.
- Примеры реализации различных вариантов именованных ячеек памяти.
-
СПО современных ОС
- Состав СПО современной ОС.
- Необходимость СПО и прикладного ПО в современной ОС.
- Требования к текстовым редакторам.
- Базовые средства представления и обработки графических данных.
- Требования к графическим средствам современной ОС.
- Проблемы накопления данных и доступа к данным.
- Системы управления базами данных. Требования к СУБД.
- Системы анализа данных и визуализации.
- Системы компьютерной алгебры и математической обработки.
- Универсальные и специализированные языки программирования.
- Системы ведения проектов, архиваторы и компрессоры.
- Программные отладчики.
- ПО для работы в сети.
- Системы вёрстки. История. Современное состояние.
- Системы разметки текста командами и WYSIWYG.
- Система вёрстки TeX как пример хорошо проработанной системы разметки текста командами, ориентированной на сложные виды работ с достижением профессионального качества.
-
Разработка специальных приложений
- Применение СПО для решения практических задач на примере построения наземных комплексов обработки телеметрической информации.
- Понятие ТМ системы.
- Цели, задачи и порядок обработки ТМИ
- Проблемы реализации наземных ТМ комплексов на базе ПЭВМ.
- Аппаратные ограничения.
- Требования к применяемому ПО.
- Примеры практических реализаций.
- Их сильные и слабые стороны.
Рекомендуемая литература:
- Молчанов А. Ю. Системное программное обеспечение: Учебник для вузов спец. «Вычислительные машины, комплексы, системы и сети» и «Автоматизированные системы обработки информации и управления». — СПб.: Питер, 2006. — 395 с.
- Ахо А., Сети Р., Ульман Д. Компиляторы: принципы, технологии, инструменты. — М.: Вильямс, 2001. — 768 с.
Дополнительная литература:
- Керниган Б., Пайк Р. UNIX. Программное окружение. — СПб.: Символ-Плюс, 2003. — 416 с.
- Тейнсли Д. Linux и UNIX: программирование в shell. — Киев: БХВ, 2001. — 464 с.
- Фридл Дж. Регулярные выражения. Библиотека программиста. — СПб.: Питер, 2001. — 352 с. Препарата Ф., Шеймос М. Вычислительная геометрия: Введение.: Пер. с англ. — М.: Мир, 1989. — 478 с.
Учебные и учебно-методические пособия:
- Чернышов А. В. Системное программное обеспечение. Лабораторный практикум для студентов специальности 220100. — М.: ГОУ ВПО МГУЛ, 2000. — 64 с.
- Чернышов А. В. Работа за X-терминалом. Учебное пособие для студентов специальностей 230100, 230101. — М.: ГОУ ВПО МГУЛ, 2005. — 87 с.
- Кнут Д. Е. Искусство программирования. Том 1. Основные алгоритмы. 3-е изд. — М.: Вильямс, 2000. — 720 с.
- Кнут Д. Е. Искусство программирования. Том 2. Получисленные алгоритмы. 3-е изд. — М.: Вильямс, 2000. — 830 с.
- Кнут Д. Е. Искусство программирования. Том 3. Сортировка и поиск. 2-е изд. — М.: Вильямс, 2000. — 824 с.
- Муллен Р. HTML 4: справочник программиста. — СПб.: Питер Ком, 1998. — 304 с.
- Чернышов А. В. Инструментальные средства программирования из состава ОС UNIX и их применение в повседневной практике. Учебное пособие для студентов специальности 2201. — М.: ГОУ ВПО МГУЛ, 1999. — 191 с.
- Шевель А. Linux. Обработка текстов. Специальный справочник. — СПб.: Питер, 2001. — 384 с.
- Робачевский А. Операционная система UNIX. — СПб.: БХВ, 1999. — 528 с.
- Чернышов А. Программное обеспечение рабочего места контроля бортовой телеметрической аппаратуры. — М.: ГОУ ВПО МГУЛ, 2007. — 160 с.
Нормативные документы:
- ГОСТ 19.701-90 (ИСО 5807-85) Схемы алгоритмов, программ, данных и систем.
- ГОСТ 19781-90 Обеспечение систем обработки информации программное. Термины и определения.
Интернет-ресурсы:
Учебные материалы: