Gdy jeden musi równać się dwa (czyli kompresja dysku w praktyce)

W twierdzeniu, że każdy, nawet największy dysk okazuje się w końcu zbyt mało pojemny, a każdy procesor za wolny w działaniu nie ma chyba ani cienia przesady. Wystarczy wspomnieć, iż nie dalej niż dwa lata temu, komputer typu AT z 40 MB dyskiem twardym i 1 MB RAM uznawany był przez wielu z nas za wielce komfortowe narzędzie. Czasy się jednak zmieniły. Wystarczyło bowiem by naszymi desktopami (i nie tylko) na dobre zawładnęło środowisko MS Windows, a już rozglądamy się za systemami, których zasoby są kilkunasto-, jeśli nie kilkudziesięciokrotnie większe niż wówczas.

W twierdzeniu, że każdy, nawet największy dysk okazuje się w końcu zbyt mało pojemny, a każdy procesor za wolny w działaniu nie ma chyba ani cienia przesady. Wystarczy wspomnieć, iż nie dalej niż dwa lata temu, komputer typu AT z 40 MB dyskiem twardym i 1 MB RAM uznawany był przez wielu z nas za wielce komfortowe narzędzie. Czasy się jednak zmieniły. Wystarczyło bowiem by naszymi desktopami (i nie tylko) na dobre zawładnęło środowisko MS Windows, a już rozglądamy się za systemami, których zasoby są kilkunasto-, jeśli nie kilkudziesięciokrotnie większe niż wówczas.

Obecnie jednak, nawet gdy kupimy komputer znacznie wydajniejszy i na dodatek wyposażony w dysk o pojemności rzędu kilkuset megabajtów, nie możemy już spać tak spokojnie jak niegdyś. Jest bardzo prawdopodobne przecież, że np. kolejna wersja Excela, czy Worda "pożre" nie 15 lecz 30 MB lub więcej wolnego miejsca na twardym dysku, a to z kolei oznacza, że prędzej czy później każdy z nas zacznie się rozglądać za mniej kosztownymi sposobami na sprostanie wymogom współczesnego software.

Złote środki?

Jednym z ciekawszych sposobów radzenia sobie z problemem braku wolnego miejsca w urządzeniach pamięci masowej jest stosowanie programów służących do kompresji danych w czasie rzeczywistym. Kilka z nich, np. SuperStor, Double Disk, czy Stacker, wytwarzane jest od lat przez niezależnych producentów. Pewne tego typu mechanizmy posiada również DR DOS (uproszczony SuperStor) bodaj od piątej wersji wzwyż. Ostatnio zaś do grona wytwórców kompresorów dysków dołączył wszechobecny Microsoft oferując nam w MS-DOS 6.0 nieco odmienną pod względem funkcjonalnym, choć opartą na podobnej zasadzie działania, "metodę oszczędnościową", która nosi

nazwę Double Space.

Przypomnijmy może najpierw jak działają takie programy. Pakiet upakowujący zakłada na twardym dysku duży ukryty, plik systemowy (o nazwie np. STACVOL.DSK, DBLSPACE.BIN, itp.), który jest przez użytkownika widziany jako dodatkowy dysk. W przypadku zaś, gdy zdecydowaliśmy się upakować dysk startowy systemu, litery dysku fizycznego i tego, który został utworzony przez kompresor są zamieniane między sobą miejscami za sprawą stosownego sterownika.

Z technicznego punktu widzenia wszystkie kompresory działają raczej podobnie. Można np. ogólnie o nich powiedzieć, że stosują jakąś odmianę algorytmu Lempel-Ziv, że po ich zastosowaniu następuje mniej więcej podwojenie pojemności naszego dysku oraz, że cała sprawa odbywa się kosztem zajęcia ok. 30-60 kB pamięci RAM, gdyż tyle zazwyczaj potrzebuje sterownik ładowany z pliku CONFIG.SYS. Pewnym wyjątkiem jest w tym przypadku program Double Space, którego driver DBLSPACE..SYS jest ładowany przez IO.SYS, co pozwala uniknąć np. dublowania plików potrzebnych systemowi w chwili startu.

