Я читаю о семафорах в «Концепции операционных систем» (для тех из вас, кто это знает), и мне казалось, что я полностью понимаю семафоры, пока не прочитал этот отрывок:
Важнейшим аспектом семафоров является то, что они выполняются атомарно. Мы должны гарантировать, что никакие два процесса не могут одновременно выполнять операции ожидания и сигналов на одном и том же семафоре.
А также:
Если оборудование не предоставляет никаких специальных атомарных инструкций, мы можем использовать любое из программных решений для проблемы критического раздела, где критические разделы состоят из процедур ожидания и сигнала.
Этот отрывок относится к Signal
и Wait
операции должны быть атомарными. Я думал, что вся цель семафора состоит в том, чтобы разрешить только одному процессу в критическом разделе в любой момент времени - если мне нужно использовать другой алгоритм (например, алгоритм пекарни), зачем мне еще семафор?
Я понимаю, что мой вопрос может сбивать с толку. Если это так, то только потому, что тема для меня все еще неясна, поэтому даже задать вопрос немного сложно.
Хотел бы прочитать любые разъяснения ...