Wirtualna maszyna DOS jest środowiskiem emulacji systemu MS-DOS i 16-bitowego systemu Windows, używanym przez starsze aplikacje. Aktywne procesy 16-bitowe są widoczne jako wątki procesu maszyny wirtualnej DOS systemu Windows (NTVDM). Poza aplikacjami 16-bitowymi, proces NTVDM zawiera wątek "pulsu", który co 55 milisekund symuluje przerwanie zegarowe (18 razy/s), oraz wątek Wowexec.exe, który pozwala na wykonywanie zadań 16-bitowych i obsługę dostarczania 16-bitowych przerwań. Właśnie ten wątek umożliwia działanie 16-bitowych aplikacji w 32-bitowym środowisku Windows. Podsystem WOW jest udostępniany przez proces NTVDM, w którym działają poszczególne aplikacje Win16. Podczas monitorowania tych aplikacji będą widoczne również wątki pulsu oraz Wowexec.
W danej chwili może działać tylko jeden z wątków 16-bitowych aplikacji działających w procesie NTVDM. Jeżeli wątek którejś z tych aplikacji jest uprzywilejowany, to NTVDM zawsze przywraca mu sterowanie. Ogranicza to wydajność aplikacji 16-bitowych działających równocześnie w tym samym procesie NTVDM, jednakże ograniczenie to jest widoczne jedynie wówczas, gdy procesor jest mocno obciążony (tzn. wiele uruchomionych aplikacji).
Ze względu na to, że aplikacje 16-bitowe działają w jednym procesie, ich monitorowanie może być utrudnione. Konieczne jest rozróżnienie poszczególnych wątków procesu NTVDM. Systemy Windows umożliwiają uruchamianie aplikacji 16-bitowych w oddzielnych procesach NTVDM, we własnej przestrzeni adresowej. 16-bitowe aplikacje Windows można monitorować identyfikując je na podstawie ich identyfikatorów wątków lub uruchamiając je w oddzielnych przestrzeniach adresowych.
Systemy Windows umożliwiają uruchomienie 16-bitowej aplikacji Windows w oddzielnym, prywatnym procesie NTVDM, który posiada własną przestrzeń adresową. Eliminuje to współzawodnictwo pomiędzy wątkami w jednym procesie NTVDM, umożliwiając w ten sposób w pełni wielozadaniowe działanie aplikacji 16-bitowych. Aby uruchomić aplikację 16-bitową w oddzielnej przestrzeni adresowej, należy:
W wierszu poleceń napisać: start /separate nazwa_procesu (ewentualnie w *.bat)
Jeżeli wydajność aplikacji MS-DOS w systemach Windows nie jest zadowalająca, można próbować zmodyfikować pewne ich ustawienia:
1) wybrać wyświetlanie aplikacji na pełnym ekranie, co zwiększa wydajność operacji wiązanych z wyświetlaniem obrazu, (MODE CON COLS=80 LINES=25). Zauważyłem, że niektóre karty VGA (np. S3) na PCI takjakby szybciej pracują (odświeżają ekran) w trybie pełnoekranowym, niż dużo lepsze karty na AGP lub PCI Express. Jeśli głównym zadaniem komputera są aplikacje 16-bitowe, to można zaeksperymentować.
2) wyłączyć funkcję emulacja zgodnego czasomierza sprzętowego, która zawsze powoduje spadek wydajności. (dotyczy to Windowsa NT, w XP nie wiem gdzie to jest, ale prawdopodobnie można by to poszukać w rejestrze),
3) należy spróbować zmniejszyć poziom wykrywania bezczynności, wyłączyć tryb szybkiego wklejania,
4) Aplikacje DOS-owe korzystającą z drukarki, należy skonfigurować do portu LPT1 lub LPT2
zamiast portu równoległego. Większość aplikacji skonfigurowanych do używania portu LPT
korzysta z przerwania Int17, natomiast po wybraniu portu równoległego drukują one
bezpośrednio do drukarki.
Podsumowanie:
W zasadzie jesteśmy bezradni i wszystko zależy jak aplikacje 16-bitowe zostały napisane:
Jeśli czekają na znak z klawiatury korzystając z procedur systemowych to nie zabierają czasu procesora (np. za pomocą funkcji DOS'a INT21H - to system potrafi rozpoznać tą pętle i zdjąć z niej priorytet po pewnym czasie). Inne, które w "głupich pętlach" sprawdzają non stop stan klawiatury powodują że, procesor nie potrafi rozpoznać, czy jest to funkcja jalowa, czy też użyteczna i OS będzie na 100% obciążony. Zmiana priorytetu procesu z high na low wg mnie nie wiele pomoże, lepiej zamknąć nie potrzebne aplikacje.
A jak nic nie pomoże, to pozostaje jeszcze www.tamedos.com
Zaznaczam, że korzystałem szeroko z różnych tekstów z internetu, jeśli kogoś uraziłem korzystając z jego materiałów - to przepraszam, ale zrobiłem to w celu krzewienia starożytnej wiedzy o DOS-ie. Oczywiście, nie mam patentu na wiedzę i mogę sie w wielu kwestiach mylić.
Niestety muszę kończyć - Żona mnie woła.