Preloader image
 
Ustawianie pamięci w plikach konfiguracyjnych DOS
815
post-template-default,single,single-post,postid-815,single-format-standard,simplicity-core-1.0.3,simplicity-theme-ver-2.0.3,ajax_fade,page_not_loaded,smooth_scroll

Blog

Posted by Maniek in Programy

Ustawianie pamięci w plikach konfiguracyjnych DOS

Na początku przypomnijmy, że pamięć komputera IBM PC, który wyposażony jest w procesor minimum 80286, podzielona została pod względem dostępu na kilka obszarów:

  • – pamięć konwencjonalna (conventional memory) -O – 640 =KB;
  • – pamięć górna (Upper Memory Area – UMA) -640 KB – 1024 KB (1MB);
  • – pamięć wysoka (High Memory Area – HMA)- 1024 KB – 1088 KB;
  • – pamięć rozszerzona (Extended Memory Area – EMA) -od 1088 KB do 16 MB dla 80286 i do 4 GB dla 80386 i 80486



Podział pamięci na bloki w PC


Bez dodatkowych sterowników dostępna jest dla systemu tylko pamięć konwencjonalna. Sztuczki programowe, które wykorzystują tzw. przerwanie BIOS nr 15H, pozwalają programom na dostęp pozostałego obszaru pamięci (na procesorach od 80286 w górę). Wykorzystanie przerwania 15H pozwala programom na zapisanie danych i ich odczytanie z pamięci rozszerzonej, jednak nie zapewnia bezpieczeństwa tych danych. Oznacza to, że różne programy zapisując swoje dane w tej pamięci mogą niszczyć informacje zapisane w niej już wcześniej. Poza tym programy mogą zakłócać sobie nawzajem pracę, zwłaszcza, że wykorzystane przerwania 15H jest w praktyce skomplikowane pod względem programowym.
W celu standaryzacji oraz ułatwienia w korzystaniu, poprzez przerwanie 15H, z pamięci rozszerzonej, najważniejsze firmy informatyczne opracowały tzw. protokół XMS (eXtended Memory Spcification). Do systemu MS-DOS 6.22 dołączony został program HIMEM.SYS, który pozwala innym programom na wykorzystanie tej pamięci zgodnie z tym protokołem.

Wykorzystanie HIMEM.SYS

Ponieważ HIMEM.SYS jest sterownikiem musi on być załadowany poleceniem DEVICE umieszczonym w pliku CONFIG.SYS:

DEVICE=HIMEM. SYS

Dopiero od tej chwili program HIMEM.SYS steruje pracą pamięci rozszerzonej i pozwala na wykorzystanie przez system i programy, które są do tego odpowiednio przystosowane (potrafią wykorzystać pamięć extended, zgodnie ze standardem XMS), obszaru pamięci powyżej 1024 KB, w tym pamięci wysokiej. Jest to możliwe dopiero po załadowaniu sterownika HIMEM.SYS, dlatego też polecenie to powinno być wpisane do pliku CONFIG.SYS jako pierwsze.

W momencie, gdy dzięki HIMEM.SYS, jest udostępniona obsługa pamięci wysokiej (High Memory Area – HMA), można do niej przenieść system operacyjny, poleceniem umieszczonym również w pliku CONFIG.SYS:

DOS=HIGH

W ten sposób zwolniona zostanie część pamięci konwencjonalnej. Również niektóre programy lub sterowniki systemowe mogą teraz wykorzystać pamięć extended do przechowywania swoich danych, zwalniając pamięć konwencjonalną.

Pamięć dodatkowa (expanded)

