Как выполняется проверка границ сегментации памяти?
Согласно статье в Википедии о сегментации памяти, процессоры x86 выполняют аппаратную проверку границ сегментации. Существуют ли системы, которые выполняют проверку границ в программном обеспечении? Если да, то какие накладные расходы это несет? В аппаратных реализациях, есть ли способ пропустить проверку границ, чтобы избежать штрафа (если есть штраф)?
1 ответ
Все современные языки выполняют проверку границ в программном обеспечении, помимо проверки границ сегментов и поиска карт памяти. Один тест предполагает, что накладные расходы составляют около 0,5%. Это небольшая цена за стабильность и безопасность.
486 может загружать ячейку памяти за один цикл, а процессоры только лучше справляются с обработкой на кристалле, поэтому маловероятно, что проверка границ сегментации вообще будет иметь какие-либо издержки.
Тем не менее, вы можете просто запустить в 64-битном режиме: "Процессор не выполняет проверки ограничения сегмента во время выполнения в 64-битном режиме" (руководство разработчика Intel, 3.2.4).