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