Как Linux работает одновременно 32-битной и 64-битной? Или это что-то обрабатывается в glibc? - PullRequest
6 голосов
/ 01 октября 2009

Как Linux одновременно 32-битный и 64-битный? Или это что-то обрабатывается в glibc?

Я использую CentOS 5.3, и это 64-битная версия; хотя я строю вещи для 64 бит и 32 бит. Из того, что я думаю, я знаю, что Windows предположительно имеет 32-битный эмулятор. Linux делает то же самое? Это в пространстве пользователя или в ядре?

Если libc справится с этим, это что-то вроде эмулятора, который говорит, что я буду связываться с 32-битными приложениями, но буду говорить с ядром 64-битным?

Ответы [ 3 ]

5 голосов
/ 01 октября 2009

Процессор может выполнять как 64-, так и 32-битные инструкции, а ядро ​​может переключаться между режимами. Единственным ограничением является то, что вы не можете связать 32-битные программы с 64-битными библиотеками, поэтому у вас должны быть установлены как 32-, так и 64-битные версии libc и т. Д.

3 голосов
/ 01 октября 2009

Ничто не мешает процессору переключиться с 64-разрядного на 32-разрядное. Он просто переключается.

У вас может быть 64-битное ядро ​​и 32-битные приложения. Вы даже можете иметь 32-битное ядро ​​и запускать 64-битные приложения (Mac OS X).

Однако вам нужно, чтобы используемые ими библиотеки также были 32-битными или 64-битными, поэтому вы можете увидеть файлы с именем lib64 или lib32 в linux для 64-битных или 32-битных библиотек.

1 голос
/ 01 октября 2009

Поскольку процессоры x86_64 разработаны на основе технологии x86, они по-прежнему способны поддерживать 32-разрядные программы без какой-либо аппаратной эмуляции, как, например, для запуска программ x86 в среде PowerPC или Sparc. В Linux все, что вам нужно сделать, это установить необходимые библиотеки программного обеспечения для запуска 32-разрядного программного обеспечения.

...