MS-DOS 5.0 upgrade

W poprzednim artykule (CW PL 17/91) bardzo skrótowo omówiliśmy najważniejszy rozdział podręcznika MS-DOS 5.0. Jest to rozdział 12. zatytułowany "Jak optymalizować swój system". Wracamy do tego tematu z prostego powodu: bez optymalizacji warunków pracy nie będzie optymalizacji efektów pracy.

W poprzednim artykule (CW PL 17/91) bardzo skrótowo omówiliśmy najważniejszy rozdział podręcznika MS-DOS 5.0. Jest to rozdział 12. zatytułowany "Jak optymalizować swój system". Wracamy do tego tematu z prostego powodu: bez optymalizacji warunków pracy nie będzie optymalizacji efektów pracy.

Optymalizacja

systemu polega na takim jego dopasowaniu do naszych potrzeb, by korzystał z dostępnych zasobów w najbardziej efektywny sposób. Jednakże najczęściej ulepszenie jednych parametrów powoduje pogorszenie innych. W MS-DOS-ie optymalizacja polega na balansowaniu między szybkością działania a wykorzystaniem pamięci. Zatem naszym celem będzie:

udostępnienie programom maksimum pamięci operacyjnej lub zwiększenie szybkości pracy systemu, pozostawiając tyle pamięci, ile będą potrzebować nasze programy.

Co nieco o pamięci operacyjnej Na ogół programy "chodzące" pod kontrolą systemu operacyjnego MS-DOS korzystają z pamięci standardowej od 256 KB do 640 KB, co nie stanowi żadnego problemu. Powiększenie pamięci wiąże się z ulepszeniami sprzętowymi, przede wszystkim instalacją pamięci rozszerzonej XMS dostępnej wyłącznie w systemach z procesorem minimum 80286. Większość komputerów z procesorami 80286 i 80386 jest wyposażonych w 640 KB pamięci standardowej i 384 KB pamięci rozszerzonej. Jeżeli pamięci rozszerzonej jest za mało, wystarczy wmontować dodatkowe układy pamięci lub karty pamięci operacyjnej. Z kolei programy muszą zawierać specjalne instrukcje umożliwiające korzystanie z pamięci powyżej 640 KB.

Sprawne gospodarowanie pamięcią rozszerzoną zapewnia specjalny program zwany zarządcą pamięci rozszerzonej. Jego zadanie polega na pilnowaniu, by różne programy nie korzystały w tym samym czasie z tego samego obszaru pamięci rozszerzonej. MS-DOS zawiera taki program o nazwie HIMEM.SYS zgodny ze standardem Lotus/Intel/Microsoft/AST eXtended Memory Spe-cification (LIM XMS) wersja 2.0.

MS-DOS 5.0 "chodzi" w pamięci rozszerzonej, pozostawiając więcej pamięci standardowej dla innych programów. Z pamięci rozszerzonej korzysta także 3.0.

Inny sposób na rozszerzenie pamięci polega na instalacji

pamięci rozbudowanej EMS

(ang. expanded memory) czyli zamontowaniu w komputerze karty pamięci rozbudowanej i programu zwanego zarządcą pamięci rozbudowanej, zgodnych ze standardem Lotus/Intel/Microsoft Expanded Memory Specification (LIM EMS) v.3.2 lub 4.0. Program, który potrafi korzystać z pamięci rozbudowanej, nie ma bezpośredniego dostępu do informacji znajdującej się w pamięci rozbudowanej. Pamięć rozbudowana podzielona jest na 16 KB segmenty zwane stronami (ang. page). Kiedy program żąda informacji z pamięci rozbudowanej, zarządca tej pamięci kopiuje odpowiednią stronę do obszaru zwanego ramką strony (ang. page frame), znajdującego się w górnym obszarze pamięci (ang. upper memory area). Program otrzymuje informację z tego obszaru.

