
- •1. Что такое критическая область? Условия избегания состязания для эффективной работы процессов.
- •Строгое чередование
- •Что такое примитивы взаимодействия процессов, и для чего они применяются? в чем заключается проблема переполненного буфера?
- •Что такое семафор? Для чего применяются операции up и down?
- •8. Решение проблемы переполнения буфера с помощью семафоров (producer-consumer).
- •10. Образ процесса, регистры процесса.
- •12. Основные атрибуты процесса.
- •13. Что такое контекст и дескриптор процесса? Из каких частей состоит контекст процесса в unix-системах? Контекст и дескриптор процесса
- •14. Назвать состояния процесса в unix-системах.
- •15. Этапы жизненного цикла процесса в unix-системах.
- •16. В каких случаях происходит переключение контекста
- •17. Приоритеты процессов
- •18. Синхронизация процессов.
- •Критерии планирования и требования к алгоритмам
- •24. Методы разделения процессов на группы в интерактивных системах.
- •25. Какие существуют системы реального времени? Необходимое условие для планирования процессов в системе реального времени
- •26. Статический алгоритм планирования процессов (rms) в системах реального времени.
- •27. Динамический алгоритм планирования процессов (edf) в системах реального времени
- •28. Понятие взаимоблокировки процессов. Что такое ресурс? Типы ресурсов, последовательность событий, необходимых для использования ресурса
- •34. Способы выхода из взаимоблокировки:
18. Синхронизация процессов.
Назовем критической секцией (см.п.1) фрагмент кода каждого процесса, в котором происходит обращение к общим данным. Проблема синхронизации процессов по критическим секциям заключается в том, чтобы обеспечить следующий режим выполнения: если один процесс вошел в свою критическую секцию, то до ее завершения никакой другой процесс не смог бы одновременно войти в свою критическую секцию.
Процессы должны синхронизироваться при доступе к совместно используемым ресурсам.
Использование явных примитивов для синхронизации порождает серьезные проблемы при написании, отладке и сопровождении программ, поэтому в традиционных UNIX-системах понятие процесса жестко связывается с понятием отдельной и недоступной для других процессов виртуальной памятью, когда каждый процесс защищен ядром операционной системы от неконтролируемого вмешательства других процессов. Но связывание процесса с виртуальной памятью, в свою очередь, порождает две основные проблемы:
1. первая проблема связана с системами реального времени, предназначенными для одновременного управления несколькими внешними объектами и представляющимися в виде совокупности параллельно (квазипараллельно) выполняемых потоков команд (т. е. взаимодействующих процессов). Если с каждым процессом связана отдельная виртуальная память, то переключение с выполнения одного процесса на выполнение другого является дорогостоящей операцией, поэтому традиционный подход UNIX-систем препятствовал использованию системы в приложениях реального времени;
2. вторая проблема связана с появлением симметричных мультипроцессорных компьютерных архитектур (SMP – Symmetric Multiprocessor Architectures), в которых физически присутствуют несколько процессоров, имеющих одинаковые по скорости возможности доступа к совместно используемой основной памяти – при применении традиционного подхода UNIX-систем к организации процессов наличие общей памяти не является большим достоинством.
Таким образом, более эффективным остается явное параллельное программирование с использованием параллельных процессов в общей виртуальной памяти с явной синхронизацией.
В целях синхронизации используется, так называемая, нить (thread), которая является независимым потоком управления, выполняемым в контексте некоторого процесса.
В этом случае понятие контекста процесса изменяется следующим образом: все, что не относится к потоку управления (виртуальная память, дескрипторы открытых файлов и т. д.), остается в общем контексте процесса, а все, что характерно для потока управления (регистровый контекст, стеки разного уровня и т. д.), переходит из контекста процесса в контекст нити. Все нити процесса выполняются в его контексте, но каждая нить имеет свой собственный контекст.
Контекст нити, как и контекст процесса, состоит из пользовательской и ядерной составляющих.
Пользовательская составляющая контекста нити включает индивидуальный стек нити. Поскольку нити одного процесса выполняются в общей виртуальной памяти (все нити процесса имеют равные права доступа к любым частям виртуальной памяти процесса), то стек (сегмент стека) любой нити процесса не защищен от произвольного (например, по причине ошибки) доступа со стороны других нитей.
Ядерная составляющая контекста нити включает ее регистровый контекст (в частности, содержимое регистра счетчика команд) и динамически создаваемые ядерные стеки.
19. Назвать ситуации, при которых необходимо планирование процессов. Основные системы планирования
Когда компьютер работает в многозадачном режиме, на нем зачастую запускается сразу несколько процессов или потоков, претендующих на использование центрального процессора. Если доступен только один центральный процессор, необходимо выбрать, какой из этих процессов будет выполняться следующим. Та часть операционной системы, на которую возложен этот выбор, называется планировщиком, а алгоритм, который ею используется, называется алгоритмом планирования. Планировщик, кроме выбора «правильного» процесса, должен также заботиться об эффективной загрузке центрального процессора, поскольку переключение процессов является весьма дорогостоящим занятием. Сначала должно произойти переключение из пользовательского режима в режим ядра. Затем должно быть сохранено состояние текущего процесса, включая сохранение его регистров в таблице процессов для их последующей повторной загрузки. Во многих системах должна быть также сохранена и карта памяти (например, признаки обращения к страницам памяти). После этого запускается алгоритм планирования для выбора следующего процесса. Затем в соответствии с картой памяти нового процесса должен быть перезагружен блок управления памятью. И наконец, новый процесс должен быть запущен. Вдобавок ко всему перечисленному переключение процессов обесценивает весь кэш памяти, заставляя его дважды динамически перезагружаться из оперативной памяти (после входа в ядро и после выхода из него). В итоге слишком частое переключение может поглотить существенную долю процессорного времени, что наводит на мысль о том, что этого нужно избегать.
Ситуации, при которых необходимо планирование процессов.
1. Создание процесса;
2. завершение работы процесса;
3. блокировка процесса (на операции ввода/вывода, семафоре, и т. д.);
4. прерывание ввода/вывода.
Основные системы планирования процессов.
Системы пакетной обработки – это системы, которые могут использовать неприоритетные и приоритетные алгоритмы планирования процессов (например, для расчетных программ).
Задачи алгоритмов планирования процессов для таких систем заключаются в следующем:
должна быть максимальная пропускная способность, т. е. количество задач в единицу времени;
должно быть минимальным оборотное время, т. е. минимальное время на ожидание обслуживания и обработку задач;
должно быть максимальное использование процессора, т. е. необходимое условие состоит в постоянной занятости процессора.
Интерактивные системы (системы разделения времени) – это системы, использующие только приоритетные алгоритмы планирования процессов; в них не допускается, чтобы один процесс надолго занимал процессор (например, сервер общего доступа или персональный компьютер).
Задачи алгоритмов планирования процессов для этих систем заключаются в следующем:
должно быть минимальным время отклика, т .е. должна быть быстрая реакция на запросы;
должна присутствовать соразмерность, т. е. необходимость реализации ожиданий пользователя, который не должен тратить время, например, на ожидание загрузки системы.
Системы реального времени – это системы, которые могут использовать неприоритетные и приоритетные алгоритмы планирования процессов (например, система управления автомобилем).