- •1. Слои программного обеспечения компьютерной системы. Определение ос.
- •2. Архитектура ос unix и ее элементы, понятие ядра ос.
- •3. Виды прерываний. Система прерывания. Системные вызовы как интерфейс между прикладными программами и ос. Исключительные ситуации.
- •4. Понятие оболочки Shell(функции и возможности). Примеры оболочек.
- •5. Преимущества и недостатки операционных систем типа Windows.
- •6. Общая характеристика оболочки MidnightCommander (Far manager). Управление данными в mc(Far).
- •8. Основные состояния процесса и основные переходы между состояниями. Жизненный цикл процесса в unix. Понятие контекста процесса.
- •9. Основания для взаимодействия процессов. Виды взаимодействия. Ресурсы, используемые при межпроцессном обмене.
- •11. Компьютерные сети. Сервер, клиент и редиректор. Функциональные роли компьютеров в сети.
- •12. Модель процессов в многозадачной среде. События, приводящие к созданию процессов и завершению процессов.
- •13. Алгоритм планирования rr. Анализ алгоритма с использованием простой модели очередности исполнения процессов. Влияние величины кванта времени на производительность процессов.
- •14. Единое дерево каталогов в Linux и типы файлов в ос Linux.
- •15. Определение вычислительной сети. Классификация. Программные средства для вычислительных сетей.
3. Виды прерываний. Система прерывания. Системные вызовы как интерфейс между прикладными программами и ос. Исключительные ситуации.
Прерывание (англ. interrupt) — сигнал, сообщающий процессору о наступлении какого-либо события. При этом выполнение текущей последовательности команд приостанавливается, и управление передаётся обработчику прерывания, который реагирует на событие и обслуживает его, после чего возвращает управление в прерванный код
В зависимости от источника возникновения сигнала прерывания делятся на:
асинхронные, или внешние (аппаратные) — события, которые исходят от внешних источников (например, периферийных устройств) и могут произойти в любой произвольный момент: сигнал от таймера, сетевой карты или дискового накопителя, нажатие клавиш клавиатуры, движение мыши. Факт возникновения в системе такого прерывания трактуется как запрос на прерывание (англ. Interrupt request, IRQ);
синхронные, или внутренние — события в самом процессоре как результат нарушения каких-то условий при исполнении машинного кода: деление на ноль или переполнение стека, обращение к недопустимым адресам памяти или недопустимый код операции;
программные (частный случай внутреннего прерывания) — инициируются исполнением специальной инструкции в коде программы. Программные прерывания как правило используются для обращения к функциям встроенного программного обеспечения (firmware), драйверов и операционной системы.
Система прерывания. (Механизм прерываний)
Механизм прерываний поддерживается аппаратными и программными средствами ОС
Различают векторный (vectored) и опрашиваемый (polled) типы прерываний. В обоих способах процессору передается информация об уровне приоритета.
При векторном типе прерывания в процессор передается также адрес обработчика прерывания
Для векторного типа схема обработки такова: электрический сигнал - запрос на подтверждение - вектор - обработчик (например, для шины VMEbus)
Для опрашиваемого схема обработки такова: сигнал - запрос на подтверждение - уровень приоритета (например, шина ISA). Каждый уровень связан с несколькими устройствами. Вызываются все обработчики данного уровня. Один опознает свое устройство. (Примеры шин: ISA, EISA, MCA, PCi, SBus)
Intel Pentium объединяет два типа. устройство выдает сигнал некоторого уровня (IRQ - Interrupt Request), а контроллер вектор. Вектор - это число 0-255
Приоритеты обслуживания могут быть: относительные (обработка прерывания не прекращается при появлении более приоритетного прерывания) и абсолютные.
Для упорядочивания работы обработчиков введен механизм приоритетных очередей, которые обслуживает модуль ОС диспетчер прерываний.
Системные вызовы как интерфейс между прикладными программами и ОС
Операционные системы предлагают процессам, работающим в режиме пользователя, набор интерфейсов для взаимодействия с аппаратными устройствами, такими как процессор, диски или принтеры. Создание дополнительного программного слоя между приложением и аппаратной частью компьютера имеет ряд преимуществ. Во-первых, это облегчает программирование, пото- му что программисты избавлены от необходимости изучать низкоуровневые характеристики аппаратных устройств. Во-вторых, такой подход существенно повышает безопасность системы, поскольку ядро может проверить кор- ректность запроса на уровне интерфейса до выполнения этого запроса. Нако- нец, что не менее важно, подобные интерфейсы делают программы более пе- реносимыми, позволяя компилировать и корректно выполнять их в каждом ядре, предлагающем такой же набор интерфейсов. В Unix-системах большинство интерфейсов между процессами режима пользователя и аппаратными устройствами реализовано с помощью системных вызовов, направляемых ядру. В этой главе подробно рассматривается, как Linux реализует системные вызовы, передаваемые ядру пользовательскими программами.