Nie inaczej jest też ze skutecznością działania poszczególnych kompresorów, choć z lektury prospektów reklamowych często można wywnioskować inaczej. Tak więc oprócz Stackera, do którego firma STAC Electronics produkuje opcjonalny koprocesor, w większości przypadków oferowane współczynniki kompresji wahają się w granicach od 1:1 do 1:16 w zależności od typu plików zapisanych na dysku (średnia dla mieszanki różnych plików wynosi ok. 1:2). Trudno więc doprawdy, poza zakresem wyposażenia w dodatkowe narzędzia, dopatrzyć się między tymi programami jakichś znaczących różnic. Choć, oczywiście, na konkretnej maszynie jeden może się sprawdzić nieco lepiej, drugi zaś trochę gorzej.

Skoro jest tak dobrze...

W życiu, a w technice szczególnie nie ma nic za darmo. Choć według zapewnień producentów, stosowanie kompresorów dyskowych doprowadza do "niewielkiego spowolnienia działania systemu", w praktyce okazuje się, że efekty uzyskiwane na różnych komputerach zależą w dużym stopniu od szybkości procesora i typu zastosowanego dysku. (Jeśli założymy, że w naszym zestawie mamy szybki twardy dysk i wolny procesor - różnice w szybkości działania systemu będą duże na niekorzyść kompresji, jeśli zaś jest odwrotnie, to może się okazać, że zastosowanie kompresora nawet przyspiesza pracę). Pokusiłem się więc o porównanie skutków stosowania kompresji dysku za pomocą programu Stacker 3.0 i DOS-owskiego Double Space z parametrami dysku, w którym nie zastosowano

kompresji.

Do porównań użyłem komputera z procesorem i486DX/33 i dyskiem twardym Quantum o czasie dostępu ok. 16 ms oraz plików o różnej długości. Wyniki przedstawiają rys. 1-7 (krótsze słupki symbolizują w nich lepsze osiągi) i jakkolwiek nie mogą być całkowicie miarodajne, sądzę, że nadają się dość dobrze do porównań. Wynika z nich np. iż oba programy różnią się pomiędzy sobą w poszczególnych testach (Double Space okazał się znacznie szybszy dla bardzo krótkich i bardzo długich plików), jednak różnice średnich są raczej niewielkie i przemawiają zdecydowanie przeciwko stosowaniu kompresji na komputerach (p. rys. 7) w których szybkość pracy jest sprawą najważniejszą.

Warto też zauważyć, że najgorzej kompresory wypadają w testach typu random write, w których mierzony jest czas zapisu ścieżek nie po kolei. Taka sytuacja ma miejsce np. w przypadku bardzo pofragmentowanego dysku. Wówczas to stosowanie kompresorów odbija się wręcz fatalnie na wydajności systemu, więc decydując się na "podwajacz" pojemności musimy również wziąć pod uwagę czas, który poświęcimy na czynności związane z "pielęgnacją" dysku.

W tym miejscu nie mogę się powstrzymać od jeszcze jednej uwagi praktycznej. W MS-DOS 6.0 do defragmentacji służy, program DEFRAG.EXE, który jest zaadaptowaną przez Microsoft wczesną wersją Speed Disk Petera Nortona. Program ten radzi sobie nieźle z dyskami nieskompresowanymi, lecz po użyciu Double Space porządkowanie dysku o rzeczywistej ("fizycznej") pojemności 120 MB zajmuje mu blisko 1,5 godz., co jest wręcz kuriozalnym wynikiem. (Stacker zrobił to samo na swoim dysku o porównywalnej pojemności w 27,5 min).

Kompresja a wirusy komputerowe

Stosowanie programów służących do kompresji twardego dysku, takich jak np. Stacker, czy Super Stor, może się okazać tragiczne w skutkach dla mniej doświadczonych użytkowników, jeśli do posiadanego systemu wprowadzą wirusa, który dopisując się do interpretera poleceń (np. COMMAND.COM) czy innego, automatycznie uruchamianego pliku, niszczy "przy okazji" tablicę partycji fizycznego dysku. O ile bowiem "wyleczenie komputera" z takiego wirusa jest stosunkowo proste w przypadku dysków nie poddanych kompresji, (wystarczy uruchomić program antywirusowy i ewentualnie odtworzyć kluczowe dane twardego dysku z dyskietki ratunkowej), to "uzdrowienie" skomprymowanego dysku wymaga już znacznie większych zabiegów.

