Specyfikacja techniczna
Temat: Monitor Procesów
Wykonawcy: Jacek Grudzień
Leszek Prokopiak
Pod kierunkiem: mgr Piotr Stępień
Założenia wstępne
Program „Monitor procesów” przeznaczony jest do obsługi procesów zachodzących w systemie operacyjnym MS-DOS.
Program wyświetli listę TSR-ów, działających aktualnie w systemie wraz z zajętymi przez nie zasobami. Monitor oprócz zasobów wyświetla także informacje, o tym czy dany proces można aktualnie zakończyć. Jeżeli „Monitor procesów” stwierdzi, że można zakończyć dany program, wówczas użytkownik może tego dokonać po naciśnięciu odpowiedniej kombinacji klawiszy.
Program składa się z dwóch plików:
proces.sys
show.exe
Plik proces.sys jest plikiem obsługi urządzenia umieszczonym w pliku config.sys i uruchamianym przy starcie systemu. Program proces.sys ma za zadanie śledzenie i zapamiętywanie ustawień procesów działających w systemie.
Plik show.exe jest plikiem wykonalnym. Wyświetla on na ekranie listę, na której są pokazane wszystkie procesy aktualnie uruchomione, ich zasoby oraz możliwość ich zamknięcia. Jeżeli program stwierdza, że dany proces można zakończyć, użytkownik po naciśnięci odpowiedniej kombinacji klawisz może tego dokonać.
Funkcje użytkowe
Funkcje i przerwania jakie wykorzystaliśmy przy pisaniu programu to:
Przerwanie 21h:
Funkcje ZARZĄDZAJĄCE PROCESAMI |
||||||||
Funkcja |
Nazwa |
Opis |
||||||
25h |
Zapisywanie wektora przerwań |
Funkcja ustawia nowa procedurę obsługi przerwania o numerze podanym w AL. Adres procedury obsługi przerwania powinien być przekazany DS:DX |
||||||
31h |
Zakończenie procesu z pozostawieniem w pamięci |
Funkcja ta pozwala na zakończenie pracy procesu i przekazania sterowania procesowi macierzystemu, nie zamykając otwartych plików procesu i nie zwalniając całej pamięci przydzielonej procesowi. |
||||||
35h |
Odczytywanie wektora przerwań |
Funkcja zwraca adres przerwania obsługi przerwania o numerze podanym w AL. |
||||||
4B00h |
Załadowanie do pamięci i wykonanie programu |
Funkcja tworzy nowy proces i uruchamia program z nim związany. Obraz programu musi znajdować się w zbiorze z rozszerzeniem .COM lub .EXE, którego nazwa w kodzie ASCII znajduje się pod adresem wskazanym przez DS.:DX. EX:BX wskazuje na adres bloku parametrów. |
||||||
4B01h |
Załadownie programu do pamięci |
|
||||||
4B03h |
Załadowanie nakładki do pamięci |
Funkcja ładuje do pamięci nakładkę. Znaczenie parametrów jest takie jak w przypadku funkcji 4B00h. Ładowanie nakładki różni się od ładowania programu tym, że nakładka nie uruchamia nowego procesu, tylko jest wykonywana w ramach bieżącego. Funkcja nie tworzy nowego PSP i nie oddaje sterowania do nakładki. |
||||||
4Ch |
Zakończenie procesu |
Funkcja kończy wykonywany proces, zamykając wszystkie otwarte pliki i zwalniając pamięć przydzieloną na początku pracy procesu. W rejestrze AL. Przekazywany jest kod powrotu informujący proces nadrzędny z jakiego powodu została zakończona praca procesu. |
||||||
4Dh |
Pobranie kodu powrotu procesu potomnego |
W rejestrze AL. Znajduje się przekazywany jako parametr funkcji 31h lub 4Ch. Rejestr AH zawiera informacje systemu dotyczące przyczyn zakończenia procesu. |
||||||
50h |
Usuwanie PSP (zmiana bieżącego procesu) |
Funkcja ustawia nową wartość segmentu, w którym znajduje się przedrostek procesu (PSP). Stosowana jest wraz z następną funkcją przy pisaniu programów rezydentnych, które, aby poprawnie pracowały, powinny przywrócić swój oryginalny PSP, a nie korzystać z PSP aktualnie wykonywanego procesu. |
||||||
51h |
Pobierz adres bloku PSP bieżącego procesu |
Funkcja pobiera aktualny segment PSP. |
||||||
5D0Ah |
Ustawienie rozszerzonej informacji o błędzie |
|
||||||
62h |
Pobranie adresu bloku PSP bieżącego procesu |
Funkcja zwraca w rejestrze BX adres segmentu przedrostka bieżącego procesu. |
Inne funkcje wykorzystane tego przerwania:
- 09h - Wypisywanie tekstu
- 30h - Numer wersji systemu
- 48h - Przydzielanie pamięci procesowi
- 49h - Zwalnianie pamięci przydzielonej przez funkcję 48h
- 4Ah - Zwiększenie/Zmniejszenie przydzielonej pamięci
PRZERWANIA ZWIĄZANE Z ZARZADZANIEM PROCESAMI |
||
Przerwanie |
Nazwa |
Opis |
22h |
Adres powrotu po zakończeniu programu |
DOS wywołuje to przerwanie jeśli aktualnie wykonywany proces jest kończony funkcjami systemowymi 00h, 31h, 4Ch. Można je przechwytywać, aby podczas kończenia pracy procesu była zwalniana dodatkowa pamięć przydzielona procesowi, odblokowane pliki, zapisane informacje specjalne |
23h |
Obsługa przerwania wykonywanego programu |
Przerwanie to jest wywoływane w przypadku naciśnięcia klawiszy Ctrl-C. Normalnie procedura obsługi tego przerwania kończy pracę procesu. Przechwytując przerwanie możemy na przykład zablokować działanie tych klawiszy, albo zapytać o potwierdzenie chęci zakończenia procesu. |
24h |
Obsługa błędów krytycznych |
Przerwanie to jest wywoływane przez DOS jeśli nastąpi krytyczny błąd dostępu do urządzenia |
28h |
Przerwa DOS'a |
Przerwanie to jest wywoływane przez DOS, jeśli czeka na naciśnięcie klawisza i nie wykonuje żadnych innych operacji. Może być wykorzystane jako jedno z miejsc uaktywniania programów rezydentnych |
2Fh |
Przerwanie multipleksowe |
Przerwanie organizuje równoczesną pracę programów rezydentnych dostępnych z dowolnego procesu. |
Sposób wykonania.
Z każdym procesem w systemie są związane dwie systemowe struktury danych: blok wstępny programu, czyli tzw. blok PSP, oraz otoczenie programu (enviroment). Są one tworzone w chwili powstania procesu, a więc ładowania kodu programu i rozpoczęcia jego wykonywania.
System MS-DOS przydziela każdemu procesowi obszar pamięci. Na początku tego obszaru (segmentu programu) system umieszcza blok wstępny programu zwany PSP (Program Segment Prefix). Służy on systemowi operacyjnemu do przechowywania informacji systemowych związanych z procesem m.in. adresu powrotu do procesu rodzicielskiego, informacji o plikach używanych przez proces, adresu procesu rodzicielskiego, parametrów przekazanych w chwili rozpoczęcia procesu.
Adres segmentu programu (bloku PSP) jest w systemie używany jako identyfikator procesu PID (Proces Identifier).
Pod adresem 02h w PSP, jest umieszczony adres pierwszego bajtu pamięci, już niedostępnego dla programu. Tak więc pole to może posłużyć programowi użytkowemu do uzyskania informacji o rozmiarze przydzielonej mu pamięci. Pod adresami 0Ah, 0Eh i12h, są umieszczone pola czterobajtowe służące do przechowywania trzech specjalnych adresów w postaci segment:przemieszczenie, są to kolejno:
adres powrotu po zakończeniu programu,
adres procedury obsługi przerwania wykonywania programu
adres procedury obsługi błędów krytycznych
Powyższe pola wypełnione podczas tworzenia bloku PSP, przechowują adresy będące wektorami przerwań 22h, 23h, 24h. Wywołanie systemowej funkcji zakończenia procesu 4Ch
powoduje między innymi wpisanie zapamiętanych w tych polach wartości w odpowiednie miejsca tablicy wektorów przerwań. Zatem wszystkie zmiany dokonane przez dany program w trakcie jego działania w tablicy wektorów przerwań 22h, 23h i 24h, stają się nieaktualne po jego zakończeniu. Dwubajtowe pole 16h zawiera adres segmentowy bloku PSP procesu rodzicielskiego danego procesu. Oznacza to, że dany program może zidentyfikować wszystkich swoich przodków docierając do ich bloków PSP. Wyjątek stanowi interpreter poleceń COMMAND.COM, który modyfikuje zawartość tego pola w swoim bloku wstępnym, wstawiając do niego adres swojego własnego PSP.
Dzieje się tak również wtedy, kiedy COMMAND.COM nie jest pierwszym procesem w systemie, lecz jego kopia została wywołana z innego programu, zatem łańcuch przodków danego programu kończy się na interpreterze poleceń.
Pole o adresie 80h (128 bajtów), stanowi tak zwany DTA (bufor transmisji dyskowych), za którego pośrednictwem program wykonuje operacje we-wy dotyczące dysku. Bufor DTA jest wymagany przy korzystaniu z mechanizmów dostępu do dysku, oraz funkcji przeszukiwania katalogów.
Kielce 1999
Strona 5 z 5