SYSTEMY CZASU RZECZYWISTEGO 2009/2010
1. (systemy wbudowane) Które z poniższych zdań jest prawdziwe?
Systemy wbudowane są to specjalizowane komputery, będące integralną częścią pewnego urządzenia. Przykładem takich urządzeń są urządzenia elektroniczne powszechnego użytku, komputery pokładowe. W systemach wbudowanych oprogramowanie tworzone jest na tak zwanym komputerze macierzystym (ang. host), a wykonywane na komputerze docelowym (ang. target). Target zawiera tylko takie zasoby, które konieczne są do realizacji bieżących zadań
2. Przykłady komercyjnych systemów operacyjnych czasu rzeczywistego to:
- Solaris, producent: Sun Microsystems
- LynxOS, producent: Lynux Works
- VxWorks, producent: Wind River Systems
- QNX Neutrino, producent: QNX Software Systems
- RT Linux, producent: Open Source
- Windows CE, producent: Microsoft
- eCOS, producent: Open Source
3. W dziedzinie systemów czasu rzeczywistego, obecnie najszerzej stosowanym standardem jest:
POSIX 1003
4. QNX6 Neutrino jest:
QNX Neutrino jest systemem operacyjnym czasu rzeczywistego.
5. System wbudowany (def.) to:
System wbudowany jest to system komputerowy będący częścią większego systemu i wykonujący istotną część jego funkcji. Przykładem może być komputer pokładowy samolotu lub system sterujący szybką koleją miejską.
6. Które ze zdań (dotyczących systemu rozwoju oprogramowania w systemach czasu rzeczywistego) jest prawdziwe:
Prawdopodobnie:
Na komputerze macierzystym pracującym pod kontrolą system operacyjnego 1 jest zainstalowany system tworzenia oprogramowania. System ten obejmuje takie narzedzia jak: edytor, kompilator, linker, biblioteki, debugger, symulatory, narzędzia do tworzenia dokumentacji. Utworzona w nim aplikacja jest wykonywana na komputerze docelowym, który może pracować pod kontrolą innego system operacyjnego. Na komputerze docelowym można dokonać programowania pamięci trwałe komputera docelowego.
7. W komputerach przeznaczonych do zastosowań wbudowanych brak jest:
str. 11-12
Brak jest klawiatury, monitora, dysków, elementów ruchomych (dyski obrotowe, wentylatory, napędy dyskietek).
8. Do najbardziej znanych standardów dotyczących komputerów przeznaczonych do systemów sterujących i wbudowanych należą:
standard VME
standard Compact PCI
standard PC104
9. W komputerach przeznaczonych do systemów wbudowanych występuje tzw. budzik (ang. watchdog), który jest urządzeniem zabezpieczającym przed:
Budzik jest urządzeniem zabezpieczającym przez skutkami zatrzymania wykonywania programów, które może nastąpić przy awarii sprzętu lub błędzie programowym.
10. Budzik występujący w komputerach przeznaczonych do systemów wbudowanych, jest w stanie:
aktywowanie
odświeżanie
zatrzymanie urządzenia
(ang. - watchdog) jest wsparciem sprzętowym dla osiągnięcia niezawodnej pracy. Jest on w stanie wykonać sprzętowy restart systemu w wypadku, gdy zostanie przekroczony ustalony czas oczekiwania na odpowiedź systemu (zawieszenie programu)
11. System czasu rzeczywistego jest (def.) to:
System czasu rzeczywistego to system komputerowy, w którym obliczenia są prowadzone równolegle z przebiegiem zewnętrznego procesu, mają na celu nadzorowanie, sterowanie lub terminowe reagowanie na zachodzące w tym procesie zdarzenia.
12. Ile rodzajów ograniczeń czasowych jest wyróżnianych w systemach czasu rzeczywistego (w związku z różnymi skutkami niespełnienia ograniczeń czasowych):
Wyróżniamy 2 rodzaje:
Rygorystyczne ograniczenia czasowe
Łagodne ograniczenia czasowe
13. Choćby jednorazowe przekroczenie ograniczenia czasowego powoduje jego niespełnienie. Mowa o ograniczeniu:
Mowa o ograniczeniu rygorystycznym.
14. Które z wymienionych pojęć nie stanowi atrybutu wiarygodności systemu RT?
Atrybuty wiarygodności:
dostępność (ang. availability)
niezawodność (ang. reliability)
bezpieczeństwo (ang. safty)
naprawialność (ang. maintainability)
integralność (ang. integrity)
ochrona (ang. confidentiality)
15. Sytuację, w której system operacyjny pozwala na efektywne wykorzystywanie mocy obliczeniowej procesorów poprzez udostępnienie ich dla wielu użytkowników, procesów i wątków nazywa się:
Współbieżnością.
16. Komunikacja pomiędzy programami aplikacyjnymi a systemem operacyjnym odbywa się poprzez:
Poprzez wywołania programowe (ang. system calls), które mają postać funkcji lub procedury.
17. Które z rozszerzeń standardu POSIX obejmują wątki:
W sumie to prawie wszystkie dotyczą w jakimś sensie wątków.
18. (R3) System QNX Neutrino jest systemem:
System QNX Neutrino jest systemem z mikrojądrem. Zbudowany jest on z modułu zwanego mikrojądrem i zbioru procesów systemowych realizujących usługi (szeregowanie; obsługa urządzeń, pamięci wirtualnej i komunikacji) na rzecz procesów aplikacyjnych.
19. Mikrojądro jest:
Mikrojądro jest modułem programowym (nie jest procesem), który stwarza ramy, w których procesy mogą istnieć. Zapewnia też podstawowe funkcje związane z obsługą przerwań, komunikacją międzyprocesorową, szeregowaniem wątków i ich synchronizacją.
20. Wymień cztery główne zalety systemów o architekturze mikrojądra nad systemami monolitycznymi:
1) Niezależne szeregowanie procesów systemowych
2) Modularność
3) Wzajemna izolacja procesów
4) Możliwość dynamicznego uruchamiania procesów systemowych
21. Przesłanie komunikatu pomiędzy procesami jest:
Przesłanie komunikatu pomiędzy procesami jest przesłaniem pomiędzy nimi pewnej liczby bajtów według ustalonego protokołu. Przesłanie komunikatu jest operacją atomową.
przesyłanie komunikatów jest zaimplementowane na poziomie mikrojądra.
proces wysyłający komunikat jest nazywany klientem
proces odbierający komunikat jest nazywany serwerem
22. W skład mechanizmów komunikacji międzyprocesowej zawartych w mikrojądrze systemu QNX Neutrino wchodzą:
1) Komunikaty i impulsy - (ang. messages, pulses)
2) Sygnały - (ang. signals)
3) Zegary - (ang. clocks)
4) Czasomierze - (ang. times)
5) Procedura obsługi przerwań - (ang. interrupt handlers)
6) Semafory - (ang. semaphores)
7) Blokada wzajemnego wykluczania - muteksy (ang. mutual exclusion lock)
8) Zmienne warunkowe - (ang. conditional variables)
9) Bariery - (ang. barriers)
23. W systemie QNX Neutrino, administrator zasobu jest:
Administratory zasobu (serwery zasobu) [ang. resource manager] - zapewnią jednolity dostęp do różnego rodzaju urządzeń (urządzenia rzeczywiste- dyski, porty szeregowe, porty równoległe, itp. lub wirtualne - sieciowy system plików, pseudoterminal).
Administrator zasobu jest procesem serwerowym, który akceptuje komunikaty od innych procesów . W szczególności obsługuje zlecenia klientów odnoszące się do abstrakcji pliku (abstrakcja pliku → można przeprowadzać operacje tj. otwarcie, odczyt, zapis, zamknięcie, zmianę bieżącej pozycji, ustawienie praw dostępu).
24. W systemie QNX Neutrino, „procnto” jest:
Procnto jest procesem systemowym systemu QNX Neutrino zarządzającym pamięcią, wątkami i procesami.
25. Do najważniejszych systemów plików dostępnych w systemie QNX6 Neutrino należą:
1) Bezpośredni system plików
2) System plików RAM
3) System plików QNX4
4) System plików DOS
5) System plików CD-ROM
6) System plików FFS3
7) Sieciowy system plików NFS
8) Sieciowy system plików CIFS
9) System plików Ext2
10) Wirtualny system plików
26. W systemie QNX Neutrino, „QNet” jest:
QNet jest wewnętrznym protokołem przekazywania komunikatów, który dla pracy lokalnej i sieciowej pozostaje zasadniczo taki sam. Jest on fundamentem dla systemu QNX Neutrino. Protokół ten umożliwia jednolitą metodę dostępu do zasobów tak lokalnych, jak i zdalnych. QNet zapewnia transmisję komunikatów przez sieć.
27. Aplikacje dla QNX6 Neutrino tworzone są w środowisku:
Aplikacje mogą być tworzone w środowiskach systemów QNX6 Neutrino, Windows (NT, 2000, XP), Linux, Solaris SPARC. Narzędziem do tworzenia takich aplikacji jest Momentics Development Suite firmy QNX Software.
28. (R4) Do plików specjalnym w QNX6 Neutrino zaliczamy:
Łącza symboliczne, kolejki FIFO, bloki pamięci, urządzenia blokowe i znakowe.
29. Symbolicznym oznaczeniem prawa wykonania pliku jest:
x
30. W systemie QNX Neutrino, poleceniem do listowania zawartości katalogu jest:
Polecenie „ls”. Składnia polecenia jest następująca ls [-l] [nazwa] gdzie:
l - listowanie w „długim” formacie, wyświetlane są atrybuty pliku
nazwa - nazwa katalogu lub pliku.
Gdy nazwa określa pewien katalog, to będzie wyświetlana jego zawartość. Gdy nazwa katalogu zostanie pominięta wyświetlana jest zawartość katalogu bieżącego.
Gdzie jest pytanie 31?
32. Które z poleceń służy do listowania zawartości pliku tekstowego:
more nazwa_pliku
less nazwa_pliku
cat nazwa_pliku
Można do tego celu użyć też innych narzędzi, np. edytora vi, edytora pod, edytora wbudowanego w program Midnight Commander.
33. Polecenie „hogs” pozwala uzyskać informacje o:
wykorzystaniu procesora przez procesy (jest to informacja o stanie systemu)
34. Kompilując program z poziomu edytora w systemie QNX6 Neutrino, używamy polecenia:
gcc nazwa_pliku -o nazwa_pliku
35. (R 5) Program jest to:
Program jest zapisem algorytmu wraz ze strukturami danych, na których algorytm ten operuje. Program jest strukturą statyczną zapisaną na jakimś nośniku.
36. Które z poniższych stwierdzeń opisujących co to jest proces jest prawdziwe:
Proces jest wykonującym się programem. To aktywna struktura dynamiczna istniejąca tylko w środowisku działającego komputera.
37. Aby proces mógł się wykonywać, potrzebne są co najmniej takie zasoby sprzętowe jak:
Procesor
Pamięć operacyjna
Urządzenia wejścia - wyjścia
38. W komputerach jednoprocesorowych, procesy wykonywane są:
w trybie podziału czasu procesora
39. Podstawowym mechanizmem umożliwiającym podział czasu pracy procesora są:
przerwania
40. ISR oznacza:
Oznacza procedurę obsługi przerwania. Inna sekwencja instrukcji zostaje wykonywana po chwilowym wstrzymaniu wykonywanego ciągu instrukcji. Po zakończeniu procedury przerwany ciąg instrukcji jest zwykle wznawiany.
41. Przerwanie jest to:
Przerwanie to zdarzenie asynchroniczne powodujące zmianę sekwencji wykonywanych przez procesor instrukcji.
[DEF] Przerwanie jest chwilowym wstrzymaniem aktualnie wykonywanego procesu i wykonaniem procedury (obsługi przerwania) przypisanej przerwaniu.
Przerwania są elementem mechanizmu, który wykonuje przełączanie procesów i ich przeplot.
42. W systemie QNX6 Neutrino szeregowaniem zajmuje się:
mikrojądro
43. W systemie QNX6Neutrino procesy są wykonywane kolejno przez zadany kwant czasu, zgodnie z kolejnością wyznaczoną przez:
procedurę szeregującą (ang. Scheduler)
44. Kontekst procesu to:
[DEF] Kontekst procesu to wszystkie informacje potrzebne do wznowienia zawieszonego wcześniej programu.
W szczególności należy zachować takie informacje, które nowy proces zamazuje. W skład kontekstu wchodzą rejestry procesora, w tym licznik rozkazów.
45. Do niezbędnych zasobów pamięciowych procesów zaliczamy:
Segment kodu - (ang. code segment) segment pamięci, w którym są przechowywane instrukcje kodu maszynowego procesu.
Segment danych - (ang. data segment) segment pamięci, w którym są przechowywane dane statyczne procesu (dane te istnieją poprzez cały czas istnienia procesu)
Segment stosu (ang. stack segment) segment pamięci, w którym są przechowywane dane chwilowe procesu (zmienne lokalne procedur, parametry procedur).
Deskryptor procesu - (ang. process descriptor) rekord, w którym w którym system operacyjny utrzymuje wszystkie informacje niezbędne do zarządzania procesem.
46. Przykładowe informacje zawarte w deskryptorze to:
położenie segmentu pamięci (kodu, danych, stosu)
różnorodne atrybuty procesu: identyfikator, ID procesu macierzystego, priorytet, stan, prawa dostępu.
47. Deskryptor procesu to:
[DEF] Dekskryptor procesu to rekord w pamięci operacyjnej zawierający wszystkie informacje potrzebne do administrowania procesami
48. Ile jest kanonicznych stanów procesu w systemie QNX6 Neutrino?
3 (wykonywany, gotowy, zablokowany)
49. Które z opisu wątku jest prawdziwe:
elementarna jednostka podlegająca szeregowaniu
[DEF] pojedyncza ścieżka przebiegu sterowania wykonywana w ramach procesu.
50. Które z poniższych zasobów procesu są wspólne dla wszystkich istniejących w jego ramach wątków?
przestrzeń adresowa, a w szczególności zmienne statyczne i sterta
pliki i urządzenia wejścia - wyjścia
kanały, kolejki i połączenia
51. Które spośród przejść pomiędzy podstawowymi stanami procesów nie jest możliwe?
Rys 5.19, str 70. Stany zawsze przechodzą od dowolnego stanu do stanu ready i odwrotnie . Wyjątkami od tej reguły są stany:
1) send -> reply
2) condvar -> mutex
Nie są możliwe przejścia:
1) ready->reply
2) ready->mutex
52. W przestrzeni adresowej wątków wykonywanych w ramach jednego procesu znajdują się:
dane statyczne
53. Procedura szeregująca może być uaktywniona gdy:
Gdy następuje w przejście w tryb pracy jądra, co ma miejsce w następujących przypadkach:
Wystąpiło przerwanie sprzętowe
Wystąpiło przerwanie wewnętrzne (wątek)
Proces bieżący wykonał wywołanie sprzętowe
W szczególności szeregowanie jest powoływane, gdy zmienia się stan wątku bieżącego.
Wątek bieżący się blokuje
Wątek bieżący jest wywłaszczany
Wątek bieżący samoistnie zwalnia procesor
54. Ze względu na regularność, wyróżnia się następujące rodzaje procesów i wątków synchronicznych:
Periodyczne - są uruchamiane w stałych odstępach czasowych
Aperiodyczne - są uruchamiane w nieregularnych odstępach czasowych
55. Każdy z procesów w QNX6 Neutrino ma przyporządkowany priorytet, który jest liczbą:
Jest liczbą od 0 do 255.
Priorytet 0 - ma proces jałowy
Priorytet 1… 63 - mają procesy nienależące do użytkownika root
Priorytet 1… 255 - mają procesy należące do użytkownika root
56. Ile strategii szeregowania jest dostępnych w systemie QNX6 Neutrino?
Dostępne są 3 strategie szeregowania:
Szeregowanie karuzelowe
Szeregowanie FIFO
Szeregowanie sporadyczne
57. Które spośród dostępnych szeregowań jest domyślnym?
Domyślne jest szeregowanie karuzelowe.
58. (R6) Funkcje fork, exec i spawn:
wykorzystywane są jako podstawowe metody tworzenia procesów
59. Funkcja sched_setparam służy do:
- ustawienia parametrów szeregowania
Składnia: int sched_setparam(pid_t pid, struct sched_param *par)
pid- PID testowanego procesu lub ) dla procesu bieżącego
par - struktura, której elementami są pola określające priorytet
Funkcja zwraca 0, gdy sukces, -1 w przypadku wystąpienia błędu.
60. Podczas wykonania polecenia „int pid = getpid();”:
- ma miejsce deklaracja zmiennej pid typu integer oraz definicja jej wartości z wykorzystaniem funkcji getpid(), służącej do pobrania identyfikatora procesu bieżącego. Innymi słowy: funkcja getpid() pobiera identyfikator procesu (PID) bieżącego i przypisuje go do zmiennej pid typu integer.
61. Podczas wywołania „par.sched_priority = 9;”:
- definicja pola sched_priority struktury par wartością 9.
- par to struktura, której elementami są pola określające priorytet
- pole sched_priority podaje jaki priorytet został ustawiony przy starcie procesu
62. W zapisie „main(int argc, char * arg[])”, „arg[]” jest:
- tablicą wskaźników do łańcuchów zawierających parametry programu
63. Który z parametrów funkcji spawn określa tryb wykonania procesu:
- pierwszy tzn. int mode, który może mieć następujące warianty: P_WAIT, P_NOWAIT, P_OVERLAY, P_NOWAITO
- Składnia: pid_t spawn (int mode, char *path, arg0, arg1,…, argN, NULL)
64. Która z wywołań tworzy kopię procesu bieżącego:
- wykorzystuje się do tego funkcję fork().
- przykładowo: a=fork() - kopia procesu bieżącego
65. Ze składni “pid_t spawnl (int mode, char * path, arg0, arg1, …, argN, NULL) wynika, że:
Nie bardzo wiadomo, co tu może się kryć w odpowiedziach wiec:
spawnl - funkcja tworzy nowy proces
składnia:
pid_t spawnl (int mode, char * path, arg0, arg1, …, argN, NULL
mode - tryb wykonania procesu: P_WAIT, P_NOWAIT, P_OVERLAY, P_NOWAITO
path - ścieżka z nazwą pliku wykonywalnego
arg0, arg1, ..., argN - argumenty przekazane do funkcji main tworzonego procesu
NULL - wskazanie, że lista argumentów jest już zakończona
66. (R7) Tworzenie wielu wątków w obrębie procesu umożliwia:
- funkcja pthread_create.
Funkcja tworzy nowy wątek, którego kod znajduje się w funkcji podanej jako argument func(). Wątek jest uruchamiany z parametrem arg, a informacja o wątku jest umieszczana w strukturze thread.
67. Gdy jeden z procesów(moim zdaniem chodzi o wątki - M. Zając) zmieni wartość pewnej zmiennej, zmienna ta:
a) procesy - każdy proces tworzy zmienne, które są widzane tylko w jego obrębie, możliwe jest jedynie przesyłanie wartości tych zmiennych za pomocą komunikatów
b) wątki - … będzie miała wartość ostatnio ustawioną. Zjawisku temu zapobiegamy blokując mutex
68. Zestaw funkcji operujących na wątkach jest zdefiniowany w bibliotece:
- pthreads (ang. posix threads)
- prototypy operujących na wątkach funkcji są zawarte w pliku nagłówkowym <pthread.h>
69. Do czego służy funkcja „pthread_create()”?
Funkcja tworzy nowy wątek, którego kod znajduje się w funkcji podanej jako argument func(). Wątek jest uruchamiany z parametrem arg, a informacja o wątku jest umieszczana w strukturze thread.
70. W wywołaniu „int pthread_create( pthread_t *thread, pthread_attr_t *attr, void (* func) (void *), *arg)”:
składnia:
int pthread_create(pthread_t *thread, pthread_attr_t *attr, void (* func) (void *), *arg)
thread - identyfikator wątku - wartość jest nadawana przez system operacyjny i służy do identyfikacji wątku
attr - atrybuty wątku, gdy NULL, przyjęte są wartości domyśle; struktura ta podaje różne szczegóły określające wykonanie wątku
func- wskaźnik do funkcji określającej kod wątku; jest to funkcja typu vpid* (*) (void*)
arg - argument przekazywany jako parametr do wątku; jest on typu void*
Funkcja zwraca 0 gdy sukces i -1 dla błędu.
71. Napisz dowolny kod tworzący i wykonujący nowy wątek. Zaznacz miejsce, w którym nowy wątek jest tworzony.
Napisz dowolny kod tworzący i wykonujący nowy wątek. Zaznacz miejsce, w którym nowy wątek jest tworzony.
#include <pthread.h>
#include <stdiolib.h>
void * kod(void *arg){
printf(''Mienso'');
return(NULL);
}
int main(int argc,char *argv[]){
int tid;
pthread_create(&tid,NULL,kod,NULL); ------------------------- tworzony nowy wątek
printf(''Mienso w glownym'');
return 0;
}
72. Informacje o wątkach wykonywanych w ramach procesu można uzyskać za pomocą polecenia:
pidin -p nazwa_procesu
74. Łącza nienazwane tworzy się poprzez funkcję:
pipe()
75. (Pozostałe) Uzupełnij zdanie (2.1):
W systemach wbudowanych, oprogramowanie jest tworzone na tzw. komputerze macierzystym (ang. host), a wykonywane na komputerze docelowym (ang. target). W takim przypadku, jest stosowany system skrośnego rozwoju oprogramowania (ang. cross development).
76. Zinterpretuj kod ustawiający atrybuty dołączalności wątku - dopasuj akcję do wywołania według wzoru:
void *kod(void *data){ |
1 |
… |
|
return (void *) cos |
2 |
} |
|
|
|
main void { |
3 |
pthread_t thr; |
4 |
pthread_attr_t attr |
5 |
int status; |
6 |
pthread_attr_init(&attr); |
7 |
pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_JOINABLE); |
8 |
pthread_create(&thr, &attr, kod, 0); |
9 |
… |
|
pthread_join(thr,(void**) &status); |
10 |
pthread_attr_destroy(&attr); |
11 |
} |
|
Deklaracja funkcji kod |
1 |
Funkcja kod zwraca cos (voidowe) |
2 |
inicjacja funkcji main |
3 |
Deklaracja zmiennej thr typu pthread_t |
4 |
Deklaracja zmiennej attr typu phtread_attr_t |
5 |
Deklaracja zmiennej status typu int |
6 |
Inicjalizacja zmiennej attr |
7 |
Ustawienie dołączalności w atrybucie attr |
8 |
Stworzenie wątku kod z atrybutami ze zmiennej attr |
9 |
Czekanie na zakończenie wątku |
10 |
Zniszczenie zmiennej attr- zwolnienie zasobów zajmowanych przez zmienną attr |
11 |