Почему делает Linux на 32-разрядных указателях использования sparc64 архитектуры в пространстве пользователя и 64-разрядных указателях в пространстве ядра?

Я думаю Ваш, уже открывают Ваши прекрасные файлы, но они находятся в отдельных буферах, и необходимо использовать :bn (или полный :bnext и :bprev) команды для навигации к следующим и предыдущим буферам в данной области.

3
27.05.2012, 15:51
3 ответа

Совместимость.

Во-первых, обратите внимание, что 64-разрядная поддержка Sun возвращается к 1998, с Солярисом 7, задолго до AMD64, и даже Itanium имел поддержку ОС. Путем поддержки и 32-разрядный и 64-разрядный в пространстве пользователя, Вы могли позволить подавляющему большинству программного обеспечения, запущенного абсолютно неизменный.

Проверьте Солярис 64-разрядное Руководство разработчика (датированный 2005). Во-первых, это отмечает, что существует действительно 2 отдельных системы:

Рабочая среда Solaris поддерживает два первоклассных ABIs одновременно. Другими словами, два отдельных, полностью функциональных системных вызова соединяют подключение каналом в 64-разрядное ядро. Два набора библиотек поддерживают приложения.

и затем неоднократно подчеркивает, что, если у Вас есть старый добрый C-код, который предполагает, что это является 32-разрядным, это будет работать просто великолепно - даже продолжают создавать очень хорошо, как будто ничто не изменяется:

Как обсуждено в Заканчивании Барьера на 4 гигабайта, большинство 32-разрядных приложений, запущенных неизменный в Солярисе 64-разрядная операционная среда.

...

Исходная совместимость уровня сохранялась для 32-разрядных приложений. Для 64-разрядных приложений основные изменения, которые были внесены, относительно производных типов, используемых в интерфейсе прикладного программирования.

Успешные технические переходы обычно сопровождаются изворотливыми гибридами и химерами, которые иногда живут мимо их полноценности.

4
27.01.2020, 21:10
  • 1
    Нет такой химеры (код на 64 бита с указателями на 32 бита) с Солярисом. Вопрос был исправлен. Это обращается к документу ядра Linux. –  jlliagre 27.05.2012, 20:09

Ответ на пересмотренный вопрос: Почему делает Linux на 32-разрядных указателях использования sparc64 архитектуры в пространстве пользователя и 64-разрядных указателях в пространстве ядра?

Это было, вероятно, сделано для сокращения размера кода оба двоичных файла и время выполнения, поскольку указатели используют половину размера в памяти при хранении других преимуществ, 64-разрядный режим имеет. Конечно, недостаток является ограничением размера виртуальной памяти к 4 ГБ, но это было меньшим количеством проблемы семь лет назад, чем сегодня.

На AMD64 (иначе x86_64) архитектура, 32-разрядные указатели в 64 разрядных режимах являются текущим проектом: Двоичный интерфейс приложений System V X32. Интерес выше с этим семейством процессоров, поскольку Вы также имеете больше регистров в наличии когда в 64-разрядном режиме и использовании их вместо приложений ускорения памяти.

4
27.01.2020, 21:10

Согласно документу Вы отправили ссылку на, Солярис x86_64 архитектура не использует 32-разрядные указатели в пространстве пользователя и 64-разрядные указатели в пространстве ядра.

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

И 32 бита (ILP32) и модели (LP64) на 64 бита поддерживаются на Солярисе 10 и более новые, независимо от используемой архитектуры ЦП на 64 бита (x86_64 или UltraSPARC/SPARC64) и в 64-разрядной модели нет никаких 32-разрядных указателей. Для получения дополнительной информации взгляните на Солярис 64-разрядное Руководство разработчика.

На SPARC Солярис поддерживает двоичные файлы/указатели на 64 бита с тех пор 2.7 (1998).

1
27.01.2020, 21:10
  • 1
    "Интересно отметить, что выполнения архитектуры SPARC 64 с 32-разрядным пространством пользователя, таким образом, указатели 32 бита шириной там, даже при том, что они 64 бита шириной в пространстве ядра". - Я по ошибке упомянул x86_64 вместо SPARC. –  gjain 27.05.2012, 13:02
  • 2
    Предоставленный. Точка является этим документом, не относится к Солярису, но Linux, работающему на 64-разрядном SPARC. Что Ваше требование вопроса неточно. Вы могли бы хотеть перефразировать свой вопрос: "Почему архитектура Linux sparc64 использует 32-разрядные пуанты в пространстве пользователя и 64-разрядные указатели в пространстве ядра". –  jlliagre 27.05.2012, 15:30
  • 3
    Вы правы... Я перефразировал вопрос и изменил теги. –  gjain 27.05.2012, 15:54
  • 4
    Вы правы... Я перефразировал вопрос и изменил теги. –  gjain 27.05.2012, 15:54

Теги

Похожие вопросы