Если вы находитесь в 64-битном режиме, тогда сегментный регистр вообще отсутствует: содержимое CS, DS ... просто игнорируется.Адреса являются 64-битными значениями в «плоском» адресном пространстве.Сегментные регистры используются в 16-битном и 32-битном режимах, хотя большинство 32-битных ОС устанавливают, что все сегменты начинаются с адреса 0 и занимают более 4 ГБ, чтобы они могли забыть о них навсегда.Если вы используете регистры сегментов (так что код приложения может использовать несколько «сегментов»), то на уровне C компилятор C должен знать о них, и «указатель» будет включать в себя как значение сегмента, так и значение смещения.Установка сегментного регистра стоит дорого, поэтому, если вы можете обойтись без сегментов, производительность лучше.Это объясняет, почему 32-битные ОС, такие как Linux или Windows, не используют сегменты, и, соответственно, производители процессоров адаптировали и просто пропустили поддержку сегментов в 64-битном режиме.
Тогда возникает реальный вопрос: хотите ли вызащита памяти между приложениями?Защита памяти заключается в блокировании процесса от чтения или записи памяти, которую он не должен читать / записывать, а именно памяти, используемой другим процессом или ядром.Вы можете обойтись без памяти, защищенной от памяти, если прикладные программисты никогда не пишут код с ошибками (ммх ... насколько это правдоподобно?) или , если приложения написаны на языке, который включает систематические проверки, запрещающие недопустимый доступ к памяти (например, Java) (проект JNode был посвящен ОС на Java, но я не знаю, жива ли она еще).Чтобы получить защиту памяти, вы используете MMU .MMU работает по «страницам»: адресное пространство разбивается на страницы фиксированного размера (по 4 КБ каждая на x86), и ОС устанавливает таблицы в ОЗУ, которые сообщают MMU, где физически находится каждая страница.Пейджинг, дисковая виртуальная память ... используйте MMU.Но вы также можете использовать MMU «просто» для защиты памяти (вы устанавливаете его так, чтобы каждая страница либо присутствовала по виртуальному адресу, который равен ее физическому адресу, либо помечена как «отсутствующая», если доступ к этой странице в настоящее время отсутствуетразрешено).
Если не использовать MMU, это может повысить производительность в некоторых очень специфических ситуациях (я знаю кого-то, кто делал это для просеивания, как часть большого криптографически ориентированного вычислительного усилия: просеивание было почти100% случайного доступа к памяти в массиве 1 ГБ: MMU предполагал три пропуска кэша вместо одного на каждый доступ, поэтому обход без MMU делал все это в три раза быстрее - но это действительно крайний случай).С другой стороны, MMU облегчает жизнь разработчикам приложений, особенно потому, что позволяет каждому приложению иметь свое нормализованное адресное пространство (например, вы можете заранее скомпилировать и связать код C).