OS-9 - Politechnika Wrocławska
Transkrypt
OS-9 - Politechnika Wrocławska
SYSTEMY OPERACYJNE CZASU RZECZYWISTEGO Wykład dla ESA IV Marek WNUK Instytut Cybernetyki Technicznej Politechnika Wrocławska Janiszewskiego 11 17 50–372 Wrocław pok. 307 C–3 [email protected] MW-ZPCiR-ICT-PWr OS-9 RTOS Bibliografia [1] Silberschatz A., Peterson J., Galvin P., Podstawy systemów operacyjnych, WNT, Warszawa, 1993. [2] Wnuk M., OS-9 - modułowy, wielozadaniowy system czasu rzeczywistego, Raport ICT SPR 31/94, Wyd. PWr., Wrocław, 1994. [3] Wnuk M., Materiały do wykładu o OS-9, (PDF). [4] Dayan P. The OS-9 Guru, Galactic Industrial Ltd., Durham, 1992. [5] Dibble P., OS-9 Insights, 3.0 Edition, Microware, Des Moines, 1994, (PDF). [6] Dokumentacje techniczne OS-9, (HTML). [7] FAQ dla OS-9 (HTML). : [8] Program zajeć http://rab.ict.pwr.wroc.pl/˜mw/Docs/ete7036.htm MW-ZPCiR-ICT-PWr 1 OS-9 RTOS System komputerowy a system operacyjny System komputerowy: sprzet peryferyjne,...) ( procesor, pamie ć, urzadzenia system operacyjny programy użytkowe (kompilatory, bazy danych, gry,...) użytkownicy System operacyjny: pośrednik pomiedzy użytkownikiem komputera a sprzetem, środowisko, w którym użytkownik może uruchamiać programy, program sterujacy, ktory nadzoruje wykonywanie programów użytkownika, przeciwdziała błedom, obsługuje urzadzenia wejścia–wyjścia. MW-ZPCiR-ICT-PWr 2 OS-9 RTOS Funkcje systemowe Nadzorowanie procesów process management: utworzenie (create), zaniechanie (abort),zakończenie (terminate), pobranie/ustawienie atrybutów (get/set attributes), przydział/zwalnianie pamieci (allocate/free memory), czekanie czasowe (wait for time), czekanie na zdarzenie (wait for event), sygnalizacja zdarzenia (signal event); Operacje na plikach file management: utworzenie (create), usuniecie (delete), otwarcie (open), zamkniecie (close), czytanie (read), pisanie (write), zmiana położenia (reposition), pobranie/ustawienie atrybutów (get/set attributes); device handling: zamówienie (requOperacje na urzadzeniach est), zwolnienie (release), czytanie (read), pisanie (write), zmiana położenia (reposition), pobranie/ustawienie atrybutów (get/set attributes); Utrzymywanie informacji data maintenance: pobranie/ustawienie daty/czasu (get/set date/time), pobranie/ustawienie danych systemowych (get/set system data), pobranie/ustawienie parametrów pro- cesu/pliku/urzadzenia (get/set process/file/device attributes), (creKomunikacja communication: utworzenie/usuniecie połaczenia ate/delete connection), nadawanie/odbieranie komunikatów (send/receive messages), przekazywanie informacji o stanie (transfer status information), przyłaczanie/odłaczanie urzadzeń zdalnych (attach/detach remote devices). MW-ZPCiR-ICT-PWr 3 OS-9 RTOS OS-9 – modułowy, wielozadaniowy system czasu rzeczywistego elastyczna, modułowa architektura 100% romowalność, praca bezdyskowa wielozadaniowość i wielodostepność podział czasu z wywłaszczaniem funkcje czasu rzeczywistego we/wy niezależne od sprzetu odporny na awarie system plików zgodność z UNIX-em na poziomie C dostepność jezyków wyższego rzedu narzedzia do uruchamiania programów na różnych poziomach (User, System, Source) MW-ZPCiR-ICT-PWr 4 OS-9 Wybrane programy użytkowe OS–9 RTOS attr - odczyt i zmiana atrybutów pliku binex - zamiana pliku na postać szesnastkowa (S-rekordy) build - tworzenie krótkich plików tekstowych cmp - porównywanie plików code - wyświetlanie szesnastkowych kodów klawiszy copy - kopiowanie plików date - wyświetlanie daty i czasu dcheck - sprawdzanie poprawności katalogu/dysku urzadzenia deiniz - odłaczenie del - kasowanie plików deldir - kasowanie katalogów ń weẃy devs - wyświetlanie tablicy zainicjowanych urzadze dir - wyświetlanie zawartości kartoteki dump - szesnastkowe wyświetlanie zawartości pliku echo - wysyłanie tekstu na ekran exbin - zamiana S-rekordów na postać binarna fixmod - odtworzenie sum kontrolnych i CRC modułu free - wyświetlanie wolnego miejsca na dysku grep - przeszukiwanie plików według wzorca help - wyświetlanie informacji o komendach ident - wyświetlanie informacji o modułach ń weẃy iniz - inicjowanie urzadze link - przyłaczanie modułu w pamieci list - wyświetlanie zawartości pliku MW-ZPCiR-ICT-PWr 5 OS-9 RTOS load - ładowanie modułów z pliku do pamieci login - właczanie sie do systemu (wielodostep) makdir - tworzenie katalogu mdir - wyświetlanie kartoteki modułów merge - łaczenie plików na wyjście standardowe mfree - wyświetlanie wolnego miejsca w pamieci ścieżki danych pd - wyświetlanie bieżacej pr - wyświetlanie pliku z formatowaniem procs - wyświetlanie aktualnych procesów qsort - szybkie sortowanie pliku w pamieci rename - zmienianie nazwy pliku save - składowanie modułów pamieciowych do plików shell - powłoka - interfejs użytkownika, jezyk komend sh - powłoka - interfejs użytkownika, jezyk komend sleep - zatrzymanie procesu na zadany czas, lub do przerwania tee - kopiowanie wejścia na kilka ścieżek wyjściowych tmode - wyświetlanie i ustawianie parametrów terminala touch - aktualizacja daty dostepu do pliku umacs - edytor ekranowy MicroEMACS 3.6 (mały) emacs - edytor MicroEMACS 3.10 (rozbudowany) modułów pamieciowych unlink - odłaczanie xmode - zmiana parametrów urzadzenia znakowego MW-ZPCiR-ICT-PWr 6 OS-9 RTOS Środowisko programowania w OS–9 Etapy tworzenia programu: tworzenie (edycja) źródła, kompilacja/asemblacja do plików relokowalnych (ROF - relocatable object file), łaczenie (link) ROF-ów w moduł programowy, testowanie przy pomocy debuggera. Fazy kompilacji: wstepne przetwarzanie (cpp), kompilacja (c68, c68020), optymalizacja (o68). MW-ZPCiR-ICT-PWr 7 OS-9 RTOS Narzedzia do tworzenia oprogramowania: cc egzekutor kompilatora C cpp preprocesor C c68 kompilator C dla 68000 i 68010 c68020 kompilator C dla 68020, 68030 i68040 o68 optymizator asemblera r68 asembler dla 68000 i 68010 r68020 asembler dla 68020, 68030 i 68040 l68 linker debug symboliczny debugger asemblera srcdbg symboliczny debugger C sysdbg debugger procesów w trybie systemowym MW-ZPCiR-ICT-PWr 8 OS-9 Moduły Modułowa budowa systemu OS–9 APLIKACJE KOMENDY CIO REAL-TIME SBF KERNEL PIPE MAN TAPE SCF RBF MATH FD PIPE ACIA NFM HD PIA NET MW-ZPCiR-ICT-PWr 9 OS-9 Moduły Budowa modułu ,.-KJ<L ,.-0/214365 ,.-87:9<;=5 ,.-0>?9A@A1CB6D ,.-FEAG25IH !#" MONQPSRUTVPSWXM $&% '( $*)+$ MW-ZPCiR-ICT-PWr 10 OS-9 Moduły Wspólna cze ść nagłówka modułu adr. 00 02 04 08 0C 10 12 14 16 18 1C 20 22 2E C module.h msync msysrev msize mowner mname maccess mtylan mattrev medit musage msymbol mident mspare mparity MW-ZPCiR-ICT-PWr asm module.a znaczenie M$ID M$SysRev M$Size M$Owner M$Name M$Accs M$Type,M$Lang M$Attr,M$Revs M$Edit M$Usage M$Symbol Znacznik modułu (4AFC) Numer wersji systemu Wielkość modułu Wlaściciel modułu Wskaźnik nazwy modułu Zezwolenia na dostep Typ i jezyk Atrybuty i wersja modułu Numer edycji modułu Wskaźnik komentarzy Wskaźnik tablicy symboli Kod identyf. modułu Zarezerwowane Suma kontrolna nagłówka M$Parity 11 OS-9 Moduły Wybrane pola nagłówka M$Accs: -- -- -- -- -- pe pw pr -- ge gw gr -- ce cw cr p – public, g – group, c – creator, w – write – pozwala na zapis do modułu, moduł, r – read – pozwala ładować, przyłaczeć i odłaczać e – execute – pozwala uruchamiać moduł. M$Type: 1 - Prgm - moduł programowy 2 - Sbrtn - moduł podprogramów 4 - Data - moduł danych 11 - TrapLib - biblioteka 12 - Systm - składnik systemu plikami 13 - Flmgr - moduł zarzadzania ń 14 - Drivr - moduł sterownika urzadze ń 15 - Desc - moduł deskryptora uradze MW-ZPCiR-ICT-PWr 12 OS-9 Moduły M$Lang: 1 - kod maszynowy 2 - kod pośredni Basic 3 - kod pośredni Pascal 4 - kod pośredni C M$Attr: sharable sticky supervisor -- -- -- -- -sharable – zezwala na równoczesne używanie modułu przez wiele procesów, sticky – moduł jest usuwany z kartoteki przy wartości MD$Link= Y 1, a nie 0, supervisor – moduł pracuje w trybie uprzywilejowanym. M$Revs: Pozwala na dynamiczne zastepowanie istniejacych modułów ich nowszymi wersjami (nawet w ROM). Jeśli ładowany moduł ma wyższy numer wersji od istniejacego w kartotece, to funkcja F$Load podstawia w kartotece nowy moduł w miejsce starego. MW-ZPCiR-ICT-PWr 13 OS-9 Moduły Zmienna cze ść nagłówka modułu Typ modułu Flmgr, Systm Drivr Prgm TrapLib MW-ZPCiR-ICT-PWr adr. C asm znaczenie Wskaźnik startu Wskaźnik obsługi TRAP Wielkość obszaru danych Wielkość obszaru stosu Wskaznik inicjalizacji danych Wskaznik inicjalizacji wskaznikow Wskaźnik inicjalizacji TRAP Wskaźnik zakończenia TRAP 30 34 mexec mexcpt M$Exec M$Excpt 38 mdata M$Mem 3C mstack M$Stack 40 midata M$IData 44 midref M$IRefs 48 minit M$Init 4C mterm M$Term 14 OS-9 Moduły Systemowy katalog modułów (Module Directory) adr. asm 00 04 MD$MPtr MD$Group 08 MD$Static 0C 0E MD$Link MD$MChk znaczenie Adres modułu w pamieci Identyfikator grupy modułów (adres pierwszego modułu grupy) Wielkość pamieci zajetej przez grupe modułów Licznik użytkowników modułu Suma kontrolna nagłówka modułu F$Link - zwraca adres modułu o podanej nazwie, zwieksza MD$Link; F$Load - ładuje moduł z pliku o podanej ścieżce, wykonuje F$Link; F$UnLink - zmniejsza MD$Link dla modułu o podanym adresie, usuwa moduł i zwalnia pamieć przy MD$Link Z 0; F$UnLoad - zmniejsza MD$Link dla modułu o podanej nazwie, przy MD$Link Z 0. usuwa moduł i zwalnia pamieć MW-ZPCiR-ICT-PWr 15 OS-9 Moduły Funkcje biblioteki C dla modułów Funkcja C Opis crc() get module dir() obliczenie CRC dla modułu pobranie elementu kartoteki modułów utworzenie modułu utworzenie modułu danych (typu Data) “kozaładowanie modułu do pamieci lorowanej” (colored memory) dowiazanie do modułu o zadanej nazwie i typie i załadowanie modułu do pamieci dowiazanie załadowanie modułu do pamieci z użyciem zmiennej PATH i dowiazanie usuniecie dowiazania do modułu o zadanym adresie usuniecie dowiazania do modułu o zadanej nazwie make module() mkdata module() modcload() modlink() modload() modloadp() munlink() munload() MW-ZPCiR-ICT-PWr 16 OS-9 Moduły Przykład dostepu do modułu danych /* zalozenie: w module typu Data o nazwie "my_module" sa umieszczone dane w postaci struktury o typie my_data; wskaznik dptr ma zostac ustawiony na ich poczatek */ #include <module.h> mh_com *mhptr; my_data *dptr; /* wskaznik struktury naglowka */ /* wskaznik struktury danych */ /* szukanie modulu */ mhptr = modlink("my_module", 0); /* wyjscie z bledem */ if(mhptr == -1) return (errno); /* znalezienie wskaznika do danych */ dptr = (my_data *)((char *)mhptr + mnptr->_mexec); MW-ZPCiR-ICT-PWr 17 OS-9 Moduły Komendy systemowe dla modułów mdir Syntax: mdir [<opts>] [<mod names>] [<opts>] Function: display module directory Options: -a print language instead of type -e print extended directory listing -t=<type> list modules only of type <type> -u print unformatted listing load Syntax: load [<opts>] {<module> [<opts>]} Function: load a module into memory Options: -d load file from data directory -l print pathlist of file loaded -z get list of file names from std. input -z=<path> get list of file names from <path> MW-ZPCiR-ICT-PWr 18 OS-9 Moduły link Syntax: link [<opts>] {<modname> [<opts>]} Function: link a module in memory Options: -z get list of module names from std. input. -z=<path> get list of module names from <path> unlink Syntax: unlink [<opts>] {<modname> [<opts>]} Function: unlink modules from memory Options: -z get list of module names from std. input -z=<path> get list of module names from <path> ident Syntax: ident [<opts>] {<modname> [<opts>]} Function: display module information Options: -m ident module in memory -q quick mode, only one line per module -s silent mode: quick, only disp. bad crcs -x ident module in execution directory -z get list of module names from std. input -z=<file> get list of module names from <file> MW-ZPCiR-ICT-PWr 19