System Linux. Ten wyk lad zawiera wprowadzenie do systemu Xenomai, który jest jednym z systemów rozszerzajacych

Podobne dokumenty
Rozszerzenia czasu rzeczywistego w systemach Linux

1 Zapoznanie się ze środowiskiem Xenomai.

Systemy Operacyjne - Operacje na plikach

Funkcje systemów operacyjnych czasu rzeczywistego

Wieloprogramowy system komputerowy

4.2 Sposób korzystania z l acza

Funkcje systemu Unix

Funkcje systemów operacyjnych czasu rzeczywistego

Prezentacja systemu RTLinux

Wieloprogramowy system komputerowy

Zaawansowane programowanie w C++

Functionalization. Jeszcze o funkcjach i strukturze projektu. Marcin Makowski. 3 grudnia Zak lad Chemii Teoretycznej UJ

Jadro Linux 2.6. a zadania czasu rzeczywistego. Artur Lewandowski. Jądro Linux 2.6 p.1/14

Obliczenia rozproszone z wykorzystaniem MPI

Watki. kod programu za ladowany do pami eci operacyjnej, wraz ze środowiskiem (zbiorem

Paradygmaty programowania. Paradygmaty programowania

Functionalization. Funkcje w C. Marcin Makowski. 30 listopada Zak lad Chemii Teoretycznej UJ

z powielaniem wielu struktur danych oraz komunikacja

Wieloprogramowy system komputerowy

Ghost in the machine

przerwany proces móg l zareagować na określone zdarzenie. Można je traktować jako software owe wersje przerwań sprz etowych.

Systemy Operacyjne Ćwiczenia

Systemy czasu rzeczywistego

Funkcje. Piotr Zierhoffer. 7 października Institute of Computer Science Poznań University of Technology

Technika mikroprocesorowa. Systemy operacyjne czasu rzeczywistego

SYSTEMY CZASU RZECZYWISTEGO - VxWorks

pami eć operacyjna przechowuje dane do przetworzenia, tymczasowe dane pomocnicze,

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

Temat zajęć: Tworzenie i obsługa wątków.

Rozdzia l 3. Laboratorium 3. danych zawierajac

Wykład 3: Implementacja programów wbudowanych

Procesy pojęcia podstawowe. 1.1 Jak kod źródłowy przekształca się w proces

Wstęp do programowania

Szeregowanie w systemach czasu rzeczywistego

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

IdyllaOS. Prosty, alternatywny system operacyjny. Autor: Grzegorz Gliński. Kontakt:

1.1 Definicja procesu

Fizyka laboratorium 1

Q E M U.

projekt akademicki w Institute for Mining and Technology of New Mexico. Autor Victor Yodaiken FSMLabs komercyjna odmiana RTLinuxPro

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

Instytut Teleinformatyki

Projekty Zaliczeniowe Laboratorium Sieci Komputerowych

Wykład 3. Procesy i wątki. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Programowanie obiektowe zastosowanie języka Java SE

1. Tworzenie nowego projektu.

sposób wykonywania operacji zapisu i odczytu dane odczytywane z l acza usuwane (nie można ich odczytać ponownie),

Ograniczenia czasowe RTS. Systemy czasu rzeczywistego. Kiedy RTS jest naprawd e potrzebny? Czy RTS po prostu musi być bardzo szybki?

Adam Kotynia, Łukasz Kowalczyk

Systemy czasu rzeczywistego

Uruchamianie SNNS. Po uruchomieniu. xgui & lub snns & pojawia si e okno. programu. Symulator sztucznych sieci neuronowych SNNS 1

Paradygmaty programowania. Paradygmaty programowania

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach

Interfejs GSM/GPRS LB-431

P. Urzyczyn: Materia ly do wyk ladu z semantyki. Uproszczony 1 j. ezyk PCF

Metody obsługi zdarzeń

przypadków wywo lanie systemowe (funkcja systemowa) lub funkcja biblioteczna zwraca wartość 1(czasamiNULL) iprzypisujezmiennej zewn etrznej,

1. Timery i zdarzenia

Wstęp do Programowania, laboratorium 02

Wstęp. do języka C na procesor (kompilator RC51)

Paradygmaty programowania

Komputery przemysłowe i systemy wbudowane

Systemy wbudowane - wykład 9. Systemy czasu rzeczywistego Notes. Systemy czasu rzeczywistego Notes. Systemy czasu rzeczywistego Notes.

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

Optymalizacja programów Open Source. Profilery wysokiego poziomu część 2. Krzysztof Lichota

Wskaźniki. Informatyka

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Zadania systemu operacyjnego. Abstrakcyjne składniki systemu. System komputerowy

1. Etapy rozwoju systemów komputerowych

Indeks odwzorowania zmiennej zespolonej wzgl. krzywej zamknietej

Jądro systemu operacyjnego

System operacyjny MACH

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).

