Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операционные системы (лекции) (4 семестр).doc
Скачиваний:
11
Добавлен:
04.11.2018
Размер:
728.06 Кб
Скачать

Лекция №4 Алгоритмы планирования процессов

Задачи:

  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 процессу – принтер.

Проблемы тупиков:

  • Предотвращение (программистом)

  • Распознавание

  • Восстановление работы системы.

Процессы имеют виртуальное адресное пространство, содержимое регистров и т.д. В рамках одного процесса существует понятие «нить». Нить уже не настолько ограничена и обособлена, если на привязана к процессу. Нить выполняется также последовательно, имеет свой собственный программный счетчик и стек, может переходить из одного состояния в другой. Мы можем запустить несколько нитей в рамках одного процесса, который выполняются параллельно. Это нити-потомки, регистры. Для всех нитей общее адресное пространство, глобальные переменные, открытые файлы, симофомы, статистика.