Я готовлюсь к экзамену, но слайды, данные профессором, не очень полезны, и любые поиски, которые я делаю, дают только грязные результаты. Из того, что я мог собрать:
Семафор: счетчик с down()
и up()
операциями, которые заняты, ожидают при вызове down(counter)
при counter = 0
до counter > 0
снова
Mutex: двоичный семафор, который может быть освобожден только его собственным процессом / потоком
Проверка и установка: Инструкция ЦП для получения двоичное значение и установка его в 1 атомарно ; используется для реализации мьютексов
Monitor: объект, который вызывает синхронизированный доступ, то есть только один процесс / поток может получить к нему доступ одновременно; может быть реализовано с использованием мьютексов
Передача сообщений: процессы отправляют сообщения по некоторой общей памяти, чтобы сообщить друг другу, когда другой может продолжить свою работу; по сути, это семафор, который действует не только как счетчик, но также может использоваться для обмена другими данными, то есть с некоторыми продуктами в задаче производитель-потребитель
У меня есть следующие вопросы:
- Верны ли эти определения?
- Есть ли способ реализовать мониторы без мьютексов?
- Есть ли способ реализовать мьютексы без test-and -set, в частности, без ожидания занятости?
- Существуют ли другие способы тестирования и установки, кроме реализации мьютексов?