Wiele programów nie potrafi korzystać z pamięci rozbudowanej, gdyż nie potrafią współpracować z zarządcą pamięci rozbudowanej. Jednakże, ponieważ pamięć rozbudowana pojawiła się na rynku wcześniej niż pamięć rozszerzona, liczba programów dostosowanych do pamięci rozbudowanej jest większa od dostosowanych do pamięci rozszerzonej.

Ponieważ zarządca pamięci rozbudowanej ogranicza programom dostęp do informacji w danej chwili, pamięć rozbudowana może być wolniejsza i mniej wygodna niż pamięć rozszerzona. Większość komputerów posiada 384 KB pamięci zwanej

górnym obszarem pamięci

(ang. upper memory area), znajdującej się zaraz powyżej 640 KB pamięci standardowej. Ten obszar nie uważa się za część całkowitej pamięci komputera, gdyż programy nie mogą tam przechowywać informacji. Jest on zarezerwowany dla programów sterujących (drive-rów), np. obsługi monitora. Istnieje możliwość "mapowania", czyli kopiowania informacji z innego typu pamięci do fragmentów górnego obszaru pamięci nie wykorzystywanego przez system, zwanego blokami górnej pamięci (ang. upper memory blocks). "Mapowanie" wykorzystane jest m.in. przy uruchamianiu programów korzystających z pamięci rozbudowanej.

Jeżeli mamy komputer z procesorem 80386 lub 80486 i pamięcią rozszerzoną, MS-DOS 5.0 może wykorzystać górny obszar pamięci pozostawiając więcej wolnego miejsca w pamięci standardowej. MS-DOS 5.0 ma komendy ładujące niektóre programy i sterowniki urządzeń do górnego obszaru pamięci. Ich liczba jest ograniczona miejscem, które system pozostawia wolnym w tym obszarze oraz ewentualnie ramką pamięci rozbudowanej.

Korzystanie z pamięci rozszerzonej lub rozbudowanej oraz z górnego obszaru pamięci uwarunkowane jest instalacją odpowiedniego zarządcy pamięci

(ang. memory manager). MS-DOS 5.0 zawiera następujące programy zarządzające:

• HIMEM dla pamięci rozszerzonej

• EMM386 wykorzystujący pamięć rozszerzoną do symulacji pamięci rozbudowanej. Zapewnia on także dostęp do górnego obszaru pamięci. MS-DOS 5.0 nie zawiera zarządcy pamięci rozbudowanej, gdyż do każdej karty pamięci rozbudowanej jest dołączony jej własny zarządca. Instalacja zarządcy wymaga odpowiedniej komendy DEVICE w zbiorze CONFIG.SYS, przy czym komenda DEVICE dla HIMEM musi występpwać przed innymi komendami DEVICE dla sterowników (drive-rów) korzystających z pamięci rozszerzonej.

Wszystkie programy wymagają pamięci standardowej do ich uruchomienia. Jeżeli tej pamięci jest za mało, można próbować zwolnić dalsze obszary pamięci:

• uruchamiając MS-DOS w pamięci rozszerzonej za pomocą komendy DOS-HIGH w CONFIG. SYS, wykorzystując pierwsze 64 KB tej pamięci zwane obszarem wysokiej pamięci (High Memory Area)

• ustawiając zbiory CONFIG.SYS i AUTOEXEC.BAT tak, by nie uruchamiać zbędnych programów rezydentnych

• ładując sterowniki urządzeń (drivery) i inne programy rezydentne do górnego obszaru pamięci (w przypadku komputera 80386 lub 80486).

Zmiany do zbiorów CONFIG.SYS i AUTOEXEC.BAT należy wprowadzać wyjątkowo ostrożnie, gdyż błędy popełnione w czasie tej operacji mogą spowodować złe działanie całego systemu.

Zawartość zbioru

CONFIG.SYS