W okresie gdy podstawową wielkością pamięci montowaną w komputerach IBM PC na stałe było 512 KB, pamięć tę rozszerzano poprzez instalację specjalnych kart z modułami pamięci. Dostęp do niej zapewniały specjalne programy obsługi, działające zgodnie z protokołem LIM EMS (Lotus Intel Microsoft Expanded Memory Specification) na komputerach z procesorem 80386.
Zgodnie z tym protokołem pamięć dodatkowa (expanded), zamontowana na karcie, dzielona była na tzw. strony o wielkości 16 KB. Wymiana danych między zwykła pamięcią komputera, a pamięcią na karcie odbywała się poprzez specjalny obszar, jak gdyby okno (tzw. ramka strony, ang. page frame) o wielkości 64 KB, wydzielone w pamięci konwencjonalnej lub w pamięci górnej. W oknie takim mieściły się 4 strony pamięci epanded. W uproszczeniu, jeżeli program chciał coś zapisać w pamięci dodatkowej, kierował te dane do tego okna (page frame), a program sterujący pamięcią dodatkową umieszczał te dane kolejno w pamięci zamontowanej na karcie. W drugą stronę odbywało się to podobnie. Używany program zwracał się do programu sterującego oknem o udostępnieni danych zapisanych w pamięci dodatkowej. Ten odczytywał te dane z właściwego miejsca (strony) w pamięci na karcie i umieszczał je w oknie, w którym były już one dostępne dla programu. W ten sposób program potrzebne dane zapisywał w pamięci dodatkowej porcjami po 64 kilobajty i takimi samymi porcjami je odbierał. Natomiast program sterujący tą wymianą dbał o to, aby pamięć dodatkowa wykorzystana była prawidłowo, aby nowe dane nie zamazały danych wcześniejszych i aby program otrzymywał na powrót właściwe informacje. Sposób takiego zarządzania pamięcią dodatkową upowszechnił się na tyle, że z chwilą, gdy zarzucono stosowanie specjalnych kart z pamięciami dodatkowymi i zaczęto stosować układy pamięci montowane bezpośrednio na płycie komputera, a więc dostępne bezpośrednio dla procesora i programów (oczywiście ze wszystkimi ograniczeniami DOS’a) łatwiej był emulować, że pamięć ta dalej jest zamontowana oddzielnie. W ten sposób program nie wie, że dostępnych jest, dzięki sterownikowi HIMEM.SYS, wiele megabajtów pamięci. tylko nadal „widzi” wyłącznie 64-kilobajtowe okno, przez które wymienia dane z tą pamięcią.

Wykorzystanie EMM386.EXE

System MS-DOS 6.22 wyposażon jest w nowy, wcześniej nie dostepny w systemie MS-DOS, specjalny program, EMM386.EXE. Steruje on pracą okna zapewniającego dostęp do pamięci dodatkowej (expanded). Ponieważ pamięć ta jest w rzeczywistości zamontowana w komputerze, a nie na oddzielnej karcie, program ten emuluje obecność karty z pamięcią dodatkową. W tym celu wykorzystuje on sterownik HIMEM.SYS, który pozwala mu na umieszczanie danych w pamięci rozszerzonej (extended).
Program EMM386.EXE (mimo rozszerzenia oznaczającego programy wykonywalne) jest sterownikiem i musi być również ładowany do pamięci poleceniem z pliku CONFIG.SYS. Ponieważ jednak korzysta on z usług sterownika HIMEM.SYS musi być załadowany po nim poleceniem:

DEVICE=EMM386.EXE

Sterownik EMM386.EXE może na różne sposoby współpracować z programami, które są do tego przystosowane i używają pamięci expanded. Niestety może równocześnie zakłócać pracę programów, które wykorzystują tylko pamięć extended, nawet do tego stopnia, że będzie to powodowało zawieszenie pracy systemu. Dlatego też bardzo ważne jest ustalenie parametrów pracy tego sterownika.

Jeżeli nie jesteśmy w stanie sami zadbać o właściwe skonfigurowanie sterownika EMM386.EXE należy wykorzystać komendę MemMaker, która dokona tego automatycznie.

EMM386.EXE pozwala na dodatkowe wykorzystanie pamięci górnej. Otóż jeżeli jest on załadowany można wykorzystać tzw. wolne bloki pamięci górnej (UMB). W tym celu należy poinformować system, że ma on również zarządzać tym obszarem poprzez wpisanie do pliku CONFIG.SYS polecenia:

DOS=UMB