Podstawowe zagadnienia

Przerwania, polling, timery - wykład 9

Systemy operacyjne oparte na mikrojądrze na przykładzie Minix3. Maciej Łaszcz, Wojciech Łowiec, Patryk Spanily 2 XII 2008

Środowisko Keil. Spis treści. Krzysztof Świentek. Systemy wbudowane. 1 Trochę teorii. 2 Keil

Wyk lad 9 Podpierścienie, elementy odwracalne, dzielniki zera

Systemy operacyjne II

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Instrukcja do laboratorium Systemów Operacyjnych. (semestr drugi)

Tworzenie oprogramowania

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Kurs programowania. Wykład 8. Wojciech Macyna

UNIX: architektura i implementacja mechanizmów bezpieczeństwa. Wojciech A. Koszek dunstan@freebsd.czest.pl Krajowy Fundusz na Rzecz Dzieci

Systemy czasu rzeczywistego wstęp

Sieciowe Systemy Operacyjne

Linux: Procesy. Systemy Operacyjne. Mateusz Hołenko. 26 marca 2013

Projekt i implementacja systemu obsługi kart chipowych

Systemy wbudowane. Systemy operacyjne czasu rzeczywistego

Wyk lad 7 Metoda eliminacji Gaussa. Wzory Cramera

PRZEWODNIK PO PRZEDMIOCIE

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Programowanie w Sieci Internet. Python: Wątki. Kraków, 12 grudnia 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Planowanie procesów. rzeczywistego cz esto mówi si e o planowaniu zadań nie rozróżniajac, pami eci programu). Planowanie zadań 1

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Tablice i funkcje. Marcin Makowski. 26 listopada Zak lad Chemii Teoretycznej UJ

Wprowadzenie do systemów operacyjnych

Transkrypt:

System Linux Ten wyk lad zawiera wprowadzenie do systemu Xenomai, który jest jednym z systemów rozszerzajacych system operacyjny Linux dla zadań czasu rzeczywistego. Linux jest popularnym systemem operacyjnym, zbudowanym na wzór systemu Unix. Linux jest systemem dzia lajacym na wielu platformach sprzetowych (w tym na komputerach typu PC, ale również na wielu typach mikrokontrolerów) szeroko wykorzystywanym, i silnie rozwijajacym sie w wielu dziedzinach. Jedna z przyczyn tej popularności jest fakt, że Linux jest niekomercyjnym systemem typu free open source (FOSS Free and Open Source Software). To znaczy, jego kod źród lowy jest dostepny do dowolnego wykorzystania. W szczególności, można tworzyć rozszerzenia systemu dla dowolnych potrzeb. Drugim ważnym źród lem popularności Linuksa jest bogaty zestaw dobrej jakości oprogramowania, które w wi ekszości również jest dost epne na zasadzie FOSS. System Xenomai 1

