
- •Перечень контрольных вопросов по дисциплине «Системное программирование»
- •Понятие системного программного продукта.
- •Стадии разработки программного обеспечения.
- •Технология инкрементального программирования.
- •Понятие объекта: состояние, поведение, методы. Понятие класса и идентичность объектов.
- •Принципы объектной модели
- •Проблема создания и уничтожения объектов
- •Понятие ссылки. Операции над ссылками и способы применения ссылок.
- •Статические и постоянные члены класса. Встраиваемые методы.
- •Дружественные функции.
- •Иерархические отношения между классами: композиция.
- •Иерархические отношения между классами: наследование.
- •Виртуальные методы и позднее связывание.
- •Понятие абстрактного класса.
- •Использование потокового ввода-вывода.
- •Порождаемые функции в обобщённом программировании.
- •Порождаемые классы в обобщённом программировании.
- •Использование основных контейнеров стандартной библиотеки.
- •Классы функциональных объектов: создание и применение.
- •Использование алгоритмов стандартной библиотеки операционной системы, ее назначение и функции.
- •Операционная система, ее назначение и функции
- •Утилиты операционной системы gnu/Linux
- •Понятие файла. Виртуальная файловая система gnu/Linux
- •Разграничение доступа к файлам. Доступ к устройствам
- •Организация взаимодействия пользователя с системой
- •Организация ввода-вывода системного уровня
- •Концепция процесса. Состояние процесса и диаграмма смены состояний процесса
- •Операции над процессами. Разграничение доступа процессов к ресурсам системы.
- •Планирование процессов. Политики планирования
- •Сигналы и их использование для управления процессами
- •Понятие потока выполнения. Сравнительный анализ потоков и процессов.
- •Асинхронные параллельные потоки. Проблематика разработки многопоточных приложений.
- •Задача «разделение доступа к ресурсу». Способы ее решения.
- •Задача «синхронизация по готовности данных». Способы ее решения.
- •Системные средства синхронизации потоков.
- •1.Решение задачи «разделение доступа к ресурсу».
- •2.Способы обеспечения атомарности операций
- •3.Обеспечение взаимоисключения потоков через мьютексы.
- •4.Решение задачи «синхронизация по готовности данных»
- •Мониторы Хоара. Пример проектирования монитора «склад» для задачи «производитель-потребитель».
- •Проектирование и модели многопоточных приложений.
- •Иерархия памяти. Виртуальная память: концепция и инструменты.
- •Взаимодействие процессов: проблематика и средства.
- •Модули ядра Linux.
Проектирование и модели многопоточных приложений.
Независимость от других задач: раздельные ресурсы, минимум в потребности синхронизации.
Возможность блокирования задачи в течение длительного времени: операция ввода-вывода, ожидание события.
Интенсивное использование центрального процессора: длительные вычисления.
Необходимость реакции на наступление асинхронных событий: сетевое взаимодействие, прерывания от аппаратуры или ОС.
Решает более (менее) важную задачу чем другие: ограничение по времени выполнения, включение в определенные моменты или через заданные интервалы.
Примеры задач, кандидатов на отдельный поток: серверные программы, вычислительные и приложения ЦОС на мультипроцессорных системах, задачи для выполнения в реальном времени.
Главная проблема проектирования: распределение задач между потоками и их взаимодействие.
Модель «начальник - подчиненный».(РИС)
Существует главный поток («начальник»), который управляет набором подчинённых ему потоков: порождает их, обеспечивает приём данных и выставляет задачи подчинённым.
Задача подчинённых: выполнение обработки данных (поставленных «начальником» задач).
Варианты модели подчинённых (рис 24): специализированные (каждый может решать определённую задачу или многопрофильные (каждый может выполнять любой допустимый класс задач).
Набор подчинённых может быть предопределён или «начальник» может динамически порождать их по мере поступления задач.
Применение – серверные приложения. Пример: «система с множественными потребителями данных».
Модель «без лидера».
Все потоки равноправны. Каждый ответственен за свой ввод.
Применение – строго определенный набор источников поступления
информации.
Пример: «система с множественными источниками данных» с вариантами
– однородная или неоднородная по данным, независимая или совместная по
обработке (рис 25).
Модель «конвейер».(РИС)
Характерные черты: большой поток данных, набор последовательных операций для обработки каждой порции данных, операции в один момент времени могут выполняются над разными порциями (рис 26).
Аналогии: конвейер по сборке автомобилей, выполнение машинных инструкций в RISC-процессорах.
Применение – обработка изображений, обработка текстов.
Пропускная способность конвейера – по самой медленной стадии. Для ускорения обработки используется мультиплексирование – несколько потоков выполняют одну и ту же стадию (как правило самую медленную). Разбиение стадии обработки на две или более последовательных даёт выигрыш только в многопроцессорной системе. В однопроцессорной обязательно проигрыш вследствие дополнительных затрат по времени на передачу данных.
Время на передачу данных между стадиями оказывает влияние на максимальную пропускную способность и в многопроцессорных системах.
Иерархия памяти. Виртуальная память: концепция и инструменты.
Тенденция к удешевлению памяти и увеличению её объёма.
Для памяти действует закон Паркинсона: «Расходы растут вместе с доходами».
Уровни памяти: кэш, основная, вторичная.
Характеристики памяти: время доступа, стоимость байта, ёмкость.
Нехватка оперативной памяти может быть компенсирована предоставлением процессу возможности использовать адресное пространство гораздо большее емкости первичной памяти.
Адресное пространство – это всего лишь диапазон адресов, отведённых процессу, а не реальное физическое пространство. Дополнительную память можно получить за счёт использования вторичной памяти.
Основной принцип виртуальной памяти: адреса, к которым обращается процесс, отделяются от адресов, реально существующих в первичной памяти. Задачи подсистемы виртуальной памяти: обеспечение большого адресного пространства, защита адресного пространства процессов, отображение памяти, справедливое распределение, поддержка разделяемой виртуальной памяти.