Кафедра К3 Прикладная математика, информатика
и вычислительная техника

Системное программное обеспечение

Преподаватель: Чернышов Александр Викторович

Направление подготовки: 654600 «Информатика и вычислительная техника»
Специальность: 230101 (220100) «Вычислительные машины, комплексы, системы и сети»
Семестры: 6, 7
Вид итогового контроля:
зачет — 6 семестр
экзамен — 7 семестр
курсовая работа — 7 семестр

Содержание курса:

  1. Введение. Предмет и задачи СПО
    • Понятие СПО.
    • Соотношение СПО и операционной системы.
    • Функции ОС, используемые в СПО и дополняемые СПО: пользовательский интерфейс операционной среды, управление задачами, управление памятью, управление вводом-выводом, управление памятью.
  2. Пример ОС и её СПО
    • ОС UNIX и её разновидности: Linux, FreeBSD.
    • Основные принципы построения.
    • Стандарт POSIX.
    • Мобильность программного обеспечения.
    • Базовые команды UNIX/Linux.
    • Основные принципы решения сложных задач.
    • Фильтры.
    • Перенаправление ввода-вывода.
    • Конвейеры.
    • Применение описанных принципов для администрирования систем.
  3. Язык Ассемблера
    • Базовые понятия и принципы.
    • Программирование в машинных кодах.
    • Достоинства и недостатки.
    • Мнемокоды и машинный код.
    • Директивы.
    • Определение меток и адресов памяти.
    • Двухпроходный алгоритм трансляции.
    • Трансляция в абсолютные адреса.
    • Машинно зависимые и машинно независимые особенности.
    • Литералы.
    • Определения.
    • Выражения.
    • Способы адресации.
    • Понятие перемещения программ.
    • Трансляция перемещаемой программы.
    • Машинно независимые особенности ассемблеров: программные блоки и управляющие секции.
    • Трансляция программы как набора независимых модулей.
    • Внешние определения и ссылки.
    • Понятие разрешения ссылок.
    • Варианты построения.
    • Однопроходные ассемблеры.
    • Многопроходные ассемблеры.
    • Ассемблеры с оверлейной структурой.
    • Соотношение изученных принципов с реально существующим ассемблером для ПЭВМ IBM PC.
  4. Загрузчики и редакторы связей
    • Назначение и функции загрузчика.
    • Разновидности загрузчиков: абсолютный, перемещающий, связывающий.
    • Связь Ассемблера и загрузчика через объектный код программы.
    • Базовый алгоритм работы загрузчика.
    • Машинно-зависимые особенности реализации.
    • Машинно независимые особенности загрузчиков.
    • Статическое и динамическое связывание.
    • Подключение библиотек.
    • Создание программ оверлейной структуры.
    • Базовая схема.
    • Особенности трансляции, редактирования связей, загрузки и выполнения.
    • Статическое связывание и откладывание связывания на этап исполнения программы.
    • Динамическое связывание в процессе исполнения программы.
  5. Макропроцессоры
    • Назначение и функции.
    • Базовый алгоритм функционирования.
    • Машинно независимые особенности реализаций.
    • Специализированные и универсальные макропроцессоры.
    • Проблемы универсализма.
    • Варианты реализации.
    • Примеры реализаций.
  6. Компиляторы
    • Введение.
    • История понятия «транслятор».
    • Языки программирования низкого и высокого уровней.
    • Трансляторы с языков и на языки.
    • Назначение и функции транслятора.
    • Структура транслятора.
    • Лексический, синтаксический и семантический анализаторы, генератор кода.
    • Формальные языки и грамматики.
    • Типы грамматик.
    • Синтаксический разбор.
    • Схема трансляции.
    • Приоритеты.
    • Ассоциативность.
    • Рекурсивность.
    • Вывод цепочек.
    • Распознавание цепочки.
    • Автоматы-распознаватели.
    • Преобразование левоассоциативной и леворекурсивной грамматики в праворекурсивную.
    • Рекурсивный спуск.
    • Основные понятия лексического анализа.
    • Алфавит языка.
    • Лексема и терминальный символ.
    • Соотношение и взаимодействие лексического и синтаксического анализаторов.
    • Таблица символов (имён).
    • Стековая машина.
    • Вычисление арифметических выражений на стековой машине.
    • Реализация управляющих конструкций типа if, while на стековой машине.
    • Построение автомата по заданной грамматике.
    • Реализация простейшего транслятора инфиксной записи выражений в постфиксную.
    • Лексический анализ.
    • Разбор входного потока на лексемы.
    • Буферизация входного потока и особенности обработки. Регулярные выражения.
    • Понятие конечного автомата.
    • Недетерминированный конечный автомат (НКА).
    • Понятие.
    • Формальное определение НКА.
    • Диаграммы разбора. Формализованные правила построения диаграммы НКА по заданному регулярному выражению. Детерминированный конечный автомат (ДКА). Свойства.
    • Преобразование НКА в ДКА.
    • Промежуточная форма представления программы.
    • Генератор промежуточного кода.
    • Оптимизация кода.
    • Машинно зависимые и машинно независимые варианты оптимизации.
    • Генерация целевого кода.
    • Структуры данных.
    • Распределение памяти.
    • Виды переменных.
    • Организация вызова подпрограмм.
    • Структурно-вложенные языки.
    • Обработка ошибок при трансляции.
    • Постановка задачи.
    • Цели, правила и способы обработки ошибок.
    • Сообщения об ошибках.
    • Примеры правильных и неправильных сообщений.
    • Варианты реализации трансляторов.
    • Компиляторы, интерпретаторы и трансляторы на P-код.
    • Различия в структуре компиляторов и интерпретаторов.
    • Особенности реализации и применения трансляторов на P-код.
  7. Инструментальные средства программирования
    • Компиляторы компиляторов. Разновидности.
    • Генератор программ синтаксического разбора YACC.
    • Применение YACC для разработки транслятора с заданной грамматикой.
    • Генератор программ лексического разбора LEX.
    • Особенности используемых регулярных выражений.
    • Применение LEX как самостоятельного средства разработки программ.
    • Совместное использование YACC и LEX для разработки программ.
    • Пример разработки интерактивного калькулятора выражений.
    • Постановка задачи введения в интерактивный калькулятор именованных ячеек памяти.
    • Возникающие вопросы и пути их решения.
    • Примеры реализации различных вариантов именованных ячеек памяти.
  8. СПО современных ОС
    • Состав СПО современной ОС.
    • Необходимость СПО и прикладного ПО в современной ОС.
    • Требования к текстовым редакторам.
    • Базовые средства представления и обработки графических данных.
    • Требования к графическим средствам современной ОС.
    • Проблемы накопления данных и доступа к данным.
    • Системы управления базами данных. Требования к СУБД.
    • Системы анализа данных и визуализации.
    • Системы компьютерной алгебры и математической обработки.
    • Универсальные и специализированные языки программирования.
    • Системы ведения проектов, архиваторы и компрессоры.
    • Программные отладчики.
    • ПО для работы в сети.
    • Системы вёрстки. История. Современное состояние.
    • Системы разметки текста командами и WYSIWYG.
    • Система вёрстки TeX как пример хорошо проработанной системы разметки текста командами, ориентированной на сложные виды работ с достижением профессионального качества.
  9. Разработка специальных приложений
    • Применение СПО для решения практических задач на примере построения наземных комплексов обработки телеметрической информации.
    • Понятие ТМ системы.
    • Цели, задачи и порядок обработки ТМИ
    • Проблемы реализации наземных ТМ комплексов на базе ПЭВМ.
    • Аппаратные ограничения.
    • Требования к применяемому ПО.
    • Примеры практических реализаций.
    • Их сильные и слабые стороны.

