Как выполняется проверка границ сегментации памяти?

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

1 ответ

Решение

Все современные языки выполняют проверку границ в программном обеспечении, помимо проверки границ сегментов и поиска карт памяти. Один тест предполагает, что накладные расходы составляют около 0,5%. Это небольшая цена за стабильность и безопасность.

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

Тем не менее, вы можете просто запустить в 64-битном режиме: "Процессор не выполняет проверки ограничения сегмента во время выполнения в 64-битном режиме" (руководство разработчика Intel, 3.2.4).

Другие вопросы по тегам