64bitowy świat

Zawsze i wszedzie popieram szescdziesiecioczterobitowe rozwiazania i jestem w pelni swiadomy, ze nie ma przed nimi ucieczki. O osmiobitowych aplikacjach nikt juz nie pamieta, szesnastobitowe jeszcze sie bronia w ostatnich okopach, ale 64 bity pewnie niedlugo zaczna królowac.

Choc sama idea jest wielce sluszna, jak zwykle realia troche rozczarowuja. Dzieje sie tak z wielu róznych powodów, a wsród róznych dziwnych potkniec o 64 bity wymienic mozna:

  • Sterowniki. Wymieniam na poczatku listy, bo ich slawa jest ogromna a powszechnie slyszane plotki sprawiaja wrazenie, ze problem dotyka kazdego i na kazdym kroku. Tymczasem realia nie sa az takie tragiczne i wspólczesny sprzet zazwyczaj zupelnie dobrze radzi sobie z systemami w wersji x64. Albo odwrotnie.
  • DLLki, biblioteki, ActiveX i inne pluginy. W systemach Windows nie mozna mieszac w jednym procesie watków 32 i 64 bit. Nie jest to bardzo zaskakujace zjawisko, ale w praktyce, skutki moga okazac sie dotkliwe. Dotyczy to wszystkich tych sytuacji, kiedy aplikacja (dawniej wystepujaca tylko w wersji 32 bit) jest otwarta na rózne rozszerzenia. Dobrym (i znanym) przykladem jest tu Adobe Flash. Jezeli uruchomimy przegladarke w wersji 64 bit, to Flash dzialac nie bedzie. Podobnie jak cala masa innych pluginów. Identyczna sytuacja jest z Office 2010 czy nawet kawalkami systemu takimi jak IIS czy biblioteki ladowane przez LSA. W efekcie, niektóre calkiem uzyteczne nieraz rzeczy dzialac nie chca, dopóki nie zostana przerobione albo co najmniej przekompilowane.
  • Wirtualizacja rejestru. Pozornie, sieganie do rejestru jest proste. Wystarczy podac nazwe klucza i mozna sobie po nim czytac i pisac. Tyle, ze system w wersji x64 wykrywa, trzydziestodwubitowe aplikacje i "po cichu" przekazuje im odwolania do rejestru do specjalnego klucza WOW64. Oznacza to, ze aplikacja jest pewna, ze cos w rejestrze zapisala, podczas gdy inni nic o tym nie wiedza. Wynika z tego troche ciekawych sytuacji, na przyklad, gdy mamy jakas wiekowa aplikacje "tuningowa", która rzezbi cos po kluczach winlogon i podobnych. Aplikacja dziala swietnie, ale system nic o tych ustawieniach sie nie dowie. Tak swoja droga, w kodzie aplikacji wystarczyloby zrobic OR z wartoscia KEY_WOW64_64KEY i system przestalby robic przekierowania.
  • Wirtualizacja systemu plików. Widoczna jeszcze rzadziej niz wirtualizacja rejestru, ale i o nia mozna sie potknac. Ostatnio udalo mi sie to w sytuacji, gdy na laboratoryjnej maszynie mialem w folderze system32 pare plików DLL i chcialem przekazac do innego komputera przez Live Mesh. Okazalo sie, ze przekazalem zupelnie inne pliki, za to o tej samej nazwie. Dlugo trwalo nim doszedlem, dlaczego moja aplikacja nie chce dzialac.
  • Pliki wykonywalne w wersji x64 sa wieksze i zajmuja wiecej pamieci. Róznica jest niewielka, ale dla przyzwoitosci wypada o niej wspomniec. Wynika to przede wszystkim z róznicy w dlugosci wskazników.

Podsumowujac? 64 bity sa nieunikniona przyszloscia i jakos daje sie z nimi zyc. Czy wybrac system 32 czy 64 bity? Jezeli zalozymy, ze faktycznie mamy wybór, to odpowiedz nie jest taka prosta. Skupilem sie na wadach x64, pomijajac dosc istotne zalety, jakimi jest nieporównanie lepsze zarzadzanie pamiecia i troche wyzsze bezpieczenstwo. Poza tym, caly swiat zmierza w kierunku x64.

Jezeli nie ma jednoznacznych technicznych przeslanek, to wybór uzaleznilbym tak naprawde od cech charakteru. Jak ktos ma ochote spróbowac, sprawdzic, chce wiedziec, chce byc w czolówce – koniecznie 64 bity. Nie bedzie rozczarowany. Jezeli jednak komus blizsze jest zamilowanie do swietego spokoju a rozpoznanie nowosci pozostawia innym, zeby przyjsc na gotowe i dobrze sprawdzone – 32 bity nie sa takim zlym pomyslem. Co kto lubi :)

Autor: Grzegorz Tworek [MVP]