
- •V(s) - переменная s увеличивается на 1 единым действием. Выборка, наращивание и запоминание не могут быть прерваны. К переменной s нет доступа другим потокам во время выполнения этой операции;
- •2. Круговое или карусельное планирование (rr – round robin) использует вытеснение на основе таймера для повышения эффективности работы с короткими процессами в методе fcfs.
- •3. Выбор самого короткого процесса (spn – shortest process next). Для выполнения выбирается процесс с наименьшим ожидаемым временем выполнения.
- •1.Назначение процессов процессорам, предполагает, что процессоры – это единый ресурс и все процессоры идентичны. Подразделяют статическое и динамическое назначение.
- •3. Бригадное планирование (gang scheduling). Множество связанных процессов (потоков) распределяется для одновременной работы среди множества процессоров, по одному процессу (потоку) на процессор.
- •4. Динамическое планирование. Количество потоков процесса может изменяться во время работы.
1.Назначение процессов процессорам, предполагает, что процессоры – это единый ресурс и все процессоры идентичны. Подразделяют статическое и динамическое назначение.
Если процесс назначается одному процессору постоянно, от момента активации и до его завершения, - то для каждого процессора следует поддерживать отдельную краткосрочную очередь, что способствует уменьшению накладных расходов планирования процессов (поскольку назначение процесса процессору выполняется один раз). Кроме того, использование выделенных процессоров обеспечивает возможность применение стратегии, известной как групповое (group) или бригадное (gang) планирование.
Недостатком статического распределения является то, что когда один процессор загружен работой, другой может простаивать. Для предотвращения такой ситуации можно использовать очередь, общую для всех процессоров. Все процессы попадают в одну глобальную очередь и передаются для выполнения любому свободному процессору. Таким образом, в течение жизни процесс может в разное время выполняться на разных процессорах.
В сильно связанных системах с общей памятью информация контекста всех процессов доступна всем процессорам и, следовательно, стоимость планирования не зависит от того, какой из процессов оказывается выбранным.
Используются два основных подхода к назначению процессов процессорам: ведущий/ведомый и равноправные процессоры.
В архитектуре ведущий/ведомый функции ОС выполняются на одном специально выделенном процессоре; все остальные процессоры могут выполнять только пользовательские приложения. Ведущий процессор отвечает за планирование заданий. Когда активный процесс на ведомом процессоре требует определенного обслуживания (например, осуществляет вызов ввода-вывода), он должен послать запрос ведущему процессору и ожидать завершение сервиса. Такой подход требует небольших изменений в однопроцессорную многозадачную ОС. Один процессор управляет всей памятью и вводом-выводом. Однако сбой ведущего процессора приводит е неработоспособности всей системы в целом, а ведущий процессор превращается в узкое место системы, определяющий ее производительность в целом.
В архитектуре равноправных процессоров ОС может выполняться на любом из процессоров, и каждый процессор самостоятельно планирует свою работу, беря процессы для выполнения из общего пула. ОС должна гарантировать, что никакие два процесса не выберут одновременно один и тот же процесс для выполнения и что не будет потерь из очереди. Запросы к ресурсам должны синхронизироваться.
Планирование назначение также применяется при назначении потоков процессорам. Каждой программе на время ее выполнения выделяется количество процессоров, равное количеству потоков программы. По завершению работы процессоры возвращаются в общий пул для распределения другими программами.
Однако, если поток приложения блокируется операцией ввода-вывода, то или необходимостью синхронизации с другим потоком, то процессор этого потока простаивает: многозадачность процессора в этом методе отсутствует. Устранение переключений процессов программы во время работы, существенно повышает ее скорость работы.
2. Разделение загрузки. Процессы не назначаются конкретным процессорам. Поддерживается глобальная очередь готовых к выполнению потоков, и каждый процессор в состоянии простоя выбирает поток из этой очереди. Термин разделение загрузки (load sharing) используется, чтобы отличить эту стратегию от схем со сбалансированной загрузкой, в которых работа распределяется на более постоянной основе.
Достоинства.
• Загрузка равномерно распределяется между процессорами, обеспечивая отсутствие простоя процессоров при наличии работы.
• Не требуется централизованный планировщик; когда процессор становится доступным, он сам выполняет подпрограмму планирования ОС для выбора очередного потока или процесса.
• Глобальная схема может быть организована с использованием любого метода одно – процессорного планирования.
• При поступлении в систему задания с несколькими потоками, каждый из потоков помещается в конец разделяемой очереди. Когда процессор становится свободным, он выбирает очередной готовый е использованию поток и работает с ним до его завершения или блокирования.
• Выбор процесса с наименьшим числом потоков (и с вытеснением). Разделяемая очередь готовых к выполнению потоков организуется как приоритетная, причем наивысший приоритет у потоков тех заданий, у которых осталось наименьшее число не распланированных потоков. Задания с одинаковыми приоритетами упорядочиваются в соответствии с их поступлением в систему. Как и в случае FCFS, поток выполняется до его завершения и блокировки. Наивысший приоритет получают задания с наименьшим количеством не распланированных потоков. Поступившие задания с меньшим, чем выполняющегося, количеством потоков вытесняют потоки, выполняющиеся в настоящий момент.
Недостатки.
• Центральная очередь занимает область памяти, доступ к которой должен производиться с обеспечением взаимоисключений. С увеличение количества процессоров, при их обращении к очереди может возникнуть узкое место.
• Вытесненные потоки могут продолжить выполнение на других процессорах, что снижает эффективность локальных кэшей процессора.
• Маловероятно, что все потоки одной программы получат одновременно доступ к процессорам, поэтому требуется координация между потоками программы, что снижает общую производительность.