Рекомендуемая литература:

  1. Молчанов А. Ю. Системное программное обеспечение: Учебник для вузов спец. «Вычислительные машины, комплексы, системы и сети» и «Автоматизированные системы обработки информации и управления». — СПб.: Питер, 2006. — 395 с.
  2. Ахо А., Сети Р., Ульман Д. Компиляторы: принципы, технологии, инструменты. — М.: Вильямс, 2001. — 768 с.

Дополнительная литература:

  1. Керниган Б., Пайк Р. UNIX. Программное окружение. — СПб.: Символ-Плюс, 2003. — 416 с.
  2. Тейнсли Д. Linux и UNIX: программирование в shell. — Киев: БХВ, 2001. — 464 с.
  3. Фридл Дж. Регулярные выражения. Библиотека программиста. — СПб.: Питер, 2001. — 352 с. Препарата Ф., Шеймос М. Вычислительная геометрия: Введение.: Пер. с англ. — М.: Мир, 1989. — 478 с.

Учебные и учебно-методические пособия:

  1. Чернышов А. В. Системное программное обеспечение. Лабораторный практикум для студентов специальности 220100. — М.: ГОУ ВПО МГУЛ, 2000. — 64 с.
  2. Чернышов А. В. Работа за X-терминалом. Учебное пособие для студентов специальностей 230100, 230101. — М.: ГОУ ВПО МГУЛ, 2005. — 87 с.
  3. Кнут Д. Е. Искусство программирования. Том 1. Основные алгоритмы. 3-е изд. — М.: Вильямс, 2000. — 720 с.
  4. Кнут Д. Е. Искусство программирования. Том 2. Получисленные алгоритмы. 3-е изд. — М.: Вильямс, 2000. — 830 с.
  5. Кнут Д. Е. Искусство программирования. Том 3. Сортировка и поиск. 2-е изд. — М.: Вильямс, 2000. — 824 с.
  6. Муллен Р. HTML 4: справочник программиста. — СПб.: Питер Ком, 1998. — 304 с.
  7. Чернышов А. В. Инструментальные средства программирования из состава ОС UNIX и их применение в повседневной практике. Учебное пособие для студентов специальности 2201. — М.: ГОУ ВПО МГУЛ, 1999. — 191 с.
  8. Шевель А. Linux. Обработка текстов. Специальный справочник. — СПб.: Питер, 2001. — 384 с.
  9. Робачевский А. Операционная система UNIX. — СПб.: БХВ, 1999. — 528 с.
  10. Чернышов А. Программное обеспечение рабочего места контроля бортовой телеметрической аппаратуры. — М.: ГОУ ВПО МГУЛ, 2007. — 160 с.

Нормативные документы:

  1. ГОСТ 19.701-90 (ИСО 5807-85) Схемы алгоритмов, программ, данных и систем.
  2. ГОСТ 19781-90 Обеспечение систем обработки информации программное. Термины и определения.

Интернет-ресурсы:

  1. www.linuxcenter.ru
  2. www.linuxformat.ru

Учебные материалы:

Вопросы к экзамену