Elementy OS ReMix-2116x

Transkrypt

Elementy OS ReMix-2116x
POSIX – ang. Portable Operating System
Interface for Unix
POSIX:

próba standaryzacji różnych dystrybucji systemu operacyjnego UNIX,

Początek prac 1985 r. pod auspicjami IEEE. POSIX – IEEE 1003,

Obecnie rozwojem standardu POSIX zajmuje się The Open Group we współpracy
z IEEE oraz firmami komputerowymi tj.: IBM, Sun Microsystems, HP, NEC Corp.,
…

Single UNIX Specification, Version x;

Single UNIX® Specification, Version 4, 2013 Edition – technicznie identyczna z
IEEE Std 1003.1, 2013 Edition and ISO/IEC 9945:2009 including ISO/IEC
9945:2009/Cor 1:2013(E)
Programowanie Systemów Wbudowanych
1/6
POSIX – ang. Portable Operating System
Interface for Unix
POSIX standaryzuje:
 interfejs programistyczny API;
 interfejs użytkownika, między innymi polecenia systemowe;
 właściwości powłoki systemowej.
 Systemy w pełni zgodne z POSIX: Mac OS X 10.5, QNX, BeOS,
AtheOS/Syllable.
 Systemy zgodne w znacznym stopniu GNU/Linux i FreeBSD.
 Świadectwo zgodności uzyskały niektóre dystrybucje Linuksa:
Linux-FT czy też Unifix Linux.
 Microsoft Windows – środowiska Cygwin i Interix pozwalają na
korzystanie z POSIX-owego interfejsu programistycznego.
Programowanie Systemów Wbudowanych
2/6
POSIX – ang. Portable Operating System
Interface for Unix
Rodzina standardów POSIX:
 P1003.1:
 Definiuje interfejs aplikacji w taki sposób aby była ona w pełni
przenośna pomiędzy różnymi systemami operacyjnymi;
 Wykorzystanie w interfejsie modeli z systemu UNIX;
 Zawiera funkcje często implementowane jako wywołania systemowe.
 P1003.1a:
 Interpretacji, wyjaśnień i rozszerzeń (linki symboliczne).
 P1003.1b:
Rozszerzenia powiązane z systemami czasu rzeczywistego:
Programowanie Systemów Wbudowanych
3/6
POSIX – ang. Portable Operating System
Interface for Unix









semafory (binarne);
proces blokowania pamięci;
pliki mapowane w pamięci i współdzielona pamięć;
kolejkowanie priorytetowe;
sygnały w czasie rzeczywistym;
liczniki czasu (timers);
komunikacja międzyprocesowa;
synchroniczne operacje wejścia/wyjścia (I/O);
asynchroniczne operacje wejścia/wyjścia (I/O);
 P1003.1c:
Obsługa wątków (lekkie procesy);
Programowanie Systemów Wbudowanych
4/6
POSIX – ang. Portable Operating System
Interface for Unix
 P1003.1d:
Kolejne funkcje wspierające systemy czasu rzeczywistego;
 P1003.1e:
 Bezpieczeństwo systemu wg kryteriów bezpieczeństwa
Departamentu Obrony USA TCSEC – Trusted Computer System
Evaluation Criteria;
 P1003.1f - h, P1003.2b – d, P1003.3, P1003.5, P1387, P1003.9,
P1003.10, P1003.11, P1003.13, P1003.14, P1003.16, P1224.2
Programowanie Systemów Wbudowanych
5/6
POSIX – ang. Portable Operating System
Interface for Unix
 Koszty:
 IEEE – wysokie koszty dokumentacji POSIX;
 Alternatywa – standard Single UNIX Specification – jest otwarty,
dostępny nieodpłatnie i uwzględnia uwagi każdego.
 Procedury standaryzacyjne wraz z testami PCTS – POSIX
Conformance Test Suite, są obecnie kosztowne;
 Implementacja, która pozytywnie przejdzie testy otrzymuje
