Операционные системы. Курс лекций




Реализация операций семафора


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

1) Параллельная реализация семафоров – в любой, многопроцессорной или однопроцессорной, системе, реализованной без специальных ограничений, может одновременной поступать любое количество методов SimWait() и SimSignal() одного семафора. Реализация операций SimWait() и SimSignal() может потребовать изменения целочисленного значения семафора, его очереди и составляющего процесса. Все изменения должны осуществляться в составе одной атомарной операции, во избежание перевода системы в неопределенное состояние, т.е. либо должны быть выполнены все 3три действия, либо ни одного. Организация семафора должна отвечать требованиям монопольного доступа к его внутренним данным. Методы SimWait() и SimSignal() содержат критические секции, связанные с внутренней структурой данных семафора и не могут одновременно выполняться несколькими процессами. Однако семафор предназначен для решения проблемы взаимных исключений и синхронизации, поэтому необходимо обеспечить возможность одновременного обращения к ним.

2)    Планирование очередей SImWait(). Простейший вариант планирования процессов, ожидающих у семафора может осуществляться с использованием стратегии FIFO. Но тут существует две проблемы:

а)    низкоприоритетный процесс, завладевший семафором, может удерживать остальные процессы в состоянии ожидания в независимости от их приоритета до тех пор, пока сам не закончит работу с ресурсом и не вызовет метод SimSignal(); в случае приоритетного планирования с абсолютными динамическими приоритетами он может быть вытеснен с процессора до того, как будет освободит семафор и таким образом задержит выполнение ожидающих процессов; эта ситуация называется инверсией приоритетов;




Содержание  Назад  Вперед