1. Определение момента времени для смены процесса (решается программным способом)
2. Выбор процесса на выполнение из очереди готовых процессов (решается программным способом).
3. Переключение контекстов для старого и нового процессов (решается операторным способом).
Алгоритмы, основанные на:
Ø Квантовании: смена активного процесса происходит в случае, если:
Процесс завершился
Произошла ошибка
Процесс перешел в состояние ожидания
Исчерпан квант времени, отведенный данному процессу. Процесс тогда переходит в состояние ожидания, ждет квант времени от системы. Квант может быть произвольным.
Ø Приоритете: число, характеризующее степень привилегированности процессов при использовании ресурсов – приоритетное число. Может быть положительным, отрицательным и т.д. Приоритет может быть и постоянным, и изменяющимся.
Алгоритмы, использующие:
§ Абсолютный приоритет (ОС может прервать выполнение процесса, выбрав другой)
§ Относительный приоритет (процесс будет выполняться до конца)
На выполнение будет выбираться процесс с наивысшим приоритетом.
Планирование:
1. невытесняющая многозадачность – процесс выполняется до тех пор, пока не отдаст свое управление.
2. вытесняющее многозадачность – способ, когда решение о переключении процессора с одного процесса на другой выполняется разработчиком, а не системой; механизм выполнения задач целиком зависит от системы, в то время, как при невытесняющей многозадачности решение принимает программист.
Ситуации, когда 2 и более процессов обрабатывают разделяемые данные и конечный результат зависит от скорости соотношения процессов, называется гонкой (+пример).
Часть программы, в которой осуществляется доступ к разделяемым данным, называется критической секцией.
1 способ:
Чтобы исключить эффект гонок по отношению к некоторым ресурсам, необходимо обеспечить, чтобы в каждый момент критической секции, связанной с этими ресурсами, находился один процесс. Данный прием называется взаимным исключением.
2 способ:
С каждым разделяемым ресурсом связана двоичная переменная, с 1 и 0, которая определяет 1 – свободен ресурс, 0 – нет. Блокированные переменные – глобальные.
Недостаток: если процесс находится в критической секции, то второй процесс, которому требуется данный ресурс, тратит время на проверку.
Обобщающие средства синхронизации предложил Дейкстра, который ввел второй новый примитива - симофом. На симофоме определены 2 операции:
1) операция V(S) означает, что S увеличивается на 1 одним неделимым действием. Выбор ……… и запоминание …………. К S нет доступа при выполнении этой операции.
2) Операции P(S) означает уменьшение S на 1, если это возможно. Если переменная принимает значение 0, то уменьшить нет возможности, и переменная остается в области отрицательных чисел. Р – операция ждет, пока уменьшение станет возможным. Проверка ………………………. Операция Р заключает в себе потенциальную возможность перехода процесса, который её вызывает в состояние ожидания. V может активизировать процесс, приостановленного операцией Р.
Если симофом может принимать значение либо 0, либо 1, он превращается в блокирующую переменную.
Тупиковая ситуация:
2 процесса:
1 процессу нужен принтер и вытесняется ………..2 процесс захватывает диск. Каждый в своей критической секции. Нельзя выйти, т. к. 1 процессу нужен диск, а 2 процессу – принтер.
Проблемы тупиков:
Предотвращение (программистом)
Распознавание
Восстановление работы системы.
Процессы имеют виртуальное адресное пространство, содержимое регистров и т.д. В рамках одного процесса существует понятие «нить». Нить уже не настолько ограничена и обособлена, если на привязана к процессу. Нить выполняется также последовательно, имеет свой собственный программный счетчик и стек, может переходить из одного состояния в другой. Мы можем запустить несколько нитей в рамках одного процесса, который выполняются параллельно. Это нити-потомки, регистры. Для всех нитей общее адресное пространство, глобальные переменные, открытые файлы, симофомы, статистика.