2

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

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

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

  1. В чем проблема со многими для многих моделей?
  2. Зачем переходить от многих моделей к одной модели?

ответ

1

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

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

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

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

В чем проблема со многими для многих моделей?

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

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

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

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

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

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

Смежные вопросы