Вопрос Разница между загрузкой i386 и amd64?


В чем разница между стандартной загрузкой i386 и загрузкой amd64 Ubuntu 11.04? В настоящее время я запускаю i386 на amd-машине, будет ли моя система работать лучше с загрузкой amd64? (моя машина работала под управлением Windows 7 64bit, но я не смотрел, что до установки Ubuntu).


149
2017-07-23 23:57


происхождения


Связанный (но не дубликат): Является ли 64-разрядная версия Ubuntu совместимой только с процессорами AMD? - Eliah Kagan
Смотрите также: В чем разница между 32-битным и 64-битным, и какой из них выбрать? - Wilf


ответы:


i386 относится к 32-разрядной версии, а amd64 (или x86_64) относится к 64-разрядной версии для процессоров Intel и AMD.

Запись в i386 Википедии:

Intel 80386, также известный как i386 или всего 386, был 32-разрядным микропроцессором, представленным Intel в 1985 году ... В зависимости от контекста это называется x86, IA-32 или i386-архитектура.

Запись в x86_64 Википедии:

x86-64 является расширением набора команд x86. Он поддерживает значительно большие виртуальные и физические адресные пространства, чем это возможно на x86, что позволяет программистам удобно работать с гораздо большими наборами данных ... После запуска архитектуры под названием «x86-64» AMD переименовала ее в AMD64 ... x86 -64 по-прежнему используется многими в отрасли в качестве нейтрального поставщика, в то время как другие, в частности Sun Microsystems (теперь Oracle Corporation) и Microsoft, используют x64.

Даже если у вас есть процессор Intel, вы должны использовать AMD64 для установки 64-битного на вашем компьютере (он использует одни и те же наборы инструкций).

Я настоятельно рекомендую использовать его. По большей части вы не заметите разницы, но для больших рабочих нагрузок (например, для редактирования видео, игр и т. Д.) Компьютер будет работать быстрее (компьютер имеет возможность вычислять 2 + 2 + 2 = 6 вместо того, чтобы делать 2 + 2 = 4 + 2 = 6 в примере). В мире Windows 32-разрядная ОС не позволит вам использовать более 3,5 гигабайт ОЗУ на вашем компьютере (даже если у вас есть 8!). Чтобы полностью использовать всю оперативную память, вам необходимо использовать 64-разрядную ОС. Однако для Linux такого предела нет (спасибо, Uri).

Несмотря на это, мир переместился с 32 бит, и он существует только для поддержки старых машин, которые не могут работать на 64 бит.


150
2017-07-24 00:00



Эта последняя часть, теперь (в Linux, конечно). Просто неправда, вы можете использовать более 3,5 ГБ ОЗУ с ядром PAE в 32 бит. - Uri Herrera
не будет ли 3,5-гигабайтное ограничение на 32-битное значение 4gbs - <память графической карты>? - Chriskin
Для простоты я пропустил такие технические характеристики, как память графической карты. Моя цель состояла в том, чтобы сказать «если у вас более 3,5-4 концертов, используйте 64 бит».
@Treefroginc Какие точные твики? - Uri Herrera
64 бит - каждый бит, который можно использовать и стабильно, как 32 бит, с почти незначительным исключением Flash при определенных обстоятельствах в течение определенного времени суток, и если планеты выравнивают выдачу космических лучей.


Архитектура названа в честь AMD, потому что AMD изобрела ее,   Athlon 64. Аналогично, 32-битная архитектура i386 названа в честь   Intel 386, потому что он был первым в своем роде, но i386   также будет работать на процессорах AMD. Так что да, вы можете использовать этот образ ISO.

Источник:  https://superuser.com/questions/128482/ubuntu-amd64-vs-i386


40
2018-05-31 21:00





да, вы можете установить бит amd64 на процессор Intel 64 бит. AMD изобрела процессор с процессором x86-64 бит, поэтому это просто дань памяти AMD.


9
2018-05-31 21:23



Спасибо, что прояснили это. Я знаю, что это был простой вопрос, но я не мог найти ответ нигде. - Dave Wolover


Да, вы можете использовать этот .ISO. amd64 относится к архитектуре. AMD первой создала 64-битный процессор, поэтому я считаю, что он был назван в то время, и имя застряло. Это кажется немного запутанным, но amd64 просто означает 64-битный.


6
2018-05-31 20:59



Они не были первыми, кто создал 64-битный процессор. У Intel был один, но он не был обратно совместимым, поэтому он не получил широкого распространения. Название amd64 состояло в том, чтобы отличать архитектуру AMD от IA64 от Intel, которая теперь прекращена. - psusi


Разница между amd64 а также i386 в том, что amd64 является 64-битный в то время как i386 является 32-битный, Это ширина (в битах) регистров, доступных в ядре.

В основном наибольшее число, которое 32-разрядное ядро ​​процессора может обрабатывать за один раз, составляет чуть более 4,29 миллиарда, в то время как 64-битное ядро ​​может обрабатывать несколько бит более 18,44 миллиарда, миллиард.

Сердечники на современных ПК способны вести себя как 64-разрядный или 32-разрядный процессор в зависимости от версии установленной операционной системы.

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

Компиляция на 32-битной системе приведет к созданию другого кода, чем 64-разрядная система. Вы можете это доказать, составив код сборки в двух системах. Предполагая, что ваш файл C myfile.c пытаться gcc -S myfile.c на обеих системах и сравнить мои файлы

Хорошо написанный код для 32-битной системы должен компилироваться и запускаться на 64-битной системе, но не весь код хорошо написан. Многие программисты делают предположения о системе, которые могут быть неверными: например, ширина регистров или порядок байтов.

Без доступа к исходному коду трудно понять, в чем проблема, но segmenation fault указывает, что была сделана попытка доступа к памяти, которая не принадлежит программе. Это может, например, указать, что mem_ptr это 32-разрядный указатель, который отлично подходит для 32-разрядной системы, но должен быть 64-разрядным указателем на 64-битной системе.


6
2018-03-18 13:24



я проверю его и вернусь к этому ... Thankx - bikram990
realloc(mem_ptr, 0) функция освобождает память, ранее выделенную malloc, callocи т. д. Если этот указатель был поврежден каким-либо образом, тогда вы пытаетесь освободить память, которой вы не владеете, и это порождает ошибку сегментации - Warren Hill