Ostatnio taki przypadek przytrafił się naszemu redakcyjnemu koledze, który nie bezpodstawnie przeżył chwile grozy, próbując dopaść wirusa o nazwie DROPER (tak został on rozpoznany przez jeden z programów antywirusowych). Wirus ten bowiem był na tyle "przebiegły", iż uruchamiał się dopiero podczas opuszczania zainfekowanego programu, więc na nic zdały się wszelkie typowe środki zapobiegawcze (mam tu na myśli rezydentów zapobiegających rozprzestrzenianiu się epidemii podczas uruchamiania programów - np. NAV&.SYS). Pozwolę więc sobie opisać pokrótce metody postępowania w takich przypadkach oraz ewentualnych przed nimi zabezpieczeń.

O łapaniu i zapobieganiu

Ponieważ wspomniany wirus dał o sobie znać (komputer "widział" 32 MB dysk zamiast 250-tki i za nic w świecie nie chciał uwierzyć, że jest inaczej) dopiero podczas restartu systemu, wystartowaliśmy go z dyskietki. Posługując się MKSVIR-em (program antywirusowy produkcji Marka Sella) z łatwością zlokalizowaliśmy wirusa, lecz ponieważ nie udało się go bezboleśnie usunąć, zmuszeni zostaliśmy do odtworzenia danych dysku z tzw. dyskietki ratunkowej (rescue disk).

Takie dyskietki można sporządzić np. za pomocą programu DISKTOOL.EXE, który wchodzi w skład niemal każdego pakietu autorstwa Petera Nortona lub za pomocą narzędzi PC TOOLS. Programy te pozwalają bowiem zapisać, a później odtworzyć wszystkie kluczowe dane komputera (boot record, tablicę partycji i dane informacje zapisane w pamięci CMOS), więc gorąco zachęcamy do ich stosowania.

Wróćmy jednak do naszego wirusa. Pierwsze leczenie na niewiele się zdało, gdyż po uruchomieniu systemu ze zwykłej dyskietki startowej upakowany plik okazał się dla nas niedostępny i nie mogliśmy wyleczyć drugiej kopii COMMAND.COM, która się na nim znajdowała. Musieliśmy więc przygotować specjalną dyskietkę startową, (zawierającą oprócz plików MS-DOS także sterowniki programu upakowującego i stosowne komendy we własnym CONFIG.SYS), gdyż dopiero wówczas można było mieć nadzieję na "uzdrowienie" komputera.

W przypadku programu STACKER potrzebny wiersz wyglądał mniej więcej tak:

DEVICE=A:\STACKER\STACKER.COM C:\STACVOL.DSK

Po ponownym uruchomieniu systemu wszystko już poszło gładko. Oba COMMAND.COM-y zostały szczęśliwie wyleczone i komputer znów nadawał się do pracy. Gdybyśmy jednak nie dysponowali dyskietką ratunkową jest niemal pewne, że dane zapisane na upakowanym dysku zostałyby utracone całkowicie.

Strachy na Lachy

Wśród użytkowników nie przyzwyczajonych do kompresorów dysku panuje błędne mniemanie, że stosowanie tych programów pociąga za sobą dużo większe ryzyko utraty danych np. w przypadku błędu hardware-owego, czy awarii zasilania. Nie jest to do końca prawda. Zarówno STACKER, jak i Double Space potrafią sobie radzić całkiem nieźle nawet wówczas, gdy zresetujemy komputer w czasie defragmentacji dysku lub zastosujemy wobec nich nieodpowiednie programy narzędziowe. Nie ma się więc czego obawiać. Odradzałbym natomiast stosowanie ich na komputerach wyposażonych w niepewne dyski, gdyż wówczas ryzyko przekłamań jest rzeczywiście wielokrotnie większe.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200