W takiej konfiguracji można do tej pamięci ładować:
– inne sterowniki urządzeń dodatkowych – przy pomocy poleceń DEVJCEHIGH=, które
umieszcza się w pliku CONFIG.SYS;
– programy rezydentne lub ich dane – przy pomocy poleceń LOADHIGH, które umieszcza się w pliku AUTOEXEC.BAT.

W ten sposób możemy zwolnić niemały fragment pamięci konwencjonalnej! Używanie tych poleceń jest bardzo proste i bezpieczne. Mianowicie system, w przypadku, gdy nie będzie mógł umieścić w odpowiedni sposób sterownika lub programu w pamięci górnej, załaduje go do pamięci konwencjonalnej. Ograniczy w ten sposób jej wolny obszar, ale będzie zapewnione prawidłowe działanie systemu. Dlatego też bez obawy możemy stosować polecenia DEVICEHIGH oraz LOADHIGH. Musimy jedynie zadbać, aby w pliku CONFIG.SYS znalazły się polecenia uruchamiające sterowniki, które zarządzają pamięcią. Musi one być wpisane we właściwej kolejności, czyli:

DEVICE=C:\DOS\HIMEM.SYS
DEVICE=C:\DOS\EMM386.EXE DOS=UMB

Oczywiście polecenia ładujące HIMEM.SYS czy EMM386.EXE mogą być jeszcze wzbogacone o parametry kontrolujące pracę tych sterowników.

Procedury typu SHADOW

Fragmenty pamięci górnej można wykorzystać na umieszczenie w nich procedur BIOS’a oraz zawartości ROM kart video (EGA lub VGA). Do tego celu należy wykorzystać procedury BIOS’a, tzw. SHADOW BIOS i SHADOW VIDEO, jeżeli są one dostępne w programie SETUP BIOS płyty głównej. Wykorzystanie tych procedur pozwala często na wyraźne przyśpieszenie pracy komputera oraz karty video.

Standardy narodowe

System MS-DOS 6.22 umożliwia wyświetlanie na monitorze oraz drukowanie znaków narodowych, które wykorzystywane są w większości krajów posługujących się alfabetem łacińskim. Ponieważ jednorazowo system pozwala na załadowanie do pamięci maksymalnie 256 znaków, a więc zbyt mało, aby uwzględnić wszystkie znaki narodowe zostały one podzielone na specjalne tablice kodów. W tablicach tych uwzględniono również inne informacje specyficzne dla poszczególnych krajów, takie jak: znak walut, format daty i czasu, znak ułamka, sortowanie, obsługa klawiatury itp.. Chcąc dostosować system do wymagań danego kraju tak, aby odpowiednie znaki były dostępne w systemie należy załadować do pamięci odpowiednie zestawy znaków dla monitora, drukarki oraz ustalić formaty daty i czasu. Do tego służą odpowiednie polecenia umieszczone w pliku CONFIG.SYS. W przypadku Polski powinny one obejmować odpowiednio:

DEVICEHIGH=C:\DOS\DISPLAY.SYS CON=(EGA,437,1)
DEVICEHIGH=C:\DOS\PRINTER.SYS LPT1=(4201,,1)
COUNTRY=048,852,C:\DOS\COUNTRY.SYS

Jeżeli chcemy uzyskać „polskie litery” w systemie musimy jeszcze wpisać odpowiednie polecenia do pliku AUTOEXEC.BAT

MODE CON CP PREP=((852) C:\DOS\EGA.CPI)
MODE CON CP SEL=852
MODE LPT1 CP PREP=((852) C:\DOS\4201.CPI)
MODE LPT1 CP SEL=852
KYBE PL,,C:\DOS\KEYBOARD.SYS

Sterowniki urządzeń dodatkowych

