to get the file
Transkrypt
to get the file
Instrukcja laboratoryjna Systemy operacyjne sem. 1 Ćwiczenie trzecie (dwa zajęcia) Temat: Obsługa urządzeń zewnętrznych Opracował: mgr inż. Arkadiusz Chrobot 1. Wstęp Programista tworzący aplikacje działające pod kontrolą dowolnego systemu operacyjnego (o ile nie jest to bardzo prymitywny system) nie musi znać szczegółów związanych z obsługą sprzętu, na którym jego program będzie uruchamiany. Wystarczy, że będzie umiał skorzystać z funkcji systemowych, które realizują to zadanie. Dzięki temu kod jego programów staje się bardziej przenośny, a praca systemu komputerowego, na którym wykonywane są te programy, bardziej stabilna. W innej sytuacji znajduje się informatyk tworzący oprogramowanie systemowe. Jego zadaniem jest stworzenie najbardziej uniwersalnych i odpornych na błędy procedur obsługi urządzeń. Zadanie to komplikuje się, jeśli system ma współpracować ze sprzętem tego samego rodzaju, ale pochodzącym od wielu różnych producentów i nieposiadającym standardowego sposobu obsługi. W takim wypadku programista systemowy może stworzyć abstrakcyjną warstwę1 z dokładnie zdefiniowanym interfejsem, której przeznaczeniem jest obsługa urządzeń wejścia – wyjścia. Producent urządzenia, który zna specyfikację takiego interfejsu może dostarczyć własne podprogramy obsługi swojego urządzenia (sterowniki). Jedną z większych zalet systemu DOS, a zarazem jedną z największych jego wad jest możliwość bezpośredniej obsługi sprzętu przez programy użytkownika. Tę własność można wykorzystać do poznania zasad obsługiwania niektórych z tych urządzeń. 2. Pamięć ekranu Pamięć karty graficznej (lub jej fragment) jest odwzorowany we fragmencie pamięci RAM komputera. Oznacza to, że zapisanie jakiejkolwiek wartości do tego obszaru RAM spowoduje również zapis tych wartości do pamięci karty graficznej. W przypadku trybu tekstowego dla większości kart graficznych obszar ten zaczyna się od adresu B800:0000h, natomiast jego wielkość zależna jest od trybu tekstowego, w jakim w danej chwili karta pracuje. Opis jednego znaku, który jest wyświetlany na ekranie zajmuje w tej pamięci dwa bajty: pierwszy jest kodem ASCII wyświetlanego znaku, natomiast drugi jest wartością atrybutu tego znaku. W przypadku trybu graficznego zarówno początek bufora w pamięci, jak i jego wielkość oraz organizacja wewnętrzna zależą od rodzaju karty. 1 Przykładem takiej warstwy jest wirtualny system plików występujący w niektórych systemach uniksowych. 2 3. Bufor klawiatury W pamięci RAM znajduje się również obszar, gdzie zapamiętywane są dane przesyłane przez sterownik klawiatury. Obszar ten ma wielkość 32 bajtów i zaczyna się od adresu 0040:001Eh. Jest on zorganizowany w postaci struktury cyklicznej, dlatego skojarzone są z nim dwie zmienne dwu bajtowe o adresach 0040:001Ah i 0040:001Ch oznaczające odpowiednio początek cyklicznego bufora klawiatury (wskazuje pierwszy znak do odebrania) i koniec cyklicznego bufora klawiatury (wskazuje pierwsze wolne miejsce na nadchodzący znak). Za każdym razem, kiedy użytkownik naciśnie klawisz do tego bufora wpisywane są dwa bajty: kod klawisza i kod ASCII. 4. Mysz Mysz w systemie MS-DOS jest obsługiwana za pomocą przerwania 33h. Procedura obsługi tego przerwania dostarczana jest jako sterownik myszy przez jej producenta. Jeśli dostawca myszy nie zaopatrzył jej w sterownik, stosowana jest domyślna procedura obsługi będąca częścią systemu MS-DOS. Zapewnia ona między innymi takie funkcje, jak: inicjalizacja myszy, wyświetlenie/ukrycie kursora, odczytanie stanu przycisków i położenia myszy, odczytanie informacji o naciśnięciu przycisków myszy. Więcej informacji na temat obsługi urządzeń wejścia-wyjścia można znaleźć w rozdziałach 14 i 15 książki „DOS 5 od środka” oraz w rozdziale 14 książki „Anatomia PC”. 5. Zadania Podczas pierwszych zajęć należy przynajmniej zrealizować drugie zadanie. Na drugich zajęciach pozostałe. 1. [1 punkty] Napisz program, który odwołując się bezpośrednio do pamięci karty graficznej w trybie tekstowym zaprezentuje na ekranie monitora prostą animację (np. przesuwający się kolorowy prostokąt). 2. [2 punkty] Napisz program, który będzie wypisywał na ekran, na bieżąco zawartość bufora klawiatury i stan jego wskaźników. 3. [1 punkty] Napisz program, który będzie pokazywał kursor myszy oraz podawał na bieżąco informacje o jego współrzędnych oraz o stanie przycisków myszy. 3