- •Перечень контрольных вопросов по дисциплине «Системное программирование»
- •Понятие системного программного продукта.
- •Стадии разработки программного обеспечения.
- •Технология инкрементального программирования.
- •Понятие объекта: состояние, поведение, методы. Понятие класса и идентичность объектов.
- •Принципы объектной модели
- •Проблема создания и уничтожения объектов
- •Понятие ссылки. Операции над ссылками и способы применения ссылок.
- •Статические и постоянные члены класса. Встраиваемые методы.
- •Дружественные функции.
- •Иерархические отношения между классами: композиция.
- •Иерархические отношения между классами: наследование.
- •Виртуальные методы и позднее связывание.
- •Понятие абстрактного класса.
- •Использование потокового ввода-вывода.
- •Порождаемые функции в обобщённом программировании.
- •Порождаемые классы в обобщённом программировании.
- •Использование основных контейнеров стандартной библиотеки.
- •Классы функциональных объектов: создание и применение.
- •Использование алгоритмов стандартной библиотеки операционной системы, ее назначение и функции.
- •Операционная система, ее назначение и функции
- •Утилиты операционной системы gnu/Linux
- •Понятие файла. Виртуальная файловая система gnu/Linux
- •Разграничение доступа к файлам. Доступ к устройствам
- •Организация взаимодействия пользователя с системой
- •Организация ввода-вывода системного уровня
- •Концепция процесса. Состояние процесса и диаграмма смены состояний процесса
- •Операции над процессами. Разграничение доступа процессов к ресурсам системы.
- •Планирование процессов. Политики планирования
- •Сигналы и их использование для управления процессами
- •Понятие потока выполнения. Сравнительный анализ потоков и процессов.
- •Асинхронные параллельные потоки. Проблематика разработки многопоточных приложений.
- •Задача «разделение доступа к ресурсу». Способы ее решения.
- •Задача «синхронизация по готовности данных». Способы ее решения.
- •Системные средства синхронизации потоков.
- •1.Решение задачи «разделение доступа к ресурсу».
- •2.Способы обеспечения атомарности операций
- •3.Обеспечение взаимоисключения потоков через мьютексы.
- •4.Решение задачи «синхронизация по готовности данных»
- •Мониторы Хоара. Пример проектирования монитора «склад» для задачи «производитель-потребитель».
- •Проектирование и модели многопоточных приложений.
- •Иерархия памяти. Виртуальная память: концепция и инструменты.
- •Взаимодействие процессов: проблематика и средства.
- •Модули ядра Linux.
Операционная система, ее назначение и функции
Все пользователи используют операционные системы, но у многих затруднения с чётким определением этого понятия.
Понятие операционной системы (ОС) с нескольких точек зрения.
ОС как виртуальная машина, с которой проще иметь дело, чем непосредственно с оборудованием компьютера. Скрывает детали реализации и внутренние требования и ограничения.
ОС как менеджер ресурсов осуществляет упорядоченное и контролируемое распределение процессоров, памяти и других ресурсов между программами.
ОС как защитник пользователей и программ обеспечивает систему безопасности, на которую возложены полицейские и контрразведывательные функции – предупреждать (предвидеть) действия, контролировать и наказывать.
ОС как постоянно функционирующее ядро, постоянно работающее в вычислительной системе и взаимодействующее со всеми прикладными программами.
Операционная система – набор программ, которые обеспечивают возможность использования аппаратуры компьютера. При этом аппаратура предоставляет «сырую» вычислительную мощность, а задача ОС заключается в том, чтобы сделать аппаратуру доступной и удобной для пользователей, а также обеспечить рациональное и координированное управление ей для достижения высокой производительности.
Функции операционной системы
Главное назначение операционной системы – управление ресурсами.
Реализует множество функций, объединяемых в несколько групп (подсистем).
Определяет интерфейс пользователя для взаимодействия с системой и прикладными программами.
Обеспечивает планирование заданий и использования процессора для эффективного использования ресурсов вычислительной системы.
Предоставляет программам средства коммуникации и синхронизации для совместного решения задач.
Реализует управление памятью для удовлетворения запросов программ и надёжности их выполнения.
Обеспечивает управление файловой системой для долговременного хранения пользовательских данных и доступа к общим программам и данным.
Реализует эффективное управление операций ввода-вывода.
Обеспечивает безопасность и конфиденциальность работы пользователя в вычислительной системе.
Все операционные системы можно отнести к одной или нескольким
группам.
Мультипрограммные ОС – позволяют одновременное выполнение нескольких пользовательских программ.
Мультипроцессорные ОС – обеспечивают поддержку вычислительных систем с несколькими процессорами.
ОС с разделением времени – обеспечивают возможность одновременной работы с системой нескольких пользователей через терминалы.
ОС реального времени – обеспечивают предсказуемость времени реакции системы на непредсказуемое появление внешних событий.
Многорежимные ОС – реализуют несколько режимов работы системы (с разделением времени, реальное время и т. д.).
Сетевые ОС – обеспечивают поддержку работы пользователей в сети Распределённые ОС – реализуют возможность выполнения распределённой обработки информации.
Утилиты операционной системы gnu/Linux
Операционная система состоит из 4-х основных компонент.
Ядро – базовая программа, которая управляет аппаратными средствами и выполнением других программ.
Оболочка – обеспечивает функционирование интерфейса пользователя. Она принимает от пользователя команды и посылает их в ядро для исполнения.
Файловая система – представляет собой систему хранения файлов на запоминающих устройствах.
Утилиты – специализированные программы, такие как редакторы,
компиляторы, коммуникационные программы, посредством которых
выполняются стандартные действия пользователя.
Взаимодействие всех компонент осуществляется через ядро.
Утилиты
Набор стандартных текстовых редакторов (ed, vi, emacs).
Обработка текста. Технологии «word processing» (KWord, OpenOffice) и
«text processing» (tex/latex, sgml, groff)
Фильтр – программа преобразования информации, считанной со
стандартного устройства ввода, и выдачи результата преобразования на
стандартное устройство вывода (cat, head, tail, sort, awk, cut)
Сетевые утилиты используются для связи с другими пользователями,
удалённого доступа к другим вычислительным системам, поддержки
электронной почты и выхода в Internet (write, talk, telnet, rlogin, ssh, mail,
ftp,wget).
Средства разработки программ – компилятор, отладчик, ассемблер,
компоновщик, профилирование, стандартные библиотеки. (gcc/g++, gdb,
gprof, as)