zależy od typu systemu, wielkości i typu pamięci, konfiguracji sprzętowej i uruchamianych programów. Niemniej obowiązują pewne stałe reguły:

• należy deklarować komendy DEVICE tylko dla tych sterowników, które są naprawdę potrzebne

• jeżeli system zawiera pamięć rozbudowaną, należy uwzględnić komendę DEVICE dla załączonego zarządcy tej pamięci

• jeżeli system zawiera pamięć rozszerzoną, należy uwzględnić komendy: DEVICE dla HIMEM. SYS oraz DOS=HIGH

• zrezygnować z komend dla SMARTDrive, RAMDrive i programu FASTOPEN korzystających z pamięci standardowej (szczególnie SMARTDrive). W przypadku RAMDrive, należy umieścić RAM-dysk w pamięci rozbudowanej lub rozszerzonej

• zmniejszyć liczbę deklarowanych buforów w komendzie BUF-FERS (każdy bufor zużywa 500 bajtów)

• dodać komendę STACKS, by ograniczyć liczbę i rozmiary stosów przerwań (ang. interrupt stacks) MS-DOS-a, np. STACKS "0,0

• w razie potrzeby ustawiać komendę LASTDRIVE-J lub K zamiast Z (każda następna litera wymaga 100 bajtów więcej niż poprzednia)

• w razie potrzeby ustawić komendę FCBS-1.

Kolejność komend DEVICE i DE-VICEHIGH (ładującej sterowniki do górnego obszaru pamięci) jest niezwykle istotna. Ma wpływ na wydajne wykorzystanie pamięci i prawidłowe działanie programów uruchamianych w zbiorze CONFIG.SYS. Zaleca się następującą kolejność:

• HIMEM.SYS

• zarządca pamięci rozbudowanej

• sterowniki korzystające z pamięci rozszerzonej

• EMM386.EXE

• sterowniki korzystające z pamięci rozbudowanej

• sterowniki korzystające z górnego obszaru pamięci.

Z kolei ustalając zawartość zbioru

AUTOEXEC.BAT

tak by oszczędnie gospodarować pamięcią, należy zrezygnować

• z programów rezydentnych

• z uruchamiania sterownika (drivera) myszy np. MOUSI COM (Microsoft Windows ma wbudowany sterownik myszy).

Emulator pamięci rozbudowanej

to program, który może korzystać z pamięci rozszerzonej, by symulować pamięć rozbudowaną. Sterownik EMM386 dołączony do MS-DOS 5.0 nadaje się jako taki emulator w komputerach 80386 i 80486. Jest to przydatne wtedy, gdy jakiś program korzysta z pamięci rozbudowanej, zaś w systemie nie ma fizycznie takiej pamięci. EMM386 sam wymaga ok. 80 KB pamięci rozszerzonej.

Co nieco o dyskach

Innym sposobem na przyspieszenie działania naszego systemu jest zwiększenie wydajności twardego dysku poprzez:

• usunięcie zbędnych zbiorów

• odzyskanie utraconego miejsca na dysku za pomocą komendy CHKDSK/f i skasowanie zbiorów, które ta komenda tworzy

• upewnienie się, że MS-DOS 5.0 odszukuje zbiory w optymalnej kolejności, np. poprzez właściwą kolejność katalogów w komendzie PATH

• uporządkowanie zbiorów na dysku za pomocą odpowiedniego programu, tzw. organizatora dysku (ang. disk organizer)

• dostosowanie pracy kontrolera twardego dysku by zminimalizować tzw. "interleave", czyli ilość obrotów dysku koniecznych do odczytania całej jednej ścieżki na dysku. Także wymaga odpowiedniego programu nie zawartego w MS-DOS- ie.

Komenda BUFFERS w zbiorze CONFIG.SYS określa liczbę buforów, które MS-DOS 5.0 rezerwuje do przenoszenia zbiorów. Im większa liczba buforów, tym szybsze działanie systemu. Jednakże, powyżej pewnej wartości, zwiększanie liczby buforów powoduje jedynie zużycie pamięci bez zwiększenia prędkości działania. Zalecane są następujące wartości tej komendy:

