1.Co to jest system czasu rzeczywistego i jakie znasz typy systemów RTOS?
Systemem czasu rzeczywistego nazywamy system w którym obliczenia przeprowadzane równolegle z przebiegiem zewnętrznego procesu mają na celu nadzorowanie sterowanie lub terminowe reagowanie na zachodzące w procesie zdarzenia
W systemie czasu rzeczywistego przekształcanie danych przesyłanych do lub z
zewnętrznego środowiska zachodzi w deterministycznie określonym czasie.
Stosuje się pojęcie „termin” (ang. deadline), oznaczające najdłuższy
dopuszczalny czas reakcji systemu na wystąpienie zdarzenia. System czasu
rzeczywistego nie musi być szybki - istotne jest jedynie, aby jego działania
spełniały narzucone ograniczenia czasowe.
Systemy czasu rzeczywistego:
iRMX,OS-9,QNX, BeOS, AhteOS i FreeBSD
2.Czym charakteryzuje się system czasu rzeczywistego o twardych (miękkich) ograniczeniach - hard (soft) RTOS? Podaj przykład
-Soft real-time system - działanie systemu ulega pogorszeniu
ale system nie ulega uszkodzeniu na skutek niedotrzymania ograniczenia
czasowego (bankomat).
-Hard real-time system - w którym niedotrzymanie już jednego
ograniczenia czasowego prowadzi do katastroficznej awarii systemu.
(system automatycznego pilota)
*3.Jakie są podstawowe cechy systemu QNX?
-jest to system operacyjny czasu rzeczywistego zaliczany do klasy Unix zgodny z normą POSIX
-charakteryzuje się rzadkim w systemach operacyjnych rozwiązaniem,
w którym nie ma rozdziału na operacje systemowe i operacje
użytkownika - podział czasu między zadaniami jest równomierny
-oparty jest o założenia mikrojądra dzięki czemu może być szeroko
stosowany jako system wbudowany.
*4.Jakie są zalety mikrojądra systemu QNX?
Pełni ono rolę egzekutora wielozadaniowego. Jest odpowiedzialne za szeregowanie informacji,implementację komunikacji między zadaniami oraz przyjmowanie zgłoszeń przerwań. Za wszystkie inne funkcje odpowiadają zadania systemow
*5.Na czym polega zagnieżdżanie przerwań?
W wielopoziomowym systemie przerwań możliwe jest ich zagnieżdżanie polegające na zawieszeniu obsługiwania przerwania o niższym priorytecie po otrzymaniu zgłoszenia przerwanbia o wyższym priorytecie. Po wykonaniu procedury obsługi przerwania następuje powrót do przerwania o niższym priorytecie.Czyli możliwość przerywania przerwań przez te o wyższym priorytecie.
*6.Na czym polega wywłaszczanie procesów?
Wywłaszczenie - to technika używana w środowiskach wielowątkowych, w której algorytm szeregujący (scheduler) może wstrzymać aktualnie wykonywane zadanie (np. proces lub wątek), aby umożliwić działanie innemu. Dzięki temu rozwiązaniu zawieszenie jednego procesu nie powoduje blokady całego systemu operacyjnego.
● Wykrycie potrzeby przeszeregowania w trakcie wykonywania
kodu jądra powoduje ustawienie znacznika need_resched i
kontynuację przetwarzania w trybie jądra.
● Wywłaszczenie procesu w trybie użytkownika może nastąpić:
- przy powrocie z trybu jądra
- po obsłużeniu przerwania
- po zakończeniu wywołania systemowego,
- gdy znacznik need_resched jest ustawiony.
● Znacznik jest ustawiany w następujących przypadkach:
- po upływie kwantu czasu bieżącego (wykonywanego) zadania,
- po uzyskaniu gotowości przez zadanie o wyższym niż bieżące
priorytecie.
*7.Jakie są podstawowe cechy systemu OS-9?
elastyczna, modułowa architektura
100% romowalno´s´c, praca bezdyskowa
wielozadaniowos´c´ i wielodoste pnos´c´
podział czasu z wywłaszczaniem
funkcje czasu rzeczywistego
we/wy niezalez˙ne od sprze tu
odporny na awarie system plik ´ow
zgodno´s´c z UNIX-em na poziomie C
doste pnos´c´ je zyko´w wyz˙szego rze du
narze dzia do uruchamiania programo´w na ro´z˙nych poziomach
(User, System, Source)
KSIĄŻKA
*8.Na czym polega skalowalność systemów operacyjnych?
Jest to cecha polegająca na zdolności do dalszej rozbudowy, ale także miniaturyzacji systemu (jądra systemu).
*9.Co to jest POSIX i co standaryzuje?
Portable Operating System Interface for Computer Environments
Interfejs przenośnego systemu operacyjnego. Litera „x” w nazwie
zaznacza iż jest to standard związany z systemami UNIX-owskimi,
czyli ogólnie dla systemów operacyjnych, które są tworzone z myślą o
niezależności od platformy sprzętowej. Jego powstanie wiąże się z
próbą standaryzacji różnych odmian systemów UNIX.
Pracę nad Posix'em rozpoczęto w roku 1985, a kierował nim IEEE
(Institute of Electrical and Electronics Engineers), dlatego Posix jest
znany również pod nazwą IEEE 1003.
To cała rodzina standardów opracowanych przez IEEE. Posix został
uznany za oficjalną normę przez Międzynarodową Organizację
Normalizacyjną (ISO) oraz Międzynarodową Komisję
Elektrotechniczną (IEC), czyli IOS/IEC.
POSIX standaryzuje:
interfejs programistyczny (API),
interfejs użytkownika, czyli polecenia systemowe,
właściwości powłoki systemu.
10.Czym różnią się zdarzenie periodyczne i synchroniczne?
Kod cykliczny,Procesy szeregowane przez zegar
11.Czym różnią się zdarzenie aperiodyczne i synchroniczne?
Instrukcja warunkowa, Garbage collection
12.Jakie są podstawowe kryteria podziału zdarzeń systemowych?
Zdarzenia zewnętrzne,wewnętrzne,czasowe programowe
13.Co to są zdarzenia?
Zdarzenia (events):
liczniki obsługiwane przez j adro systemu, publicznie dost epne
przez nazw e, pozwalaj ace synchronizowa´c procesy.
Tworzenie zdarzenia wymaga podania nazwy i pocz atkowych
parametrow dla funkcji F$Event(Ev$Creat) (warto´s´c, przyrost automatyczny
i przyrost przy budzeniu).
Wykorzystanie zdarzenia wymaga doł aczenia si e funkcj a
F$Event(Ev$Link), kt ´ora na podstawie podanej nazwy zwraca numer
zdarzenia (ID).
Ich pojawienie się powoduje zmianę licznika (zmianę wprzepływie) programu w sposób niesekwencyjny.Podczas pracy systemu stan każdego zadania ulega zmianie pod wpływem zachodzących zdarzeń.
Przy ich pomocy mozna w OS-9 synchronizowac procesy i przekazywac
niewielkie ilosci danych (wartosc zdarzenia). W odroznieniu od sygnalow,
zdarzenia nie moga zmieniac przebiegu programu (jak przerwania i
sygnaly), nie moga uaktywniac procesow nie oczekujacych na nie. Maja
jednak liczne zalety wynikajace z elastycznosci (moga przyjmowac wiele
wartosci, sa publiczne, sa nieulotne).
Zdarzenie jest tworzone przez funkcje systemowa, ktorej dostarcza sie
nazwę i wartość początkowa. Jadro umieszcza zdarzenie w tablicy po
uprzdnim sprawdzeniu, ze nie ma innego o tej samej nazwie (do 12
znakow). Zdarzeniu jest przyporządkowywany numer (ID) bedacy dlugim
slowem, ktorego bardziej znacząca polowa jest numer kolejny z D_EvID
(po zwiekszeniu), a mniej znacząca - indeks zdarzenia w tablicy. Tablica
zdarzen jest dynamicznie rozszerzalna, nie ma ograniczenia na ilosc
zdarzen. Funkcja zwraca ID, lub bląd (gdy zdarzenie o podanej nazwie
ju istnieje).
14.Do czego służą wątki i w jaki sposób mogą zostać uruchomione?
Wątek - sekwencyjny przepływ sterowania w programie
• Grupa wątków w procesie współdzieli:
- kod programu
- dane
- zasoby systemu operacyjnego
• Wątek
-licznik rozkazów
- rejestry procesora
- stos
• Tradycyjny proces = proces jednowątkowy
W POSIX:
Umożliwiają wykonywanie jednoczesne danego procesu w wielu wątkach (wielowątkowość)
Tworzenie wątku:
● Funkcja pthread_create tworzy nowy wątek. Rozpoczyna on pracę od
funkcji, której adres przekazano jako trzeci argument.
● Funkcja pthread_join usypia wywołujący ją wątek do momentu,
kiedy wątek o identyfikatorze przekazanym jako pierwszy argument zakończy pracę.
● Zakończenie pracy wątku - powrót z funkcji która go rozpoczyna.
15.Co to jest mutex i jak działa?
Mutex jest mechanizmem wzajemnego wykluczania (MUTual EXclusion) sluzacym do chronienia danych dzielonych miedzy watkami przed rownoczesnymi modyfikacjami i uzywanym do implementacji sekcji krytycznych i monitorow.
Mutex ma dwa mozliwe stany: otwarty (nie zajety przez zaden watek) lub zajety (przez jeden watek). Mutex nie moze byc w posiadaniu wiecej niż jednego watku na raz. Watek probujacy zajac mutex bedacy w osiadaniu innego watku jest zawieszany az do chwili zwolnienia mutexu przez watek, ktory go posiadal wczesniej.
16.Czym różnią się funkcje pthread_mutex_lock(mutex), pthread_mutex_trylock(mutex)?
Funkcja pthread_mutex_trylock zachowuje sie identyczne do pthread_mutex_lock, jednak nie jest blokujaca (zwraca EBUSY w razie zajetosci mutexu).
17.Jakie bezwarunkowe działania związane są z wywołaniem funkcji sem_wait(sem_t *sem), sem_post(sem_t *sem)?
Semafory
• wykorzystanie semaforów zapobiega niedozwolonemu wykonaniu operacji na
określonych danych jednocześnie przez większą liczbę procesów
• przez odpowiednie wykorzystywanie semaforów można zapobiec sytuacji w której
wystąpi zakleszczenie (ang. deadlock) lub zagłodzenie (ang. Starvation)
int sem_wait(sem_t *sem);
/* Suspends the calling thread until the semaphore pointed to by `sem' has
non-zero count. Decreases the semaphore count. */
int sem_post(sem_t *sem);
/* Increases the count of the semaphore pointed to by `sem'. */
Inkrementacja lub dekrementacja semafora
Inna interpretacja semafora:
Semafor jest pewną całkowitą liczbą nieujemną S.
Opuszczenie semafora jest równoważne wykonaniu instrukcji:
• jeśli S>0 to S=S-1,
• w przeciwnym razie wstrzymaj działanie procesu próbującego opuścić semafor
Podniesienie semafora:
• jeśli są procesy wstrzymane przy próbie opuszczenia semafora S
to wznów jeden z nich,
• w przeciwnym wypadku S=S+1
18.Jakie role pełnią sygnały w systemie operacyjnym?
Programowa reprezentacja przerwania lub wyjątku
Obsługa wyjątków
Przekazanie do procesu informacji o zdarzeniu asynchronicznym
Zakończenie procesu w sytuacjach nietypowych
Komunikacja międzyprocesowa
*19.Jakie jest źródło sygnałów SIGINT i SIGQUIT?
Terminal użytkownika,keyboard.
20.Czym charakteryzują się moduły systemu OS-9?
Koncepcja modułów pamięciowych OS-9 stanowi sedno wielu zalet,które
pozwalają na stosowanie tego systemu w szerokim zakresie aplikacji.
Pozwala ona systemowi operacyjnemu panować nad programami,
wspólnymi obszarami danych, składnikami systemu operacyjnego.
Niezależnie od ich bezwzględnego położenia w pamięci, można sie do
nich odwoływać przez nazwę, podobnie jak do plików na dysku.
Moduł OS-9 może zawierać program, dane, cześć systemu operacyjnego.
Zaczyna sie nagłówkiem, a kończy suma kontrolna (CRC).
Nagłówek zawiera informacje o module, niezbędne do jego rozpoznania
i prawidłowego wykorzystania w systemie. Pozwala on znaleźć moduł w
pamięci przy starcie systemu, zainicjować odpowiednie obszary danych
i sprawdzić jego poprawność, dzięki sumie kontrolnej i CRC. Zawiera tez wskaźnik do nazwy modułu.
Moduł jest dostępny przez nazwę, musi ona być unikalna wśród modułów załadowanych do pamięci, choć na dysku (w plikach) może sie powtarzać.
Adresy wszystkich załadowanych aktualnie modułów sąa zebrane w
kartotece modułów (module directory), która jest tablicą w pamięci
obsługiwaną przez system operacyjny.
*21.Jaka jest różnica pomiędzy programem, procesem i wątkiem?
Proces składa się z programu, który został uruchomiony i dotąd się
nie zakończył, oraz obszaru danych i struktury w pamięci używanej
przez system do obsługi tego procesu. Struktura ta jest deskryptorem
procesu (process descriptor). Ponieważ w OS-9 regułą jest używanie
czystego kodu jeden program może mieć równocześnie wiele wcieleń(wątków?)
- procesów używających tego samego programu, ale oddzielnych
obszarów danych. Każdy z procesów jest obsługiwany przez kernel
dzięki oddzielnemu deskryptorowi, który zawiera informacje o
procesie.
● Program
- zbiór instrukcji dla procesora przechowywany na dysku w postaci pliku
- obiekt pasywny
● Proces
- Proces jest egzemplarzem działającego programu
- środowisko wykonania programu, stworzone przez system operacyjny
- podstawowa jednostka pracy systemu operacyjnego
obiekt aktywny
● Proces:
- jest obiektem, który wykonuje program i udostępnia mu środowisko wykonania. Na to środowisko składa się przestrzeń adresowa i punkt sterowania
- jest elementarną jednostką podlegającą szeregowaniu - tylko jeden może się wykonywać w procesorze
- rywalizuje o pewne zasoby systemowe
- ma określony czas życia - od f-cji fork() do f-cji exit()
Czyli:
Program = plik wykonywalny na dysku
Proces = uruchomiony i wykonywany program w pamięci
Program jest pojęciem statycznym.
Proces ma naturę dynamiczną (zmieniającą się). Zmianie ulegają m.in.
- Licznik rozkazów (adres ostatnio wykonywanej instrukcji)
- Rejestry procesora
- Wskaźnik stosu
Proces ma przestrzeń adresową
- Kod
- Dane zainicjalizowane
- Dane niezainicjalizowane
- Stos
Jeden proces wykonuje się w wielu współbieżnych wątkach (ang. Thread).
Każdy wątek (inna nazwa: proces lekki, ang. lightweight)
- Ma swój własny stan (Aktywny, Gotowy, Zablokowany, ... )
- Ma swoje wartości rejestrów i licznika rozkazów.
- Ma swój własny stos (zmienne lokalne funkcji !!!).
- Ma dostęp do przestrzeni adresowej, plików i innych zasobów procesu
Procesy są od siebie izolowane, wątki nie !
*22.Na czym polega różnica w działaniu programu uruchomionego na następujące cztery sposoby: program, program ^105, program ^105&, program >dane.txt?
23.Jakie są stany procesu w systemie OS-9?
W danej chwili proces może być w jednym z kilku stanów:
Active - zadajacy czasu procesora
Waiting - czekajacy na zakonczenie procesu potomnego
Sleeping - czekajacy przez okreslony czas, lub na zewnetrzne
zdarzenie, lub na sygnal od innego procesu
Waiting for event
- czekajacy na zdarzenie wewnetrzne (semafor)
Debugged - czekajacy na zezwolenie kontynuacji od
procesu rodzicielskiego (debuggera)
Dead - czekajacy na odebranie statusu wyjsciowego przez
proces rodzicielski (po zakonczeniu)
24.Jakie są warunki przejścia między stanami procesu: active i running? (2) (różne kombinacje)
Running-> Active
R-F$Exit-non.exit-A
R-F$Wait-waiting-F$send-A
Running-F$Sleep-Sleeping-Wakeup(F$Send)-Active
F$Wait - -deaktywacja procesu do zako´nczenia (przez F$Exit) procesu potomnego
F$Exit - dobrowolne zakończenie procesu
F$Sleep - deaktywacja (uśpienie) procesu
25.Jaki jest mechanizm przydziału czasu procesora w systemie OS-9?
Czas procesora jest dzielony pomiedzy procesy aktywne w
jednostkach zwanych "time slices". Osiaga sie to dzieki cyklicznym
przerwaniom zegarowym zwanym "ticks". Zazwyczaj w OS-9
segment sklada sie z dwoch tikow po 10 ms kazdy.
Wykonywanie kolejno wszystkich procesow w krótkich segmentach
czasu sprawia wrazenie rownoleglej pracy kilku programow. Dlugosc
segmentu dobiera sie kompromisowo - dostateccznie mala, by
stwarzac wrazenie rownoleglosci, dostatecznie duza, by nie tracic
zbyt wiele czasu na przelaczanie procesow. Dzieki przydzielaniu
czasu tylko procesom aktywnym unika sie marnowania go. System
podzialu czasu w OS-9 zapewnia rownomierne przydzielanie czasu
wszystkim procesom (z uwzglednieniem priorytetow), o ile
programista nie zazada inaczej. Specjalne cechy systemu podzialu
czasu pozwalaja wplywac na sposob przydzialu czasu, co jest
szczegolne wazne w systemach czasu rzeczywistego.
*26.Jaki jest efekt działania funkcji sleep(0); w systemie OS-9?
Uśpienie procesu w oczekiwaniu na zdarzenie
Proces po otrzymaniu sygnału wybudza się.
*27.Jaki jest efekt działania funkcji _os_alarm_cycle(&alarmId, SIGWAKE, czas)?
Zainstalowanie alarmu cyklicznego na czas (czas)
*28.Jaki będzie efekt działania funkcji _os_alarm_cycle(&alarmId, 0x100, czas)?
*29.Do czego służy funkcja intercept(); w systemie OS-9?
Zainstalowanie pułapki
*30.Jakie są cechy zdarzenia w systemie OS-9?
Przy ich pomocy mozna w OS-9 synchronizowac procesy i przekazywac
niewielkie ilosci danych (wartosc zdarzenia). W odroznieniu od sygnalow,
zdarzenia nie moga zmieniac przebiegu programu (jak przerwania i
sygnaly), nie moga uaktywniac procesow nie oczekujacych na nie. Maja
jednak liczne zalety wynikajace z elastycznosci (moga przyjmowac wiele
wartosci, sa publiczne, sa nieulotne).
Zdarzenie jest tworzone przez funkcje systemowa, ktorej dostarcza sie
nazwe i wartosc poczatkowa. Jadro umieszcza zdarzenie w tablicy po
uprzdnim sprawdzeniu, ze nie ma innego o tej samej nazwie (do 12
znakow). Zdarzeniu jest przyporzadkowywany numer (ID) bedacy dlugim
slowem, ktorego bardziej znaczaca polowa jest numer kolejny z D_EvID
(po zwiekszeniu), a mniej zanczaca - indeks zdarzenia w tablicy. Tablica
zdarzen jest dynamicznie rozszerzalna, nie ma ograniczenia na ilosc
zdarzen. Funkcja zwraca ID, lub blad (gdy zdarzenie o podanej nazwie
juz istnieje).
*31.Jakie są możliwe narzędzia przesyłania informacji między procesami w systemie OS-9?
PATRZ KSIĄŻKA
Przesył potokowy Potoki czyli bufory FIFO pozwalające na komunikację między
procesami działającymi równolegle. Automatyczna synchronizacja przesyłu , przepływ danych jest dopasowywany do wolniejszego procesu
Komunikacja za pośrednictwem potoków polega na tym że jeden proces zapisuje informacje do łącza podobnie jak do pliku,jest jednak usypiany jeżeli łącze jest pełne ,a inny proces ją odczytuje podobnie jak z pliku lub jest usypiany,jeśli złącze jest puste.Aby móc się komunikować za pośrednictwem łącza procesy muszą znać jego deskryptory.Potok jest identyfikowany przez dwa deskryptory : odczytu i zapisu.Łącza moga mieć i nie mieć zdefiniowanej nazwy.
Inne sposoby to:
kolejki komunikatów
pamięć dzielona
semafory
Mechanizm komunikacji:
Czekanie na potomka
Sygnał
Zdarzenie
Moduł danych
Wspólna pamięć
Plik dyskowy
Skutki wysłania sygnału do procesu
uaktywnienie procesu-adresata (o ile nie jest
bieżacy lub aktywny - F$AProc) - maskowanie sygnałow nie ma wpływu na te
czynność
przy przejściu procesu-adresata do trybu USER -uruchomienie procedury obsługi sygnałow (P$SigVec) jako podprogramu:
- utworzenie ramki powrotu na stosie (R$pc, R$sr)
- zmiana R$pc na P$SigVec, ustawienie kodu sygnału z P$SigQue w R$d1;
32.Podaj podstawowe cechy systemu Linux
W jądrze Linux'a, począwszy od wersji 2.0.0, zaimplementowano
tryby szeregowania dla procesów czasu rzeczywistego. Nie
wystarcza to jednak, aby można było uznać Linux za system czasu
rzeczywistego. W zadaniach takich Linux się, po prostu, nie
sprawdza. Wynika to przede wszystkim z częstego wyłączania
przerwań w celu ochrony krytycznych części kodu jądra, opóźnień w
procedurach obsługi przerwań, nie dających się przewidzieć
opóźnień związanych z pamięcią wirtualną, charakterystyki
szeregowania procesów i małej częstotliwości zegarów
systemowych. Podstawową cechą Linux'a jest to, iż proces
znajdujący się trybie jądra nie może zostać wywłaszczony przez
inny proces. Upraszcza to znacząco implementację, czyli wdrożenie
gdyż nie trzeba przejmować się wielowejściowością funkcji
systemowych. Ponieważ wykonanie funkcji systemowej może trwać
dość długo, opóźnia to wznowienie procesu realtime i, w efekcie,
uniemożliwia odpowiednio szybką reakcję na zdarzenie zewnętrzne.
Wielozadaniowość z wywłaszczaniem i podziałem czasu.
W najnowszych jądrach istnieje możliwość wywłaszczania procesu
w trybie jądra. Istnieje też możliwość uruchomienia procesu w
miękkim czasie rzeczywistym, zaś z nakładkami w rodzaju RTLinux
możliwe jest korzystanie z twardego czasu rzeczywistego
Oprogramowanie systemów czasu rzeczywistego 81
Wielodostęp, czyli wsparcie dla pracy z wieloma użytkownikami.
Użytkownicy pracujący pod Linux'em są od siebie całkowicie
odizolowani i nie mogą wpływać na siebie nawzajem.
Wieloprocesorowość, czyli wsparcie dla komputerów z większą
liczbą procesorów niż jeden - oraz procesorów Intela z
technologią HyperThreading. Najnowsze jądra znacznie
poprawiają wydajność w układach wieloprocesorowych.
Niezależność od architektury - działa zarówno na x86, jak i na
IA64, x86-64, Motoroli 68k, PowerPC, Alphie, ARM, MIPS,
paRISC oraz Sparc.
Szeroki zakres tolerancji dla sprzętu - będzie działać zarówno
na małych systemach embedded, jak i wielkich systemach
mainframe. Do uruchomienia go na komputerze PC wystarczy
zaledwie 386.
Kopiowanie przy zapisie stron pamięci - zwiększona wydajność
wywołania fork. Jednocześnie w najnowszych wersjach
wprowadzane jest współdzielenie tablic stron.
Zgodność z normą POSIX 1003.1 i częściowa zgodność z
System V i BSD - możliwość swobodnego uruchamiania
programów z innych uniksów, często nawet bez rekompilacji.
*33.Na czym polega wielowarstwowa architektura sprzętowa i programowa sterownika CompactRIO?
*34.Na czym polega zasadnicza różnica w realizacji procesu zawierającego kilka niezależnych pętli regulacji na komputerze z systemem operacyjnym czasu rzeczywistego i w układzie FPGA?
35.Jakie są zasadnicze cechy dobrego oprogramowania (omów krótko).
Cechy dobrego oprogramowania:
-Poprawne (correct) -Statycznie zgodne ze specyfikacją.
-Pewne (reliable)-Czy i jak dobrze program realizuje swoje zadanie gdy zostanie uruchomiony.
DYGRESJA:
Może się zdarzyć, że poprawne oprogramowanie nie jest pewne: zostanie sprawdzone zgodnie ze specyfikacją ale w układzie nie spełnia swojego zadanie - bo specyfikacja była zła. Lub odwrotnie: program realizuje zamkniętą pętlę regulacji, powinien generować sterowanie z określoną dokładnością jeśli tego nie robi jest niepoprawny ale dla małych błędów układ zamknięty może działać pewnie.
-Bezpieczne (safe)-Wymaganie odnosi się do konsekwencji nieprawidłowego
działania: zranienie, śmierć, straty materialne.
System może działać 100% pewnie ale być niebezpieczny.I odwrotnie możemy napisać
niepewny program ale będzie w 100% bezpieczny… jeśli go nie włączymy.
36.Jakie są zasadnicze różnice w działaniu systemów fail operational i fail safe (rózne kombinacje)?
fail operational- po zaistnieniu błędu system działa nadal gdyż jego zatrzymanie miało by katastrofalne skótki.Reakcja na błąd-działą nadal
fail safe - Ograniczamy zniszczenia przez zatrzymanie (np. Reaktor jądrowy).Reakcja na błąd -stop
37.Jakie są podstawowe źródła błędów oprogramowania (omów krótko)
W fazie projektowania systemu:
-złe założenia dotyczące działania systemu i środowiska
W fazie projektowania programu:
-Błędy związane są z błędnym myśleniem o problemie lub jego rozwiązaniu (nie mają związku z fizycznym układem)
Dzielimy je na :
--Składniowe (syntax)
--Znaczeniowe (semantyczne)
--logiczne
--algorytmiczne
Efekty środowiskowe:
-błędy związane z tym Jak oprogramowanie zachowuje się w otoczeniu, w którym ma docelowo działać. System RT trzeba traktować jako część większego procesu nie jako samodzielna całość.
38.Podaj różnice między błędami składniowymi i semantycznymi
Błędy składniowe (syntax)
-Definicja i układ symboli tworzących program - słowa kluczowe, zmienne, delimitery
-Użycie złego symbolu np. „:” zamiast „;” - zazwyczaj łatwo wykrywane przez kompilatory
- Złe użycie symbolu:If (x=y) run();If (x==y) run();
-Najlepiej używać języków wysokiego poziomu - im mniej piszemy tym mniejsza szansa na popełnienie błedu
Błędy znaczeniowe (semantyczne)
-Niedokładnie zrozumieliśmy co oprogramowanie ma tak naprawdę rozbić i
zrobiliśmy coś innego (ale poprawnie)
-Nieprawidłowo zakodowaliśmy to co oprogramowanie ma robić - złe zrozumienie
lub znajomość języka programowania
39.Podaj różnice między błędami logicznymi i arytmetycznymi
Błędy logiczne
- Ten typ błędów powoduje, że program nie zachowuję się w sposób logiczny:
1)przebieg programu jest poprawny ale wyniki nieprawidłowe, potencjalne przyczyny:
+Post-check zamiast pre-check,
+brak zerowania (inicjacji) zmiennych),
+sprawdzanie złego warunku
2)może się zawieszać, potencjalne przyczyny:
+Nieskończone pętle,
+Zakleszczenie w programach wielowątkowych (deadlock)
Błędy algorytmiczne
1) Pojawiają się w operacjach matematycznych:
2) Overflow, za krótki typ zmiennej, zła znajomość reprezentacji liczb na danej maszynie (największa liczba jaką maszyna może przechować, najmniejsza liczba, relacja pomiędzy największym i najmniejszym argumentem jednej operacji, precyzja)
3) Dzielenie przez 0 - niezdeterminowany wynik
4) Zakres wejść-wyjść
5)Jednostki przyjęte w obliczeniach (ich spójność)
40.Jak zorganizować projekt oprogramowania aby był łatwy do zarządzania?
Organizacja projektu aby był łatwy do zarządzania:
+Modularyzacja
+Zadania końcowe są dostatecznie małe - dla jednej osoby
+Struktura równoległych (konkurencyjnych) działań
41.Jak tworzyć program aby był łatwo testowalny i serwisowalny?
Testowalność i łatwość serwisowania:
Program musi być zrozumiały i jednoznaczny (nie tylko dla twórcy!)
Możliwość łatwego i szybkiego przewidzenia skutków określonych
modyfikacji programu jest niezwykle pożądana
Unikanie programowania ryzykownego
Unikanie trików programowych
Unikanie konstrukcji programowych działających tylko lokalnie,
specyficznych dla maszyny lub aplikacji
*42.Jakie podstawowe cechy systemu musi określać specyfikacja założeń