Ответ 1
Предположим, что у нас есть двоичный семафор, s, который имеет значение 1, а два процесса одновременно пытаются выполнить P на s. Только одна из этих операций будет выполнена до следующей V-операции на s; другой процесс, пытающийся выполнить операцию P, приостанавливается.
Взято из моих университетских заметок:
Мы можем думать, что если P и V управляют доступ к ресурсу:
Когда процесс хочет использовать ресурс, он выполняет операцию P: если это удастся, оно уменьшает количество доступных ресурсов и процесс продолжается; если все ресурс в настоящее время используется, процесс должен ждать.
Когда процесс завершается ресурс, он выполняет операцию V: если бы процессы, ожидающие ресурс, один из них проснулся,
если не было ожидающих процессов, семафор увеличивается что теперь есть больше ресурс бесплатный. Обратите внимание, что определение V не определяет, какие процесс пробуждается, если более одного процесс был приостановлен на том же семафор.
Семафоры могут решать как проблемы взаимного исключения, так и проблемы синхронизации. Поэтому ответ на оба вопроса: да.