świadectwo zgodności ze standardem POSIX.
Programowanie Systemów Wbudowanych
6/6
5LP
256MB SDRAM
ID_4
LX0_[9..0]
4SP
L1
L0
M19
ID_1
ID_2
ID_3
M18
M20
L1
L0
5LP
256MB SDRAM
L1 L0
L1
L1
ID_3
ID_2
ID_1
M17
M23
M22
M21
L0
L0
L0
L1
L0
L0
ID_4
L1
M24
LY0_[9..0]
4SP
L1
X
Y
LX2_[9..0]
LY1_[9..0]
LX1_[9..0]
LY2_[9..0]
L1
LX3_[9..0]
L0
LX4_[9..0]
L4
L3 L2
ID_4
L0 L5
ID_1
M3
L2 L3
L5 L0
L5
L1
M4
L2
512Kx64
ID_2
SBSRAM
M10
L4
L4
L3
L1
ID_3
M11
L1
L5
L0
LY3_[9..0]
L4
LY4_[9..0]
L3 L2
J1J4
X
M2
L3
L0
J5J8
L0
Y
L0
L1
L4
L2
L2
L5
L4
L0
L1
160
L5
L3
V_M9
L1
L2
L5
VME
VME,
6LP, 5SP
L2
L1
L4
L3
L4
M12
L3
L5
Schemat połączeń linkportowych pakietu FLY-5G6.
Programowanie Systemów Wbudowanych
7/6
ReMix-2116x
 Możliwość określenia czasów najgorszego
parametry czasowe systemu operacyjnego:
przypadku:
 Czas realizacji usług systemowych;
 Czas reakcji na zdarzenia zewnętrzne;
minimalizowane są w uwzględnieniem najgorszego przypadku.
 Przewidywalność:
możliwość
udowodnienia
na
etapie
projektowania systemu, że przy określonych założeniach spełni on
wszystkie stawiane mu wymagania czasowe. W systemie ReMix:
 Określenie gwarantowanego czasu reakcji;
 Zapewnienie wyłączności w przydziale
pierwszoplanowemu.
Programowanie Systemów Wbudowanych
procesora
zadaniu
8/6
ReMix-2116x
 Wieloprocesorowość:
wykorzystanie
przetwarzania
równoległego pozwala uzyskać w niewielkich gabarytach sprzętu,
urządzenie o mocy obliczeniowej wystarczającej do wykonania
stawianych mu zadań w ramach założonych limitów czasowych.
 Na poziomie oprogramowania aplikacyjnego system zapewnia
przezroczystość tj. określa jednolite mechanizmy przekazywania
informacji nie wymagające znajomości lokalizacji odbiorcy informacji.
 Z punktu widzenia użytkownika cały wieloprocesorowy system
zachowuje się jak pojedynczy wirtualny procesor o dużych
możliwościach.
 Rozdział zadań pomiędzy poszczególne procesory sygnałowe i
komputery PC odbywa się za pomocą funkcji konfiguracyjnych. W
systemie ReMix określone zostały jednolite i efektywne metody
wymiany informacji pomiędzy procesorami, a oprogramowanie
komunikacyjne jest elementem systemu operacyjnego.
Programowanie Systemów Wbudowanych
9/6
ReMix-2116x
 Wielozadaniowość: jest najbardziej pożądaną cechą systemu
operacyjnego czasu rzeczywistego. ReMix pozwala na podział
całego oprogramowania na niewielkie moduły, które mogą być
wszechstronnie
przetestowane
zarówno
w
środowisku
rzeczywistym jak i symulowanym.
 Dekompozycja problemu na zadania.
 Ujednoliceniu mechanizmów synchronizacji i wymiany informacji.
 Pojedyncze zadanie jest zwykle związane z obsługą pewnego zasobu
sprzętowego lub z określoną funkcją, jaką ma spełniać system. W
przypadku rozbudowy konfiguracji sprzętu lub algorytmu pracy,
wystarczy modyfikacja niektórych tylko zadań lub opisanie nowych,
bez jakichkolwiek zmian w pozostałej części oprogramowania.
Programowanie Systemów Wbudowanych
10/6
ReMix-2116x
 Kooperatywność - wielozadaniowość w systemach UNIX-owych
