Проблемы в модели «многие ко многим» в операционной системе

Я прочитал книгу «Многие ко многим в операционной системе» Авраама Зильбершатца. В главе 4 говорится, что

"Операционная система Solaris поддерживала модель "многие ко многим" в более ранних версиях, чем Solaris 9. Однако, начиная с Solaris 9, эта система использует модель "один к одному".

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

  1. какие проблемы с моделью "многие ко многим"?
  2. Почему происходит переход от модели «многие ко многим» к модели «один к одному»?

person Hamza Zafeer    schedule 21.02.2016    source источник


Ответы (1)


Я работал только с системами, реализующими то, что некоторые называют моделью один к одному. Эта классификация один-к-одному/многие-ко-многим/и многие-к-одному ИМХО вводит в заблуждение.

Здесь предполагается, что в модели «один к одному» каждый поток действительно создает два потока: поток режима ядра и поток пользовательского режима. На самом деле все, что нужно, это один поток, который может работать как в пользовательском режиме, так и в режиме ядра (т. е. стек режима ядра).

Преимущество потока, который может работать как в режиме ядра, так и в пользовательском режиме (возможно, и в других режимах, также известных как модель «один к одному»), заключается в том, что потоки могут работать полностью независимо и, вероятно, его проще реализовать. Каждый поток может войти в режим ядра (например, выполнить ввод-вывод), не блокируя другие потоки. Предполагаемый недостаток заключается в том, что для этого требуется, чтобы каждый поток имел свой собственный стек режима ядра.

Опять же, я не работал с системами «многие-к-одному» или «многие-ко-многим», но подозреваю, что они реализованы не с отдельными потоками режима ядра, а скорее со структурами данных режима ядра, которые совместно используются несколькими потоками.

какие проблемы с моделью «многие ко многим»?

Очевидным недостатком методов «многие ко многим» и «многие к одному» является то, что режим ядра становится ресурсом, недоступность которого может привести к тому, что одна группа потоков заблокирует другую группу потоков.

Допустим, у вас есть 3 «потока» режима ядра и 10 потоков пользовательского режима. Если 4 потока пользовательского режима попытаются выполнить ввод-вывод одновременно, 4-й поток будет заблокирован до тех пор, пока не завершится один из первых трех потоков.

Его также сложнее реализовать, потому что вам придется управлять «потоками» режима ядра как ресурсами.

Почему происходит переход от модели «многие ко многим» к модели «один к одному»?

Я не могу придумать никакого практического преимущества «один ко многим» или «многие ко многим» и могу придумать множество недостатков (см. выше). Наверное, поэтому и был сдвиг.

Тем не менее, ИМХО, это запутанный способ объяснить многопоточность.

person user3344003    schedule 22.02.2016