Какие проблемы во время выполнения возникают при использовании защиты / подкачки памяти на уровне потоков? - PullRequest
2 голосов
/ 18 мая 2010

Ладно, сегодня мы поддерживаем разбиение на страницы / защиту памяти для каждого процесса. В течение многих лет я размышлял о том, какую выгоду можно получить, предлагая защиту на уровне страниц тому, что, возможно, является наименьшим исполнительным модулем, поддерживаемым нашими ОС сегодня: потоками. Этот вопрос о программной транзакционной памяти выдвинул его на первый план для меня.

Преимущества владения потоками на уровне страниц

  • Поддержка ОС для блокировки страницы при доступе
  • Теоретически, защита от повреждения памяти, если в ОС был механизм, позволяющий получить право собственности на время жизни потока.

Недостатки:

  • Обнаружение взаимоблокировки со стандартным Техника блокировки уже достаточно сложно
  • отладчик / OS поддержка определения уровня страницы владение

Есть ли другие недостатки, которые вы можете увидеть, поддерживая такую ​​модель?

Ответы [ 2 ]

1 голос
/ 09 февраля 2016

Защита памяти на страницу для каждой страницы может использоваться для эффективной реализации параллельной сборки мусора .

Проблема, которую необходимо решить, заключается в том, что для сбора области памяти сборщику мусора необходим эксклюзивный доступ к этой области, в противном случае другие потоки (так называемые потоки mutator ) смогут читать и писать объекты, которые не находятся в согласованном состоянии (например, на полпути после копирования из oldspace в Газета ).

С защитой памяти для каждого потока сборщик мусора может контролировать доступ к области памяти, так что только поток сборщика может получить к ней доступ; попытки других потоков получить доступ к области памяти приведут к ошибкам сегментации, которые могут быть обработаны сборщиком (например, путем блокировки потока, пока сборщик не завершит работу с этой областью).

1 голос
/ 18 мая 2010

Этот тип модели программирования уже возможен с процессами и общей памятью. По понятной причине он мало используется: межпроцессная передача сообщений гораздо безопаснее и легче рассуждать.

...