Specyfikacja techniczna doc


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:

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:

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



Wyszukiwarka

Podobne podstrony:

więcej podobnych podstron