- •Перечень контрольных вопросов по дисциплине «Системное программирование»
- •Понятие системного программного продукта.
- •Стадии разработки программного обеспечения.
- •Технология инкрементального программирования.
- •Понятие объекта: состояние, поведение, методы. Понятие класса и идентичность объектов.
- •Принципы объектной модели
- •Проблема создания и уничтожения объектов
- •Понятие ссылки. Операции над ссылками и способы применения ссылок.
- •Статические и постоянные члены класса. Встраиваемые методы.
- •Дружественные функции.
- •Иерархические отношения между классами: композиция.
- •Иерархические отношения между классами: наследование.
- •Виртуальные методы и позднее связывание.
- •Понятие абстрактного класса.
- •Использование потокового ввода-вывода.
- •Порождаемые функции в обобщённом программировании.
- •Порождаемые классы в обобщённом программировании.
- •Использование основных контейнеров стандартной библиотеки.
- •Классы функциональных объектов: создание и применение.
- •Использование алгоритмов стандартной библиотеки операционной системы, ее назначение и функции.
- •Операционная система, ее назначение и функции
- •Утилиты операционной системы gnu/Linux
- •Понятие файла. Виртуальная файловая система gnu/Linux
- •Разграничение доступа к файлам. Доступ к устройствам
- •Организация взаимодействия пользователя с системой
- •Организация ввода-вывода системного уровня
- •Концепция процесса. Состояние процесса и диаграмма смены состояний процесса
- •Операции над процессами. Разграничение доступа процессов к ресурсам системы.
- •Планирование процессов. Политики планирования
- •Сигналы и их использование для управления процессами
- •Понятие потока выполнения. Сравнительный анализ потоков и процессов.
- •Асинхронные параллельные потоки. Проблематика разработки многопоточных приложений.
- •Задача «разделение доступа к ресурсу». Способы ее решения.
- •Задача «синхронизация по готовности данных». Способы ее решения.
- •Системные средства синхронизации потоков.
- •1.Решение задачи «разделение доступа к ресурсу».
- •2.Способы обеспечения атомарности операций
- •3.Обеспечение взаимоисключения потоков через мьютексы.
- •4.Решение задачи «синхронизация по готовности данных»
- •Мониторы Хоара. Пример проектирования монитора «склад» для задачи «производитель-потребитель».
- •Проектирование и модели многопоточных приложений.
- •Иерархия памяти. Виртуальная память: концепция и инструменты.
- •Взаимодействие процессов: проблематика и средства.
- •Модули ядра Linux.
Взаимодействие процессов: проблематика и средства.
Процесс работает в своём собственном адресном пространстве.
Изолированность адресов – ключевая проблема в организации взаимодействия процессов.
Для синхронизации процессов и обмена данными между ними используются стандартные системные средства-ресурсы.
Время жизни системного ресурса межпроцессного взаимодействия может превышать время существования процесса, использующего его.
Доступ к ресурсам межпроцессного взаимодействия организован через системные вызовы.
Передача данных процессом сопровождается копированием данных из области процесса в системную область.
Приём данных процессом сопровождается копированием данных из системной области в область процесса.
Каналы
принципы обмена данными посредством канала: поток байтов, «очередь»
операции над каналами (создание, открытие, чтение, запись, закрытие)
блокирование процесса при выполнении доступа к каналу.
непоименованные каналы можно использовать между родственными процессами. Данные в канале размещаются в оперативной памяти. Недостаток использования – ограничение на вместимость. Время жизни канала ограничено временем жизни процессов, использующих его.
поименованные – между любыми процессами. Данные в канале размещаются в специальном файле. Время жизни канала может превышать время жизни процессов, использующих его с сохранением данных в канале.
использование (в оболочках – реализация конвейера команд)
системные вызовы: pipe, mknod, open, read, write, close
Организация взаимодействия посредством очередей сообщений.
принципы обмена данными посредством сообщений: структурированный поток байтов, типы сообщений, ключи.
операции над очередью (создание, открытие, чтение, запись, закрытие) блокирование процесса при выполнении доступа к очереди.
Время жизни очереди сообщений может превышать время жизни процессов, использующих его с сохранением данных в очереди.
недостатки использования (ограничение на вместимость, накладные расходы)
системные вызовы: ftok, msgget, msgsnd, msgrcv, msgctl
Разделяемая память.
Принципы обмена данными через разделяемую память: «перекрытие» адресного пространства, ключи.
Операции (создание-открытие, присоединение, отсоединение)
сравнение с общей памятью потоков выполнения (существует после завершения процессов, явное присоединение, уникальные ключи).
системные вызовы: ftok, shmget, shmat, shmdt, shmctl
Семафоры (System V)
Используются как средство синхронизации процессов.
Системный ресурс, существующий вне процессов.
Через системные вызовы предоставляют операции создания, P(S), V(S) и инициализации.
Использование – совместно с разделяемой памятью.
Системные вызовы: semget, semop, semctl.
Использование сокетов.
Могут использоваться для взаимодействия процессов разных вычислительных систем
Сокет идентифицируется указанием IP-адреса вычислительной системы и номером порта на ней.
Этапы установления связи со стороны сервера
1. создание окончания (сокета) для соединения (socket);
2. именование сокета с помощью указания адреса (bind);
3. прослушивание в ожидании запроса (listen);
4. принятие (ввод) (accept);
5. выполнение ввода-вывода (read/write);
6. закрытие (close).
Этапы установления связи со стороны клиента
1. создание окончания (сокета) для соединения (socket);
2. формирование сетевого адреса (inet_pton);
3. запрос на соединение (connect);
4. выполнение ввода-вывода (read/write);
5. закрытие (close).
