
¿Cómo se manejó la transición a 64 bits en Linux/Unix? El mundo de Windows todavía parece tener problemas y tengo curiosidad por saber cómo se manejó en el mundo *nix.
Respuesta1
El trabajo requerido para hacer que el kernel sea de 64 bits se realizó unmuuuuchohace tiempo usando sistemas DEC Alpha. Los programas, sin embargo, son un asunto diferente.
El consenso general que he visto hasta ahora parece ser:
- Directorios separados
/lib
y/lib64
para sistemas que tienen binarios mixtos - Compilar como 64 bits; Si la compilación falla, vuelva a compilar como 32 bits hasta que la fuente pueda borrarse para 64 bits.
Aparte de eso, realmente no verás mucho "dolor" por las compilaciones mixtas de 32/64 bits.
Respuesta2
Windows y *ix utilizaron diferentes modelos de datos para la transición. Este UNIX.orgpáginaes un poco antiguo, pero aún proporciona una buena descripción general de las compensaciones (tenga en cuenta que long long
luego se agregó a C99 y se requería que fuera de al menos 64 bits). También puedes ver unArtículo de Wikipediasobre el mismo tema. Como se recomienda al final del artículo de UNIX.org, la mayoría de los sistemas tipo UNIX han optado por LP64, lo que significa que long
los long long
punteros, y son todos de 64 bits.
Windows optó por lo que se llama el modelo de datos LLP64, lo que significa que sólo long long
los punteros y son de 64 bits. long
sigue siendo de 32 bits. Parte de la razón era simplemente que no querían revisar y arreglar el código roto que se suponía long
encajaba en un archivo int
.
Respuesta3
Como las distribuciones de Linux son en su mayoría de código abierto, la transición ya se ha realizado en gran medida. A menos que utilice software propietario (como Skype), puede ejecutar un sistema puro de 64 bits sin ninguna desventaja.
Sin embargo, la verdadera diferencia en mi humilde opinión es más propiedad frente a abierto que Unix frente a Windows, ya que generalmente es el software de código abierto el que se porta primero (algunos voluntarios necesitan volver a compilar algo, tal vez solucionar algunos problemas de compilación), o en la mayoría de los casos no se portan en casi recién recompilado;) - y propiedad que se porta en último lugar.
Posiblemente, además, en Linux tenga repositorios, por lo que la instalación se realiza automáticamente; no necesita elegir la versión de 64 o 32 bits (el sistema elige la suya automáticamente). En Windows, los programas se descargan y tienen versiones separadas de 64 y 32 bits:
- Duplica el tamaño de los archivos en el servidor
- Requiere que el usuario conozca su versión. O incluso que se diferencian en algo
Supongo que esa es la razón por la que los archivos binarios de Windows suelen ser de 32 bits: es universal y no todos han optado por la versión de 64 bits.
Respuesta4
De hecho, pruebe "El largo camino hacia los 64 bits" en ACM Queue: http://queue.acm.org/detail.cfm?id=1165766 Esto fue recogido más tarde por Comunicaciones de la ACM. El primer micro de 64 bits fue MIPS R4000, enviado en SGI Crimson en el primer trimestre de 1992 y Dec Alphas enviado a finales de ese año.
Los R4000 se ejecutaban al principio en modo de 32 bits y luego en modo 64/32, es decir, sistema operativo de 64 bits, códigos de usuario de 64 o 32 bits. Alphas siempre ejecutaba UNIX solo en 64 bits (una opción razonable, ya que no había una base instalada de aplicaciones de 32 bits).
Más tarde, en la década de 1990, SGI contribuyó a crear Linux de 64 bits (para ejecutarlo en Itaniums), aproximadamente en el momento en que XFS fue portado a Linux (realmente quería 64 bits).