
- •Перечень контрольных вопросов по дисциплине «Системное программирование»
- •Понятие системного программного продукта.
- •Стадии разработки программного обеспечения.
- •Технология инкрементального программирования.
- •Понятие объекта: состояние, поведение, методы. Понятие класса и идентичность объектов.
- •Принципы объектной модели
- •Проблема создания и уничтожения объектов
- •Понятие ссылки. Операции над ссылками и способы применения ссылок.
- •Статические и постоянные члены класса. Встраиваемые методы.
- •Дружественные функции.
- •Иерархические отношения между классами: композиция.
- •Иерархические отношения между классами: наследование.
- •Виртуальные методы и позднее связывание.
- •Понятие абстрактного класса.
- •Использование потокового ввода-вывода.
- •Порождаемые функции в обобщённом программировании.
- •Порождаемые классы в обобщённом программировании.
- •Использование основных контейнеров стандартной библиотеки.
- •Классы функциональных объектов: создание и применение.
- •Использование алгоритмов стандартной библиотеки операционной системы, ее назначение и функции.
- •Операционная система, ее назначение и функции
- •Утилиты операционной системы gnu/Linux
- •Понятие файла. Виртуальная файловая система gnu/Linux
- •Разграничение доступа к файлам. Доступ к устройствам
- •Организация взаимодействия пользователя с системой
- •Организация ввода-вывода системного уровня
- •Концепция процесса. Состояние процесса и диаграмма смены состояний процесса
- •Операции над процессами. Разграничение доступа процессов к ресурсам системы.
- •Планирование процессов. Политики планирования
- •Сигналы и их использование для управления процессами
- •Понятие потока выполнения. Сравнительный анализ потоков и процессов.
- •Асинхронные параллельные потоки. Проблематика разработки многопоточных приложений.
- •Задача «разделение доступа к ресурсу». Способы ее решения.
- •Задача «синхронизация по готовности данных». Способы ее решения.
- •Системные средства синхронизации потоков.
- •1.Решение задачи «разделение доступа к ресурсу».
- •2.Способы обеспечения атомарности операций
- •3.Обеспечение взаимоисключения потоков через мьютексы.
- •4.Решение задачи «синхронизация по готовности данных»
- •Мониторы Хоара. Пример проектирования монитора «склад» для задачи «производитель-потребитель».
- •Проектирование и модели многопоточных приложений.
- •Иерархия памяти. Виртуальная память: концепция и инструменты.
- •Взаимодействие процессов: проблематика и средства.
- •Модули ядра Linux.
Понятие файла. Виртуальная файловая система gnu/Linux
Файл - логическая единица информации, хранимая на носителе. Имеет метки: временные – создание, изменение, последний доступ; права: запись, чтение, исполнение.
Файловая система - порядок, определяющий способ организации, хранения и именования данных. Особенность в UNIX – единый корневой каталог. Съемные носители – в mnt, mount или media.
Linux поддерживает много различных файловых систем (ext3, reiserfs, vfat,
ntfs, iso9660 и т. д.).
Проблема доступа программ к файлам: каждая файловая система имеет свою организацию хранения файлов, что вынуждает включать в прикладную программу поддержку всех известных файловых систем.
Решение указанной проблемы – виртуальная файловая система (ВФС).Все операции над файлами – абстрактные, драйвер определённой файловой системы обеспечивает конкретную реализацию операций над файлами в соответствии со структурой хранения файлов
Прикладные программы взаимодействуют только с виртуальной файловой системой. Поступивший запрос перенаправляется к соответствующему драйверу файловой системы.
Аналогия с идеями объектно-ориентированного программирования: ВФС – абстрактный класс, операции над файлами – чисто виртуальные методы, конкретные ФС – производные классы.
С целью повышения быстродействия ВФС оперирует кэшами данных, каталогов, inode. При некорректном завершении работы операционной системы содержимое кэшей не будет перенесено на устройства хранения информации.
Разграничение доступа к файлам. Доступ к устройствам
Разделение доступа к файлам в зависимости от категорий пользователей.
Владелец – тот, кто создал файл (кому он принадлежит). Группа – определённый список пользователей. Прочие – пользователи, не относящиеся с позиции файла к первым двум категориям.
Различаются операции над файлом: чтение, запись, выполнение.
Существуют файлы нескольких типов: обычный файл «-», каталог «d», символьная связь «l», файл-устройство с посимвольным доступом «c», файл-устройство с блочным доступом «b», поименованный канал «p», сокет «s».
Для каждой категории пользователей доступ к каждой из операций управляется своим атрибутом.
Доступ к устройствам осуществляется через специальные файлы устройств. Файл устройства является точкой доступа к драйверу устройства.
Используя атрибуты доступа можно управлять доступом к устройство для различных пользователей.
Примеры файлов устройств:
/dev/hda1 – первый раздел на IDE диске первого контроллера
/dev/fd0 – первый флоппи-дисковод
/dev/null – пустое устройство
/dev/mouse – символьная связь с файлом устройства «мышь»
/dev/ttyS0 – первый последовательный порт.
Организация взаимодействия пользователя с системой
Оболочка обеспечивает интерфейс между ядром и пользователем.
Оболочка интерпретирует команды вводимые пользователем и посылает их в ядро. Примеры оболочек: Bourne, Korn, C-shell. Наиболее распространённой
является оболочка bash – Bourne Again Shell.
Альтернатива интерфейсу командной строки – графический пользовательский интерфейс (GUI) X Window. Он является препроцессором для оболочки. Команды пользователя поступают от GUI в оболочку, и только через неё в ядро. Пример оконных менеджеров: KDE, Window Maker, fvwm95, Fluxbox.
Консольная надстройка над командной строкой – Midnight Commander. Она предоставляет удобные средства задания команд и выполнения операций над файлами.
Имя и хост
[semi@localhost semi]$