семафоры отношений, мьютексы, мониторы, тестирование и установка и передача сообщений - PullRequest
0 голосов
/ 14 февраля 2020

Я готовлюсь к экзамену, но слайды, данные профессором, не очень полезны, и любые поиски, которые я делаю, дают только грязные результаты. Из того, что я мог собрать:

Семафор: счетчик с down() и up() операциями, которые заняты, ожидают при вызове down(counter) при counter = 0 до counter > 0 снова

Mutex: двоичный семафор, который может быть освобожден только его собственным процессом / потоком

Проверка и установка: Инструкция ЦП для получения двоичное значение и установка его в 1 атомарно ; используется для реализации мьютексов

Monitor: объект, который вызывает синхронизированный доступ, то есть только один процесс / поток может получить к нему доступ одновременно; может быть реализовано с использованием мьютексов

Передача сообщений: процессы отправляют сообщения по некоторой общей памяти, чтобы сообщить друг другу, когда другой может продолжить свою работу; по сути, это семафор, который действует не только как счетчик, но также может использоваться для обмена другими данными, то есть с некоторыми продуктами в задаче производитель-потребитель

У меня есть следующие вопросы:

  1. Верны ли эти определения?
  2. Есть ли способ реализовать мониторы без мьютексов?
  3. Есть ли способ реализовать мьютексы без test-and -set, в частности, без ожидания занятости?
  4. Существуют ли другие способы тестирования и установки, кроме реализации мьютексов?

1 Ответ

0 голосов
/ 15 февраля 2020
  1. Нет. Вы можете или не сможете реализовать их с занятыми ожиданиями, но это ни в коем случае не является частью определения. Определение Procure вернется, когда семафор доступен; Liberate сделает доступным семафор. Как они это делают, зависит от них. Другого определения нет.

  2. Да. Грубо говоря, вы можете использовать любой из {передачи сообщений, мьютексов, семафоров} для реализации {передачи сообщений, mutees, семафоров}. Благодаря транзитивности все, что вы можете реализовать с любым из них, вы можете реализовать с любым другим из них. Но помните, вы можете пнуть мяч по пляжу. Шар - это объект, похожий на кита; таким образом, вы можете пнуть кита по пляжу. Это может быть немного сложнее.

  3. Да. Спросите ваш любимый поисковик о Деккере и его невероятном алгоритме.

  4. Да. Например, вы можете реализовать конечный автомат с несколькими процессорами, используя test + set и test + clr. Машины Тьюринга фантастически гибки; простые абстракции, такие как мьютексы, предназначены для того, чтобы ограничить эту гибкость чем-то понятным.

...