Як відбувся перехід на 64 біти в Linux


15

Як здійснювався перехід на 64 біти в Linux / Unix? У світі Windows все ще є проблеми з цим, і мені цікаво, як з ним працювали у світі * nix.


З літаючими кольорами.
Каз

Відповіді:


12

Робота, необхідна для створення ядра 64-бітного ядра, була виконана довгий час назад, використовуючи системи DEC Alpha. Однак програми - це інша справа.

Загальний консенсус, який я бачив досі, здається:

  • Окремі /libта /lib64каталоги для систем, які мають змішані двійкові файли
  • Компілювати як 64-розрядний; якщо компіляція не вдається, перекомпілюйте як 32-бітну, поки джерело не може бути очищено для 64-бітного.

Крім цього, ви насправді не збираєтесь побачити цілу масу "горя" від змішаних 32/64 бітових складок.


Плюс символізує збереження постійних та послідовних двійкових імен.
geoffc

і у нас є те, що називається multilib alien.slackbook.org/dokuwiki/doku.php?id=slackware:multilib
phunehehe

Чи можете ви назвати будь-яку програму в Linux, яку можна компілювати, але тільки на 32-бітній?
Maciej Piechotka

@Maciej Piechotka: не думаю, що залишилось багато таких. Я думаю, що я пам'ятаю, що OpenOffice.org був складним, але це було зворотним шляхом, коли почалася конверсія в 64-бітну. Крім цього: мабуть, Flash Player складний: P
wzzrd

З моменту компіляції Flash Player;) gnash / lightspark працює на 64-розрядних версіях, але Adobe Flash Player є нормальним.
Maciej Piechotka

8

Windows і * ix використовували різні моделі даних для переходу. Ця сторінка UNIX.org трохи стара, але вона все ще забезпечує хороший огляд компромісів (зауважте, що long longпізніше було додано до C99 і повинно бути принаймні 64-бітним). Ви також можете побачити статтю у Вікіпедії на ту саму тему. Як виступає в кінці статті UNIX.org, більшість UNIX-подібних системах , пішли з LP64, а це значить long, long longі покажчики, все 64-розрядні.

Windows поставилася з моделлю даних LLP64, що означає, що лише long longта покажчики - 64-розрядні. longзалишається 32-розрядною. Частина причини полягала в тому, що вони не хотіли пройти і виправити зламаний код, який вважав, що він longвідповідає int.


2
Також було багато дискусій у світі Unix. Одним із аргументів на користь додавання "long long" було те, що там надто багато коду, який передбачав, що "long" - 32 біта. (Принаймні, в конкретному аргументі я потрапив на comp.std.c не надто довго до стандарту C99.)
Девід Торнлі

2

Оскільки дистрибутиви Linux є, головним чином, OpenSource, там вже зроблено істотний перехід. Якщо ви не використовуєте належне програмне забезпечення (наприклад, скайп), ви можете запускати чисту 64-бітну систему без недоліків.

Однак реальна відмінність IMHO є більш правильним порівняно з відкритим, а потім з Unix проти Windows, оскільки це зазвичай програмне забезпечення з відкритим кодом, яке переноситься спочатку (деякому волонтеру потрібно щось перекомпілювати - можливо, виправити деякі проблеми з компіляцією) - або в більшості випадків не переноситься на все, окрім лише перекомпільованого;) - та власне, що переноситься останньою.

Можливо, додатково в Linux ви маєте репост, тому установка обробляється автоматично - вам не потрібно вибирати 64-бітну або 32-бітну версію (система вибирає вашу автоматично). У Windows завантажуються програми, що мають окремі 64-розрядні та 32-розрядні версії:

  • Подвоює розмір файлів на сервері
  • Вимагає від користувача знати його / її версію. Або навіть те, що вони чимсь відрізняються

Я думаю, що це причина, чому двійкові файли Windows, як правило, 32-бітні - це один розмір, і не всі перейшли до 64-бітної версії.


2

Насправді спробуйте "Довгу дорогу до 64 біт" на черзі ACM: http://queue.acm.org/detail.cfm?id=1165766, яку пізніше підхопили Комунікації ОСБ. Першим 64-розрядним мікрофоном був MIPS R4000, що поставляється в SGI Crimson 1Q1992, грудень Dec Alphas, що постачається наприкінці того ж року.

R4000s спочатку працювали в 32-бітному режимі, потім пізніше в режимі 64/32, тобто 64-бітної ОС, 64 або 32-бітових кодів користувачів. Альфи завжди працювали UNIX лише в 64-бітних (розумний вибір, оскільки не було встановленої бази 32-бітних додатків.)

Пізніше, в 1990-х, SGI доклав зусиль до 64-розрядного Linux (для запуску на Itaniums), приблизно в той час, коли XFS переносився на Linux (він дуже хотів 64-розрядних).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.