Planowanie watków w systemach operacyjnych Mechanizm planowania zadań systemu Linux jest zoptymalizowany do pracy interakcyjnej, to znaczy zadań uruchamianych przez cz lowieka siedzacego przy komputerze i uruchamiajacego różne zadania. Celem planisty Linuksa jest zapewnienie szybkiej reakcji systemu na polecenia użytkownika. Odbywa sie to cześciowo kosztem zadań tzw. t la (drugoplanowych), które moga być wykonywane w chwilach, kiedy system nie jest zajety wykonywaniem zadań interakcyjnych. Podobne strategie planowania zadań realizuje wiele systemów operacyjnych, tzw. ogólnego przeznaczenia (GPOS General Purpose Operating System). Jednak taka zasada dzia lania planisty zadań nie pozwala na skuteczne wykonywanie zadań czasu rzeczywistego, które typowo sa zadaniami drugoplanowymi. Podstawowym wymaganiem zadań czasu rzeczywistego jest, aby mog ly one być wykonane w określonym czasie. W zwyk lym systemie operacyjnym to wymaganie typowo nie jest spe lnione. Zadanie t la może być zawieszane na dowolnie d lugi nieokreślony czas, gdy system zaj ety jest skutecznym wykonywaniem zadań interakcyjnych. System Xenomai 2

Systemy operacyjne czasu rzeczywistego Od szeregu lat rośnie znaczenie i zapotrzebowanie na systemy czasu rzeczywistego. Sa one wykorzystywane do sterowania oraz implementacji systemów komunikacyjnych. Dlatego nawet do systemów ogólnego przeznaczenia, takich jak Solaris, Linux, i innych wprowadzone zosta ly mechanizmy pozwalajace na wykonywanie zadań o priorytecie wyższym niż zadania interakcyjne. Jednak wiekszość z tych mechanizmów nie czyni z systemu typu GPOS systemu operacyjnego czasu rzeczywistego (RTOS Real Time Operating System). Jakie sa niezbedne cechy takiego systemu? Bardzo ogólnie można powiedzieć, że niezbedna jest gwarancja wykonania zadań w określonym czasie. Istnieja dedykowane systemy operacyjne RTOS, od poczatku zaprojektowane do tej roli, takie jak QNX, LynxOS lub VxWorks. Jednak takich systemów jest znacznie wiecej. Wiele z nich stanowia niewielkie systemy zbudowanych dla konkretnej rodziny mikrokontrolerów. System Xenomai 3

Rozszerzenia czasu rzeczywistego Linuksa Na przyk lad, podstawowa zasada systemów GPOS jest, że najważniejsze jest jadro systemu operacyjnego, które decyduje o wszystkim. Gdy jadro ma jakieś prace do wykonania, to wykonuje je przed wszystkimi zadaniami. W systemie czasu rzeczywistego, jadro nie jest najważniejsze. Jeśli jakieś zadanie musi mieć gwarantowany czas wykonania, to może ono być również wykonywane kosztem jadra. Mówimy, że jadro jest wyw laszczane (usuwane z procesora, aby go zwolnić dla innego zadania). Poza ogólnym przygotowaniem Linuksa do tworzenia zadań czasu rzeczywistego, jak implementacja funkcji POSIX, timerów, oraz wprowadzenia priorytetu czasu rzeczywistego, zbudowanych zosta lo szereg rozszerzeń Linuksa, pozwalajacych budować prawdziwe aplikacje czasu rzeczywistego. Rozszerzenia te nazywane sa Real-Time Linux (RT Linux), i jest ich ca ly szereg, niektóre komercyjne a inne o charakterze FOSS. Trzy bardziej znaczace: RTLinux, opracowany przez New Mexico Tech i obecnie utrzymywany przez Wind River Systems (komercyjny), RTAI (Real-Time Application Interface), opracowany przez Politechnike Mediolańska, Xenomai, wywodzacy sie z RTAI Linux, wprowadza uzupe lnienia umożliwiajace czysta przenośność (tzw. skórki). System Xenomai 4

