Современные операционные системы

Современные операционные системы
Процессы и потоки  Планирование потоков

Планирование потоков

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

Сначала рассмотрим потоки на уровне пользователя. Поскольку ядро о существовании потоков не знает, оно работает в обычном режиме, выбирая процесс, скажем, А, и передает процессу А управление до истечения его кванта времени. Планировщик потоков внутри процесса А решает, какой поток запустить, скажем, А1. Из-за отсутствия таймерных прерываний для многозадачных потоков этот поток может продолжать работу сколько ему понадобится. Если он полностью израсходует весь квант времени, отведенный процессу, ядро выберет для запуска другой процесс.

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


Процессы и потоки  Потоки на уровне пользователя

Потоки на уровне пользователя

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

Потоки на уровне пользователя читать полное описание.


Процессы и потоки  Задача обедающих философов

Задача обедающих философов

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

Задача обедающих философов читать полное описание.


Процессы и потоки  Получение левой вилки

Получение левой вилки

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

Получение левой вилки читать полное описание.


Процессы и потоки  Задача читателей и писателей

Задача читателей и писателей

Задача обедающих философов хороша для моделирования процессов, которые соревнуются за исключительный доступ к ограниченному количеству ресурсов, например к устройствам ввода-вывода. Другая общеизвестная задача касается читателей и писателей (Courtois et al., 1971). В ней моделируется доступ к базе данных. Представим, к примеру, систему бронирования авиабилетов, в которой есть множество соревнующихся процессов, желающих обратиться к ней по чтению и записи. Вполне допустимо наличие нескольких процессов, одновременно считывающих информацию из базы данных, но если один процесс обновляет базу данных (проводит операцию записи), никакой другой процесс не может получить доступ к базе данных даже для чтения информации. Вопрос в том, как создать программу для читателей и писателей?

Задача читателей и писателей читать полное описание.