Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
33__33__33__33_ItogOS.docx
Скачиваний:
4
Добавлен:
01.03.2025
Размер:
1.55 Mб
Скачать

60. Приоритеты в алгоритмах планирования мультипрограммного вычислительного процесса.

Практикум: Все потоки мультипрограммного вычислительного процесса должны иметь доступ к системным ресурсам – кучам, портам, файлам, окнам и т.д. Потоки взаимодействуют друг с другом в двух основных случаях: совместно используя разделяемый ресурс и уведомляя друг друга о завершении каких-либо операций.

Один из основных принципов многопоточной архитектуры заключается в том, что не все потоки имеют одинаковые приоритеты. Несмотря на то что все потоки создаются одинаковыми (с приоритетом Normal), не всегда целесообразно оставлять приоритеты потоков, установленные при их создании (пример: фоновая печать одновременно с редактированием документа. Лучше отдавать больше ресурсов основному приложению, а печать всё равно закончится, может несколько позже).

Чтобы выполнить подобное перераспределение ресурсов, используется свойство Priority, которое имеет пять допустимых значений:

  1. Lowest (низший);

  2. BelowNormal (ниже нормального);

  3. Normal (нормальный);

  4. AboveNormal (выше нормального);

  5. Highest (наивысший).

Следует иметь в виду, что среда .NET изначально проектировалась в расчёте на перенос на несколько платформ, поэтому перечисленные значения приоритетов могут не совпадать со значениями конкретных ОС. Например, в Windows 2000 существует 6 основных приоритетов, а в Windows CE 3.0 – 256 градаций приоритета, обозначенных числами от 0 до 255.

Просторы интернета:

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

На примерах разберём несколько алгоритмов.

Обозначение: время исполнения - CPU Burst.

Алгоритм FCFS (First-Come, First-Served).

Процесс p0 p1 p2

Продолжительность очередного CPU burst 13 4 1

Алгоритм Round Robin (RR)

Таблица 60.1.

Время 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

p0 И И И И Г Г Г Г Г И И И И И И И И И

p1 Г Г Г Г И И И И

p2 Г Г Г Г Г Г Г Г И

Shortest-Job-First (SJF)

Процесс p0 p1 p2 p3

Продолжительность очередного CPU burst 5 3 7 1

Время 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

p0 Г Г Г Г И И И И И

p1 Г И И И

p2 Г Г Г Г Г Г Г Г Г И И И И И И И

p3 И

При приоритетном планировании каждому процессу присваивается определенное числовое значение – приоритет, в соответствии с которым ему выделяется процессор. Процессы с одинаковыми приоритетами планируются в порядке FCFS. Для алгоритма SJF в качестве такого приоритета выступает оценка продолжительности следующего CPU burst. Чем меньше значение этой оценки, тем более высокий приоритет имеет процесс.

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

Можно выделить относительные и абсолютные приоритеты. Если по ходу выполнения одного процесса в очередь процессов, находящихся в состоянии ожидания, попадает процесс с относительным приоритетом, то исполняемый процесс будет выполнен до конца своего кванта времени, в то время, как очередь ожидающих процессов изменится в соответствие с приоритетами. Если же новый процесс имеет абсолютный приоритет, который к тому же выше приоритета исполняемого процесса, то произойдёт прерывание, и далее исполняться будет новый процесс. Также выделяют смешанные приоритеты.

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]