Jak dzia la RT Linux? Ogólna idea systemów RT Linux polega na tym, że istnieje mikrojadro czasu rzeczywistego, które rzeczywiście zarzadza komputerem, i zadaniami czasu rzeczywistego, natomiast zwyk le jadro Linuksa jest dla niego jednym z zadań, w dodatku wykonywanym tylko wtedy, gdy nie ma innych zadań. W chwilach gdy mikrojadro czasu rzeczywistego nie ma nic do zrobienia, uruchamiane jest zwyk le jadro Linuksa. Wykonuje ono wtedy program planisty zadań, i realizuje zwyk le procesy i watki. Jednak w chwili, gdy pojawia sie praca do wykonania przez mikrojadro, jadro Linuksa i jego procesy sa wyw laszczane, i wykonuja sie zadania czasu rzeczywistego. System Xenomai 5

System przerwań System operacyjny jest nap edzany przez system przerwań, które można uważać za puls komputera. Wszystkie programy dzia lajace w systemie operacyjnym sa planowane przez planiste, który jest uruchamiany przez przerwanie zegarowe (tik). Wykonujacy sie program może zablokować sie w oczekiwaniu na jakieś zasoby, lub dobrowolnie zwolnić procesor. W takim przypadku planista jest informowany poprzez przerwanie programowe (wywo lanie systemowe). Sprz et może generować przerwania do przerwania normalnej pracy systemu operacyjnego dla szybkiej obs lugi zdarzenia sprz etowego. System Xenomai 6

Obs luga przerwań RT Linux używa systemu przerwań dla zapewnienia mikrojadru priorytetu wyższego od jadra Linuksa. Kiedy pojawia sie przerwanie, jest ono przekazywane do mikrojadra czasu rzeczywistego, a nie do jadra Linuksa. Jednak przerwania sa przechowywane, i nastepnie przekazywane jadru Linuksa, gdy mikrojadro czasu rzeczywistego skończy lo swoja obs luge. Ponieważ mikrojadro jest pierwsze, może uruchamiać swoje zadania zgodnie z otrzymanymi przerwaniami. Dopiero gdy mikrojadro czasu rzeczywistego nie ma nic do roboty, zapamietane przerwania sa przekazywane do jadra Linuksa. Jako drugie, jadro Linuksa może planować w lasne procesy zgodnie z otrzymanym przerwaniem. System Xenomai 7

Obs luga przerwań (cd.) Kiedy w czasie dzia lania normalnego programu pojawia si e nowe przerwanie: najpierw jest ono obs lugiwane przez procedure obs lugi przerwań mikrojadra czasu rzeczywistego, typowo procedura obs lugi przerwań mikrojadra wywo luje zadanie czasu rzeczywistego realizujace rzeczywista obs luge przerwania (mikrojadro nazywa sie mikrojadrem, bo usunieto z niego wiele procedur, przeniesionych do zwyk lych programów), natychmiast po obs ludze przerwania (a w laściwie jej zainicjowaniu w postaci zadania), uruchamiany jest planista zadań czasu rzeczywistego, planista czasu rzeczywistego zauważa, że istnieje zadanie czasu rzeczywistego gotowe do uruchomienia, wiec wyw laszcza jadro Linuksa, i uruchamia gotowe zadanie czasu rzeczywistego. Aby mikrojadro czasu rzeczywistego i zwyk le jadro Linuksa mog ly wspó listnieć na jednym komputerze, musi istnieć szczególny mechanizm przekazywania przerwań pomiedzy tymi jadrami. Każda wersja RT Linux realizuje to na swój sposób. Np. Xenomai używa potoku przerwań tzw. Adeos. http://www.xenomai.org/documentation/xenomai-2.3/pdf/life-with- Adeos-rev-B.pdf System Xenomai 8