pojemność dysku rozmiar bufora mniej niż 40 MB 20

od 40 do 79 MB 30

od 80 do 119 MB 40

powyżej 120 MB 50

FASTOPEN

to program, który przyspiesza dostęp do otwieranych zbiorów i katalogów śledząc ich umiejscowienie na dysku. Jest przydatny przy korzystaniu z baz danych i kompilatorów. Może korzystać z rozbudowanej pamięci - wtedy jego wywołanie jest następujące:

LOADHIGH C:\DOS\FASTOPEN.EXE

Lepsze poznanie tego programu wymaga eksperymentowania.

SMARTDrive

to program do tzw. disk-caching, przeznaczony do komputerów z twardym dyskiem i pamięcią rozszerzoną lub rozbudowaną. Rezerwuje sobie część pamięci rozszerzonej lub rozbudowanej, tzw. SMARTDrive cache, gdzie przechowuje informację odczytaną z dysku. Kiedy program stara się odczytać tę informację z twardego dysku, SMARTDrive dostarcza tę informację bezpośrednio z obszaru cache. Ponieważ SMARTDrive zawsze zapisuje nową lub zmodyfikowaną informację na twardym dysku, nit ma obawy utraty danych w razie wyłączenia komputera. Instalacja SMARTDrive'u wymaga odpowiedniej komendy DE-VICE w zbiorze CONFIG.SYS. Standardowo vSMARTDrive korzysta z pamięci rozszerzonej. Sam zajmuje ok. 15 KB pamięci standardowej. Zalecana wielkość obszaru cache wynosi 2 MB i nie może być mniejsza od 256 KB.

RAMDrive

to program rezydentny, który wykorzystuje część pamięci operacyjnej do emulacji bardzo szybkiego dysku stałego. RAMdysk jest najbardziej przydatny do przechowywania zbiorów tymczasowych. W innych przypadkach lepszy jest SMARTDrive.

Górny obszar pamięci

Jeżeli jesteśmy szczęśliwymi posiadaczami komputera z procesorem 80386 lub 80486, możemy spróbować oszczędnie gospodarować pamięcią standardową przenosząc sterowniki (drivery) i inne programy rezydentne do górnego obszaru pamięci. Ten obszar jest zazwyczaj zarezerwowany dla systemu. Dość często po załadowaniu sterowników urządzeń niektóre części tego obszaru, zwane blokami górnej pamięci (ang. upper memory blocks - UMBs) pozostają nie wykorzystane. Właśnie tam można spróbować załadować sterowniki i inne programy rezydentne, usuwając je z pamięci standardowej (rys.l). Programem zarządzającym górnym obszarem pamięci jest EMM386.EXE, zajmujący 8 KB pamięci standardowej. Natomiast które sterowniki i programy można przenieść do górnego obszaru, trzeba, niestety, ustalić doświadczalnie, zachowując wszelkie środki ostrożności.

Korzystanie z górnego obszaru pamięci wymaga podania w zbiorze CONFIG.SYS następujących komend:

DOS-UMB lub DOS-HIGH.UMB

co oznacza, że MS-DOS 5.0 ma utrzymywać powiązanie między pamięcią standardową a górnym obszarem pamięci

DEVICE=C:\DOS\EMM386.EXE Z parametrem NOEMS lub RAM

gdzie EMM386 występuje jako zarządca górnego obszaru pamięci (NOEMS) lub jako zarządca górnego obszaru i emulator pamięci rozbudowanej (RAM).

Sterowniki są ładowane do górnego obszaru komendą DEVICE-HIGH, zaś programy rezydentne -komendą LOADHIGH, z wyjątkiem HIMEM i EMM386, które można uruchomić jedynie w pamięci standardowej.