Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры ОС1.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.61 Mб
Скачать

6. Теоретические основы параллельного программирования: классификация программных модулей; понятия реентерабельности и повторной входимости программных модулей.

Для реализации в параллельном программировании требуется представление программных модулей в виде особого рода ресурсов, которые могут использоваться согласно особого типа программного модуля.

Типы программных модулей с точки зрения параллельного программирования. Программные модули делятся на исполняемые однократно и многократно. Однократно исполняемые — разрушают себя в процессе выполнения и не м.б. использованы для параллельного программирования. Обычно они используются при загрузке ОС. Многократно исполняемые — привилегированные и непривилегированные. Привилегированные — забирают на себя все ресурсы ЦП путем отключения прерываний в процессе своей работы. ЦП может переключиться на другой контекст только после завершения выполнения текущего модуля. Из таких модулей обычно состоит низкоуровневая часть ОС. Непривилегированные — обычные программные модули, которые могут быть прерваны во время своего исполнения. Делятся на рентабельные и нерентабельные:

  • Нерентабельные — модули используют в процессе своего исполнения глобальные переменные (выделяемая память), поэтому при переключении контекста внутри такого модуля нельзя допускать выполнение этого модуля другой нитью, иначе это приведет к краху процесса.

  • Рентабельные - не использую глобальные переменные. Используют только переменные, заведенные в стеке, т.к. стек входит внутрь контекста, то прерывание переведёт к переключению стека и модуль может использоваться др. нитью.

На практике чаще используется 3-я разновидность модулей — повторновходимые и занимают промежуточные положения между рентабельными и нерентабельными модулями. Такие модули состоят из частей, некоторые из которых являются нерентабельными. Эти части называются критическими секциями. Внутри критической секции в текущий момент времени может находиться только одна нить. Существуют способы обеспечения данного условия. Повторно входимые модули встречаются чаще чем рентабельные.

7. Прерывания и механизмы обработки прерываний операционной системой.

Прерывания представляют собой механизм, позволяющий координировать параллельное функционирование отдельных устройств в вычислительной системе и реагировать на особые состояния, возникающие при работе процессора путем передачи управления от выполняемой программы к ОС и далее к соответствующему программному обработчику.

Идея прерываний возникла в середине 50-х годов. Прерывания позволили реализовать асинхронный режим работы и параллельную работу устройств вычислительного комплекса независимо от архитектуры.

Обработка прерывания включает в себя следующие элементы:

  1. Установка факта прерывания и его идентификация.

  2. Запоминание состояния прерванного процесса (часть контекста).

  3. Аппаратная передача управления обработчику прерывания.

  4. Запоминание той части контекста, которую не запомнили на шаге 2.

  5. Обработка прерывания путем вызова соответствующей подпрограммы.

  6. Восстановление информации, обратной шагу 4.

  7. Восстановление информации, обратной шагу 2.

Шаги 1-3 и 7 делаются аппаратно, шаги с 4 по 6 – программно, причем шаги 4, 6 выполняет ядро ОС, шаг 5 – драйвер.

Прерывания делятся на два класса: внешние и внутренние.

Внешние прерывания вызываются асинхронными событиями, которые происходят вне текущего процессора (таймера и т.д.). Внутренние прерывания вызываются событиями, которые связаны с работой процессора и синхронны с его операциями (деление на ноль, нарушение адресации и т.д.). Программное прерывание (внутреннее) по соответствующей команде прерывания переходит с одного уровня защиты процессора на другой.

Сигналы, вызывающие прерывание, могут возникнуть одновременно (внутри одного такта частоты процессора). Выбор одного из них осуществляется на основе приоритетов. Учет приоритета может быть аппаратным, программным и смешанным. Наличие сигнала прерывания не обязательно должно вызывать прерывание.

Процессор может обладать средствами защиты от прерываний, а именно отключение сигнала прерываний, маскирование отдельных сигналов прерываний. Это позволяет ОС управлять возникновением прерываний на основе различных дисциплин обслуживания:

  1. С относительным приоритетом. Обслуживание не прерывается даже при наличии запросов с более высокими приоритетами. После окончания обслуживания данного прерывания обслуживается запрос с наименьшим приоритетом.

  2. С абсолютным приоритетом. Всегда обслуживается прерывание с наивысшим приоритетом. Возможно прерывание прерывания (или многократное прерывание).

  3. По принципу стека. Обслуживание прерывания, пришедшего последним (LCFS – Last Come First Served). Виды 2 и 3 требуют полного запрета прерываний на шагах 1-4, 6, 7.