Zadania RT Linux Program RT Linuksa tworzy watki czasu rzeczywistego. Zwyk le programy linuksowe (nie-real-time) używaja zwyk lych watków Pthread. Zadanie czasu rzeczywistego może być wykonywane w przestrzeni jadra wykorzystujac modu l mikrojadra. Zadanie wykonywane w module jadra ma niższe narzuty, ale jakikolwiek b l ad w takim zadaniu może zak lócić prace mikrojadra, albo wywalić ca ly system. Zadanie czasu rzeczywistego może być również wykonywane w przestrzeni użytkownika za pomoca zwyk lego programu w C. Daje to wieksze bezpieczeństwo, ponieważ b l ad w programie użytkownika może jedynie zawiesić ten program. Ponadto, programy uruchamiane w przestrzeni użytkownika moga korzystać z interfejsu funkcji czasu rzeczywistego, jak również ze zwyk lych funkcji Linuksa. (W trybie jadra można korzystać tylko z interfejsu funkcji czasu rzeczywistego i funkcji mikrojadra.) Jednak podczas korzystania przez zadania przestrzeni użytkownika z API Linuksa, nie moga być one planowane przez planiste czasu rzeczywistego, tylko musza być planowane przez zwyk lego Linuksa. Nie bed a wiec one zadania HARD real-time, lecz SOFT real-time. Po zakończeniu wywo lania funkcji z API Linuksa, zadanie powraca do planisty czasu rzeczywistego. System Xenomai 9

Xenomai Projekt Xenomai zosta l uruchomiony w sierpniu 2001 roku. Xenomai opiera sie na abstrakcyjnym rdzeniu RTOS, dostarczajacym zestaw ogólnych us lug RTOS: timery bufory IPC zmienne warunkowe flag zdarzeń us lugi sterty pamieci obs luga przerwań muteksy potoki kolejki komunikatów semafory obs luga watków obs luga timerów System Xenomai 10

Różne interfejsy programistyczne (skórki) Lista funkcji zapewniajacych dostep do us lug Xenomai stanowi tzw. native API, to znaczy interfejs bezpośredni. Jednak istnieja inne specyfikacje interfejsów funkcji czasu rzeczywistego, jak np. interfejs POSIX, realizowany przez wiele systemów. System Xenomai zapewnia alternatywny interfejs POSIX do tych samych us lug. Oznacza to, że us lugi RTOS Xenomai można również wywo lywać przez funkcje POSIX. Na przyk lad, wywo lanie funkcji utworzenia muteksu pthread_mutex_create w systemie Xenomai spowoduje utworzenie muteksu czasu rzeczywistego Xenomai. System Xenomai rozciagn a l te koncepcje dalej, tworzac szereg alternatywnych interfejsów programistycznych do swoich us lug RTOS. Te interfejsy nazywane sa w terminologii Xenomai skórkami (skins). Pozwalaja one przenosić programy napisane w innych systemach RTOS i kompilować je w systemie Xenomai bez modyfikacji. (Jest to tylko możliwe o tyle o ile dany program korzysta w sposób standardowy z danego mechanizmu RTOS, a nie używa jakichś specyficznych mechanizmów danego systemu operacyjnego.) System Xenomai 11

Przyk ladowe skórki realizowane w Xenomai: native bezpośredni interfejs do funkcji Xenomai też jest traktowany jako skórka POSIX PSO+ VxWorks VRTX uitron RTAI: tylko w watkach jadra Zadania czasu rzeczywistego W terminologii systemów czasu rzeczywistego nie mówi sie o procesach ani nawet o watkach, tylko o zadaniach. Nie wszystkie systemy RTOS posiadaja procesy, a nawet nie wszystkie posiadaja watki (chociaż coraz wieksza cześć). Natomiast typowo systemy RTOS posiadaja jakiś model tworzenia zadań, które moga być niezależnie uruchamiane. W kontekście systemów Linux i Xenomai, terminy watki i zadania maja takie samo znaczenie. Mówiac o zadaniu Xenomai odnosimy sie do zadania czasu rzeczywistego w przestrzeni użytkownika, czyli w przestrzeni adresowej procesu Linux (jednak nie należy mylić ze zwyk lym procesem Linuksa). System Xenomai 12

