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