ma na celu lepsze wykorzystanie mocy obliczeniowej
mikrokomputera przez równoległe wykonywanie kilku
programów aplikacyjnych w systemie podziału czasu
procesora – podstawowe wymaganie – zapewnienie dobrej
izolacji pomiędzy procesami. Ewentualny błąd w zadaniu nie
może wpłynąć na wykonywanie pozostałych zadań. Komunikacja
międzyzadaniowa ma drugorzędne znaczenie.
 W systemie ReMix koncepcję wielozadaniowości zrealizowano
na innym poziomie:
 Zadania nie są przełączane w trybie podziału czasu, tylko jawnie
zwalniają procesor wywołując tzw. Funkcje blokujące. Podejście
takie zmniejsza liczbę przełączeń kontekstu, które dla procesorów
sygnałowych jest dość kosztowne.
Programowanie Systemów Wbudowanych
11/6
ReMix-2116x
 Wieloplatformowość - system operacyjny ReMix przeznaczony
jest do wykorzystania w systemach wieloprocesorowych
zawierających:
 komputery ogólnego przeznaczenia klasy PC;
 specjalizowane procesory sygnałowe SHARC:
 rodziny ADSP-2106x i
 rodziny ADSP-2116x.
Wersje systemu ReMix dla poszczególnych platform sprzętowych
są ze sobą programowo zgodne, tzn. zawierają ten sam zestaw
funkcji systemowych i tworzą jednolite w całym urządzeniu
środowisko dla oprogramowania aplikacyjnego.
Jednolitość systemu operacyjnego na różnych platformach
sprzętowych bardzo ułatwia programowanie i zmniejsza koszty
jego tworzenia.
Programowanie Systemów Wbudowanych
12/6
Elementy OS ReMix-2116x
Zadania systemowe
Zadania użytkownika
System
aplikacyjny
Jądro systemu
Programowanie Systemów Wbudowanych
Zadania użytkownika
13/6
Elementy OS ReMix-2116x
Jądro systemu - główną funkcją jądra jest synchronizacja zadań i
pośredniczenie w komunikacji między nimi.
podstawowymi zasobami systemu, jakimi są:
 pamięć operacyjna,
 układ przerwań procesora;
 zegar czasu systemowego.
Jądro
zarządza
także
Jądro systemu widziane jest przez zadania jako biblioteka funkcji
systemowych.
Programowanie Systemów Wbudowanych
14/6
Elementy OS ReMix-2116x
Funkcje jądra można podzielić na następujące grupy:
 konfiguracji systemu – definiowanie zadań oraz dróg połączeń między
nimi;
 synchronizacji zadań – wybór zadania, któremu zostanie przydzielony
procesor;
 zarządzania pamięcią operacyjną – przydział i zwalnianie;
 zarządzania układem przerwań – podłączanie procedur użytkownika do
odpowiednich źródeł przerwań, zgłaszanie przerwań i sygnałów;
 komunikacji międzyzadaniowej - tworzenie i przekazywanie komunikatów
między zadaniami;
 obsługi zegara – realizacja zleceń związanych z odliczaniem czasu;
 pomocnicze – określające stopień wykorzystania zasobów, nazwy
elementów systemu itp.
Programowanie Systemów Wbudowanych
15/6
Elementy OS ReMix-2116x
Zadania:
Z punktu widzenia jądra systemu operacyjnego, zadania systemowe i
zadania użytkowe nie są rozróżnialne i są traktowane jako procesy
współbieżne wykonywane na tych samych prawach. Wykorzystują one te
same mechanizmy synchronizacji i komunikacji między zadaniami. Podział
na część systemową i użytkową jest umowny i wynika z różnic w funkcjach
spełnianych przez zadania.
Zadania części systemowej:
 zapewniają podstawową obsługę zasobów sprzętowych. Zadanie obsługi
zabezpiecza dany obiekt przed użyciem go przez więcej niż jedno zadanie
w danej chwili
 dopuszczają wykonywanie tylko takich operacji na obiekcie, które zostały
