Как linux может быть одновременно 32-битным и 64-битным?Или это что-то обрабатывается в glibc?
-
19-09-2019 - |
Вопрос
Как Linux может быть одновременно 32-битным и 64-битным?Или это что-то обрабатывается в glibc?
Я запускаю CentOS 5.3, и это "64-разрядная" версия;хотя я создаю вещи для 64-битных и 32-битных версий.Из того, что я, кажется, знаю, в Windows предположительно есть 32-битный эмулятор.Делает ли Linux то же самое?Находится ли это в пользовательском пространстве или в пространстве ядра?
Если libc обрабатывает это, это что-то вроде эмулятора, который говорит: "я свяжусь с 32-разрядными приложениями, но буду использовать 64-разрядную версию для ядра"?
Решение
Центральный процессор может выполнять как 64, так и 32-битные инструкции, а ядро может переключаться между режимами.Единственное ограничение заключается в том, что вы не можете связать 32-битные программы с 64-битными библиотеками, поэтому у вас должны быть как 32, так и 64-битные версии libc и т.д.установлен.
Другие советы
Ничто не мешает процессору переключиться с 64-битного на 32-битный.Он просто переключается.
У вас может быть 64-разрядное ядро и запускаться 32-разрядные приложения.У вас даже может быть 32-разрядное ядро и запускаться 64-разрядные приложения (Mac os x).
Однако вам нужно, чтобы библиотеки, которые они используют, также были 32-битными или 64-битными, вот почему вы можете увидеть файлы с именами lib64 или lib32 в linux для 64-битных или 32-битных библиотек.
Поскольку процессоры x86_64 разработаны по сравнению с технологией x86, они все еще могут поддерживать 32-разрядные программы без какого-либо оборудования, например, что вам нужно для запуска программ X86 в среде PowerPC или SPARC. В Linux все, что вам нужно сделать, это установить необходимые программные библиотеки для запуска 32-разрядного программного обеспечения.