Tworzenie zadania Podczas tworzenia zadania czasu rzeczywistego w Xenomai struktura RT_TASK jest używana jako deskryptor tego zadania. S luży ona do przechowywania wszelkich informacji na temat zadania: funkcja do wykonania przez zadanie czasu rzeczywistego, przekazywany do niej argument, rozmiar stosu przeznaczonego na jego zmienne, jego priorytet, czy b edzie używa l arytmetyki zmiennoprzecinkowej, handler sygna lu, która zostanie wywo lany, gdy zadanie stanie si e aktywne. Zadanie jest tworzone poprzez wywo lanie: int rt_task_create(rt_task *task, const char *name, \ int stack_size, int priority, int mode) task jest wskaźnikiem do struktury RT_TASK, która musi być wcześniej utworzona i wype lniona. name jest napisem stanowiacym symboliczna nazwe zadania. Tej symbolicznej nazwy można użyć aby pobrać strukture zadaniowa przez wywo lanie funkcji rt_task_bind(). System Xenomai 13

stack_size jest rozmiarem stosu, który może być wykorzystany przez nowe zadanie. priority jest priorytetem zadania od 1 do 99. mode to wektor flag, które wp lywaja na zadanie: T_FPU umożliwia zadaniy używanie FPU (jednostka zmiennoprzecinkowa), jeśli jest dost epna (flaga wymuszana dla zadań przestrzeniu użytkownika) T_SUSP powoduje uruchomienie zadania w trybie zawieszonym; w takim przypadku, watek bedzie musia l być jawnie wznowiony za pomoca rt_task_resume(), T_CPU(CPUID) określa, że nowe zadanie ma dzia lać na procesorze nr CPUID (od 0 do RTHAL_NR_CPUS-1 w l acznie). T_JOINABLE (tylko w przestrzeni użytkownika) pozwala innemu zadaniu na oczekaiwanie na zakończenie nowo tworzonego zadania, oznacza to, że rt_task_join() b edzie wywo lane po zakończeniu tego zadania dla wyczyszczenia wszelkich zaalokowanych zasobów przestrzeni użytkownika. System Xenomai 14

Uruchamianie zadania Zadanie jest uruchomiane przez wywo lanie: int rt_task_start(rt_task *task, void (* task_func) (void *), \ void *arg) task jest wskaźnikiem do struktury typu RT_TASK, która musi być już zainicjowana przez wywo lanie rt_task_create() task_func jest funkcja do wykonania przez to zadanie czasy rzeczywistego arg jest argumentem typu void pointer przekazywanym do funkcji zadania Jeśli flaga T_SUSP zosta la podana jako flaga trybu rt_task_create(), to zadanie zostanie uruchomione w trybie zawieszonym. W takim przypadku należy jawnie wznowić to zadanie funkcja rt_task_resume(). W przeciwnym wypadku, zadanie czasu rzeczywistego staje sie gotowe do wykonania natychmiast. System Xenomai 15

#include <stdio.h> #include <signal.h> #include <unistd.h> #include <sys/mman.h> #include <native/task.h> #include <native/timer.h> #include <rtdk.h> RT_TASK demo_task; Przyk ladowy program System Xenomai 16