Od czasu pierwszych stystemów IBM PC oraz pierwszej wersji DOS pojawiały się produkty, których te rozwiązania nie przewidywały. Jednym z nich jest np.: CD-ROM, który swa popolarność zaczął zdobywać na początku lat 90-tych.
Urządzenia te są wyposażone były we własne programy sterujące ich pracą i komunikujące z komputerem przy pomocy podstawowych procedur zawartych w BIOS’ie i pliku I0.SYS. Sterowniki (drivery), muszą być najczęściej ładowane do systemu podczas jego inicjalizacji. Dlatego odpowiednie komendy muszą być wpisane do pliku CONFIG.SYS. Dokonują tego zazwyczaj, automatycznie, odpowiednie programy instalacyjne (można też dokonać tego ręcznie edytując pliki CONFIG>SYS i AUTOEXEC.BAT). Konfigurując z koleji system możemy sprawić, że będą one ładowane nie do pamięci konwencjonalnej, ale do pamięci górnej. Wystarczy komendę DEVICE zamienić na DEVICEHIGH tak, jak w przykładowej komendzie ładującej sterownik CD-ROM:

DEVICEHIGH=C :\ATAPI\TOSHV111. SYS /D:MSCDOOO

Wykorzystanie pamięci górnej

W przypadku, gdy w pliku CONFIG.SYS umieszczone są komendy ładujące sterowniki pamięci, tzn. HIMEM.SYS oraz EMM386.EXE system automatycznie postara się wykorzystać pamięć górną do przechowania zadeklarowanych zmiennych, ale można ją również użyć do załadowania programów rezydentnych. W tym celu komendy uruchamiające te programy powinny być poprzedzone poleceniem LOADHIGH lub skrótem LH, np. polecenie:

C:\DOS\MSCDEX.EXE /D:MSCDOOO /L:G

Program ten, obsługi CD-ROM, można zmodyfikować w następujący sposób:

LH C:\DOS\MSCDEX.EXE /D:MSCDOOO /L:G

To polecenie sprawi, że program MSCDEX zostanie umieszczony w pamięci górnej. Polecenie LH jest bezpieczne i nawet jeżeli w pamięci górnej zabraknie miejsca na ładowany program, to zostanie on automatycznie załadowany do pamięci konwencjonalnej.

Omówienie pliku AUTOEXEC.BAT

Przykładowy plik AUTOEXEC.BAT może wyglądać następująco (numery wierszy tylko w celach informacyjnych):

1) @ECHO OFF
2) PATH C:\;C:\DOS;D:\;D:\WINDOWS;E:\WINWORD;E:\EXCEL
3) PROMPT $P$G
4) SET TEMP=C:\TEMP
5) VERIFY OFF
6) C:\DOS\MODE CON CP=PREP ((852) C:\DOS\EGA.CPI)
7) C:\DOS\MODE CON CP SEL=852
8) C:\DOS\MODE LPT1 CP=PREP((852) C:\DOS\4201.CPI)
9) C:\DOS\MODE LPT1 CP SEL=852
10) C:\DOS\KEYB PL,,C:\DOS\KEYBOARD.SYS
11) C:\DOS\MODE CON:RATE=32 DELAY=1
12) LH C:\PC-CACHE /MAX=63/SIZEXT=1024
13) LH C:\DOS\MSCDEX.EXE /D:MSCDOOO /L:G
14) LH IMOUSE /E/#2

Polecenia 1 – wyłaczenie (OFF) wyswietlania na ekranie poleceń pliku wsadowego Polecenie 2 – ustawienie ścieżek dostepu do katalogów w których będą poszukiwane programy
Polecenie 3 – ustawienie znaku zachęty
Polecenie 4 – tworzenie tymczasowgo katalogu TEMP
Polecenie 5 – pwymuszanie prawidłowości zapisu danych jest wyłączone
Polecenia 6, 7, 8, 9 – spowodują, że dostępne staną się w systemie (na ekranie i drukarce) polskie znaki
Polecenie 10 – załadowany zostanie program KEYB polskiej obsługi klawiatury w układzie maszynistki
Polecenie 11 – deklaruje maksymalną częstotliwość powtarzania naciśniętego klawisza
Polecenie 12 – ładuje (do pamięci górnej) program Pc-Cache
Polecenie 13 – ładuje (do pamięci górnej) systemowy sterownik stacji CD-ROM
Polecenie 14 – ładuje (do pamięci górnej) rezydentny program obsługi myszki