z góry przewidziane przez projektanta systemu, zwalniając równocześnie
użytkownika systemu z obowiązku szczegółowej znajomości zasad
funkcjonowania sprzętu
 dobierane są stosownie do potrzeb
Programowanie Systemów Wbudowanych
16/6
Elementy OS ReMix-2116x
Zadania:
Zadania użytkowe nie pełnią funkcji ochrony zasobów i pisane są przez
użytkownika dla konkretnej aplikacji. Zadania użytkowe są niezależne od
konkretnej realizacji sprzętowej poszczególnych bloków systemu. Zapewnia
to ich przenoszalność w przypadku modyfikacji konfiguracji sprzętu.
W systemie ReMix nie istnieje dynamiczne tworzenie zadań. Wszystkie
muszą zostać powołane przed startem programu wielozadaniowego.
Program napisany w języku C startuje jako pojedynczy proces od wywołania
funkcji main. Przygotowanie nowego zadania wymaga wykonania funkcji
systemowej CreateTask, której argumentami są podstawowe informacje o
zadaniu. Tworzone są wtedy odpowiednie struktury systemowe opisujące
zadanie i rezerwowana jest pamięć na jego stos. Kolejność wykonywania
funkcji CreateTask decyduje o priorytetach zadań - utworzone wcześniej
mają wyższy priorytet. Dopiero po utworzeniu wszystkich zadań składających
się na system aplikacyjny można uruchomić program wielozadaniowy
poprzez wykonanie funkcji StartSystem.
Programowanie Systemów Wbudowanych
17/6
OS ReMix-2116x - komunikaty
Najszybszą metodą przekazywania informacji pomiędzy zadaniami
umieszczonymi na tym samym procesorze lub na procesorach mających
dostęp do wspólnej pamięci jest wykorzystanie takich obszarów pamięci. W
systemie wielozadaniowym każdy zasób, w tym każdy obszar pamięci,
może mieć tylko jednego właściciela, tzn. może być dostępny w danej
chwili tylko jednemu zadaniu. Przyjęcie tej zasady zwalnia użytkownika z
obowiązku stosowania typowych mechanizmów
zabezpieczania
współdzielonych zasobów przed jednoczesnym dostępem, np.
semaforów. Wyklucza to jednak możliwość bezpośredniego wykorzystania
wspólnej pamięci do wymiany informacji. Inna możliwość, jaką może być
przepisywanie informacji zawartych w lokalnej pamięci jednego zadania
do pamięci znajdującej się w dyspozycji innego zadania, jest nie do
przyjęcia ze względów czasowych. Stosowana w systemie ReMix koncepcja
przekazywania
informacji
między
zadaniami
związana
jest
z
przekazywaniem praw własności do pewnych zasobów, w tym wypadku obszarów pamięci.
Programowanie Systemów Wbudowanych
18/6
OS ReMix-2116x - komunikaty
ReMix jest systemem sieciowym. Za węzeł sieci, czyli zestaw środków
sprzętowych i programowych stanowiących implementację trzech
najniższych warstw protokołu komunikacyjnego, tj. warstwy fizycznej, łącza
danych i sieciowej, należy uznać pojedynczy procesor.
Informacje wymieniane pomiędzy zadaniami mają postać komunikatów –
adresatem może być albo konkretne zadanie (komunikat jest wtedy
adresowany do jednej z jego skrzynek prywatnych), albo jedno z zadań
działających w pewnym węźle sieci (komunikat jest wtedy adresowany
do skrzynki globalnej – dostępnej dla wszystkich zadań działających na
tym procesorze).
Ponieważ komunikaty mogą być wymieniane zarówno między zadaniami
działającymi na tym samym, jak i na różnych procesorach, konieczne jest
przyjęcie jednolitego w całej sieci połączonych ze sobą procesorów
sposobu adresowania.
W systemie ReMix do adresowania komunikatów używa się adresów
sieciowych. Na każdym procesorze należy dokonać przypisania adresów
sieciowych do odpowiednich skrzynek.
Programowanie Systemów Wbudowanych
19/6