void demo(void *arg) { RT_TASK *curtask; RT_TASK_INFO curtaskinfo; // hello world rt_printf("hello World!\n"); // inquire current task curtask=rt_task_self(); rt_task_inquire(curtask,&curtaskinfo); } // print task name rt_printf("task name : %s \n", curtaskinfo.name); System Xenomai 17

int main(int argc, char* argv[]) { char str[10] ; // Perform auto-init of rt_print buffers if the task doesn t do so rt_print_auto_init(1); // Lock memory : avoid memory swapping for this program mlockall(mcl_current MCL_FUTURE); rt_printf("start task\n"); System Xenomai 18

} /* * Arguments: &task, * name, * stack size (0=default), * priority, * mode (FPU, start suspended,...) */ sprintf(str,"hello"); rt_task_create(&demo_task, str, 0, 50, 0); /* * Arguments: &task, * task function, * function argument */ rt_task_start(&demo_task, &demo, 0); System Xenomai 19

Blokowanie stron pami eci W programie powyżej, pamieć jest zablokowana przez wywo lanie mlockall ( MCL_CURRENT MCL_FUTURE); Powoduje to wy l aczenie mechanizmu pamieci wirtualnej dla tego zadania, i przydzielone mu strony pamieci fizycznej nie bed a podlega ly wymianie na dysk. Jest to praktycznie konieczne dla wszystkich zadań czasu rzeczywistego, ponieważ jakiekolwiek operacje pamieci wirtualnej trwaja zbyt d lugo, aby mog ly być zachowane jakiekolwiek wymagania czasu rzeczywistego. Xenomai generuje ostrzeżenie, kiedy ten krok jest pominiety w programie. System Xenomai 20

Biblioteka drukowania czasu rzeczywistego rtdk Zauważ, że w powyższym programie użyto funkcji rt_printf() zamiast printf(). Nie użyto printf() ponieważ używa ona wywo lania funkcji Linuksa i dlatego strasznie spowalnia zadanie czasu rzeczywistego. Zamiast tego można używać funkcji czasu rzeczywistego rt_printf() biblioteki rtdk. Jest to osadzona w przestrzeni użytkownika Xenomai biblioteka us lug printf. W rzeczywistości nie zależy nawet od żadnych us lug Xenomai, tylko wykorzystuje czyste API POSIX. API biblioteki librtprint wyglada podobnie jak strony podrecznika printf(3): rt_vfprintf rt_vprintf rt_fprintf rt_printf Podstawowa idea librtdk jest utrzymanie drukowania tak tanio, jak to możliwe nie sa używane żadne blokady ani żadne funkcje systemowe. Każdy watek, który używa rt_printf() i podobnych ma swój lokalny bufor ko lowy. Centralny watek wyjściowy (nie czasu rzeczywistego, jeden watek na proces) nadzoruje przekazywanie treści wszystkich buforów ko lowych watków do strumieni wyjściowych. Kolejność komunikatów zostanie zachowany (zgrubnie) przez globalny licznik sekwencji. Watek wyjściowy wykorzystuje okresowe odpytywanie (domyślnie: 10 Hz), aby uniknać potrzeby specjalnych mechanizmów sygnalizacji. System Xenomai 21

Aby uruchomić non-rt watek wyjściowy należy zawsze musi wywo lać nastepuj ac a na poczatku grupy programów Xenomai: rt_print_auto_init(1); Ta funkcja inicjalizuje bufory rt_print i uruchamia watek wyjściowy nie-rt. System Xenomai 22

Kompilacja programów Xenomai Aby skompilować dowolny program Xenomai, należy najpierw uzyskać CFLAGS i LDFLAGS przez: $ xeno-config --xeno-cflags $ xeno-config --xeno-ldflags Aby ustawić te flagi, użyj $ export CFLAGS= xeno-config --xeno-cflags $ export LDFLAGS= xeno-config --xeno-ldflags Skompilowanie programu ex01.c z natywna bibliotek a implementujac a native Xenomai API i biblioteke druku rtdk $ gcc $CFLAGS $LDFLAGS -lnative -lrtdk ex01.c -o ex01 $ export LD_LIBRARY_PATH=/usr/xenomai/lib System Xenomai 23