¿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.
El trabajo requerido para hacer el kernel de 64 bits se realizó hace muuuucho tiempo usando sistemas DEC Alpha. Los programas, sin embargo, son un asunto diferente.
El consenso general que he visto hasta ahora parece ser:
Separado /liby /lib64directorios para sistemas que tienen binarios mixtos
Compilar como 64 bits; Si la compilación falla, recompile como 32 bits hasta que la fuente pueda borrarse para 64 bits.
Aparte de eso, realmente no vas a ver una gran cantidad de "dolor" de las versiones mixtas de 32/64 bits.
¿Podría nombrar algún programa en Linux que pueda compilarse pero solo en 32 bits?
Maciej Piechotka
@Maciej Piechotka: no creo que queden muchos. Creo que recuerdo que OpenOffice.org fue complicado, pero eso fue hace mucho tiempo cuando comenzó la conversión a 64 bits. Aparte de eso: aparentemente Flash Player es complicado: P
wzzrd
Desde cuando se compila Flash Player;) gnash / lightspark funciona en 64 bits, pero Adobe Flash Player es propiedad.
Maciej Piechotka
8
Windows y * ix utilizaron diferentes modelos de datos para la transición. Esta página de UNIX.org es un poco antigua, pero aún proporciona una buena visión general de las compensaciones (tenga en cuenta que long longmás tarde se agregó a C99, y se requería que tuviera al menos 64 bits). También puede ver un artículo de Wikipedia sobre el mismo tema. Como se propone en el extremo del artículo UNIX.org, lo más parecido a UNIX sistemas han ido con LP64, lo que significa long, long longy los punteros son todos de 64 bits.
Windows eligió lo que se llama el modelo de datos LLP64, lo que significa que solo los long longpunteros son de 64 bits. longsigue siendo de 32 bits. Parte de la razón era simplemente que no querían revisar y corregir el código roto que se suponía que longencajaba en un int.
Hubo mucho debate en el mundo de Unix, también. Uno de los argumentos a favor de agregar "largo largo" fue que había demasiado código que suponía que "largo" era de 32 bits. (Al menos en el argumento particular en el que me metí en comp.std.c no mucho antes del estándar C99.)
David Thornley
2
Como las distribuciones de Linux son en su mayoría de código abierto, ya se ha realizado una gran transición. A menos que utilice un software propio (como Skype), puede ejecutar un sistema puro de 64 bits sin inconvenientes.
Sin embargo, la verdadera diferencia en mi humilde opinión es más propietario 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 recompilar algo, tal vez solucionar algunos problemas de compilación), o en la mayoría de los casos no se transfieren a todo pero solo recompilado;) - y propiedad que se transfiere al último.
Posiblemente adicionalmente en Linux tenga repositorios para que la instalación se maneje de forma automática: no necesita elegir la versión de 64 bits o 32 bits (el sistema elige la suya automáticamente). En Windows, los programas se descargan y tienen versiones separadas de 64 bits y 32 bits:
Duplica el tamaño de los archivos en el servidor
Requiere que el usuario conozca su versión. O incluso que difieren en algo
Supongo que esa es la razón por la cual los binarios de Windows son generalmente de 32 bits: es de talla única y no todos han optado por la versión de 64 bits.
En realidad, intente "El largo camino hacia los 64 bits" en la cola de ACM:
http://queue.acm.org/detail.cfm?id=1165766
Eso fue recogido más tarde por Communications of the ACM. El primer micro de 64 bits fue MIPS R4000, enviado en SGI Crimson 1Q1992, Dec Alphas enviado a finales de ese año.
Los R4000 se ejecutaban primero en modo de 32 bits, luego más tarde en modo de 64/32, es decir, SO de 64 bits, códigos de usuario de 64 o 32 bits. Alphas siempre ejecutó 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ó con el esfuerzo de Linux de 64 bits (para ejecutarse en Itaniums), aproximadamente cuando XFS fue portado a Linux (realmente quería 64 bits).
Respuestas:
El trabajo requerido para hacer el kernel de 64 bits se realizó hace muuuucho tiempo usando sistemas DEC Alpha. Los programas, sin embargo, son un asunto diferente.
El consenso general que he visto hasta ahora parece ser:
/lib
y/lib64
directorios para sistemas que tienen binarios mixtosAparte de eso, realmente no vas a ver una gran cantidad de "dolor" de las versiones mixtas de 32/64 bits.
fuente
multilib
alien.slackbook.org/dokuwiki/doku.php?id=slackware:multilibWindows y * ix utilizaron diferentes modelos de datos para la transición. Esta página de UNIX.org es un poco antigua, pero aún proporciona una buena visión general de las compensaciones (tenga en cuenta que
long long
más tarde se agregó a C99, y se requería que tuviera al menos 64 bits). También puede ver un artículo de Wikipedia sobre el mismo tema. Como se propone en el extremo del artículo UNIX.org, lo más parecido a UNIX sistemas han ido con LP64, lo que significalong
,long long
y los punteros son todos de 64 bits.Windows eligió lo que se llama el modelo de datos LLP64, lo que significa que solo los
long long
punteros son de 64 bits.long
sigue siendo de 32 bits. Parte de la razón era simplemente que no querían revisar y corregir el código roto que se suponía quelong
encajaba en unint
.fuente
Como las distribuciones de Linux son en su mayoría de código abierto, ya se ha realizado una gran transición. A menos que utilice un software propio (como Skype), puede ejecutar un sistema puro de 64 bits sin inconvenientes.
Sin embargo, la verdadera diferencia en mi humilde opinión es más propietario 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 recompilar algo, tal vez solucionar algunos problemas de compilación), o en la mayoría de los casos no se transfieren a todo pero solo recompilado;) - y propiedad que se transfiere al último.
Posiblemente adicionalmente en Linux tenga repositorios para que la instalación se maneje de forma automática: no necesita elegir la versión de 64 bits o 32 bits (el sistema elige la suya automáticamente). En Windows, los programas se descargan y tienen versiones separadas de 64 bits y 32 bits:
Supongo que esa es la razón por la cual los binarios de Windows son generalmente de 32 bits: es de talla única y no todos han optado por la versión de 64 bits.
fuente
En realidad, intente "El largo camino hacia los 64 bits" en la cola de ACM: http://queue.acm.org/detail.cfm?id=1165766 Eso fue recogido más tarde por Communications of the ACM. El primer micro de 64 bits fue MIPS R4000, enviado en SGI Crimson 1Q1992, Dec Alphas enviado a finales de ese año.
Los R4000 se ejecutaban primero en modo de 32 bits, luego más tarde en modo de 64/32, es decir, SO de 64 bits, códigos de usuario de 64 o 32 bits. Alphas siempre ejecutó 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ó con el esfuerzo de Linux de 64 bits (para ejecutarse en Itaniums), aproximadamente cuando XFS fue portado a Linux (realmente quería 64 bits).
fuente