Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 5. Понятия процесса и потока. Классифика...docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
439.88 Кб
Скачать
    1. Типы планирования процессора

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

  • время ожидания;

  • пропускная способность;

  • эффективность работы процессора.

Рис. 5.5. Диаграмма планирования

Во многих операционных системах планирование разбивается на три отдельные функции:

  • долгосрочное планирование;

  • среднесрочное планирование;

  • краткосрочное планирование.

Основное отличие между долгосрочным и краткосрочным планированием заключается в частоте запуска.

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

Среднесрочное планирование является частью свопинга и представляет собой решение о добавлении процесса к множеству частично расположенных в основной памяти процессов.

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

Планирование потоков осуществляется на основе информации, хранящейся в описателях процессов и потоков.

При планировании может приниматься во внимание:

  • приоритет потоков

  • время их ожидания в очереди

  • накопленное время выполнения

  • интенсивность обращений к вводу-выводу и другие факторы.

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

Планирование потоков включает в себя решение двух задач:

  • определение момента времени для системы текущего активного потока;

  • выбор для выполнения потока из очереди готовых потоков.

    1. Тупики

Тупик (дедлок или клинч) – это ситуация, когда процесс ожидает события, которое никогда не произойдет вследствие занятости необходимого процессу ресурса другим процессом, который также ожидает какого-либо события. Типики приводят к зависаниям системы.

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

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

Системная тупиковая ситуация, или зависание системы, является следствием того, что один или более процессов находятся в состоянии тупика. Иногда подобные ситуации называют взаимоблокировками. В общем случае проблема тупиков эффективного решения не имеет.

Ресурсами могут быть как устройства, так и данные. Некоторые ресурсы допускают разделение между процессами, то есть являются разделяемыми ресурсами. Например, память, процессор, диски коллективно используются процессами. Другие не допускают разделения, то есть являются выделенными. К взаимоблокировке может привести использование как выделенных, так и разделяемых ресурсов.

Условия возникновения тупиков были сформулированы Коффманом, Элфиком и Шошани в 1970 г.

1. Условие взаимоисключения (mutual exclusion). Одновременно использовать ресурс может только один процесс. Процессы требуют предоставления им права монопольного управления ресурсами, которые им выделяются.

2. Условие ожидания ресурсов (hold and wait). Процессы удерживают за собой ресурсы, уже выделенные им, ожидая в то же время выделения дополнительных ресурсов.

3. Условие неперераспределяемости (no preemtion). Ресурс, выделенный ранее, не может быть принудительно забран у процесса (только процессом, который их удерживает).

4. Условие кругового ожидания (circular wait). Существует кольцевая цепь процессов, в которой каждый процесс ждет доступа к ресурсу, удерживаемому другим процессом цепи.

Для образования тупика необходимым и достаточным является выполнение всех четырех условий.

Основные направления борьбы с тупиками:

  • игнорирование проблемы в целом;

  • предотвращение тупиков;

  • обход тупиков;

  • обнаружение тупиков;

  • восстановление после тупиков.

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

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

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

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

Существуют различные способы предотвращения тупиков:

1. Алгоритм банкира. Алгоритм банкира для безопасного распределения ресурсов операционной системой (с избеганием тупиков) был предложен Э. Дейкстрой и впервые реализован в операционной системе THE в конце 1960-х гг. Происхождение названия связано с тем, что поведение алгоритма напоминает осторожную стратегию банкира при проведении банковских операций. Принципы алгоритма банкира следующие:

  • каждый процесс должен априорно обозначить свои потребности в ресурсах по максимуму;

  • когда процесс запрашивает ресурс, ему, возможно, придется подождать (выделение ресурсов по запросу не всегда может произойти немедленно);

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