Egzamin SO2 13

[Pytania egzaminacyjne]

1. Które z poniższych zdań dotyczących algorytmu szeregowania O(1) są prawdziwe?

a) Wymiana priorytetów zadań sprowadza się do zamiany wskaźników na tablicę aktywną i przeterminowaną TAK
Wymiana „starych” priorytetów na „nowe” sprowadza się wyłącznie do wymiany wskaźników na tablicę aktywną i przeterminowaną. (Wykład 3)
b) Priorytet każdego zadania jest ustalany wyłącznie na podstawie jego poziomu interaktywności NIE
Priorytet każdego „zwykłego” zadania jest ustalany na podstawie priorytetu statycznego, jakim jest poziom uprzejmości oraz na podstawie stopnia interaktywności procesu. (Wykład 3)
c) Promowane są zadania o wysokim stopniu interaktywności TAK
Jądro Linuksa promuje zadania o dużym stopniu interaktywności. (Wykład 3)
d) Mechanizm szeregowania dokonuje zrównoważenia obciążenia procesorów wyłącznie wtedy, kiedy kolejka zadań jednego z nich jest pusta NIE
W systemach wieloprocesorowych zadania są kojarzone z poszczególnymi procesorami, ale czasem może zajść potrzeba zrównoważenia pracy systemu, wówczas część zadań z kolejki procesów gotowych procesora może zostać przeniesiona do kolejek innych procesorów lub odwrotnie. Mogą być dwie przyczyny takiego zdarzenia. Pierwsza zachodzi wtedy, kiedy w kolejce któregoś z procesorów nie ma żadnych zdań, wówczas mogą one być przeniesione z kolejek innych procesorów. Druga to wywołanie load_balance() za pomocą przerwania zegarowego. W tym przypadku zadanie równoważenia obciążenia jest bardziej skomplikowane. W skrócie polega ono na znalezieniu najbardziej obciążonej kolejki (ponad 25% obciążenia wszystkich kolejek w systemie) i rozłożeniu tego obciążenia na pozostałe procesory. (Wykład 3)
e) Kwanty czasu dla poszczególnych zadań są przeliczane dopiero wówczas, gdy ostatnie z zadań znajdujących się w tablicy priorytetów aktywnych wyczerpie swój kwant czasu NIE
Kwanty czasu zadań są przeliczane zaraz po ich wyczerpaniu przez zadanie i zanim zadanie trafi do tablicy przeterminowanej. (Wykład 3)

2. Które z twierdzeń dotyczących obsługi przerwań w Linuxie 2.6 są prawdziwe?

a) Obsługa przerwań jest podzielona na górną połówkę i dolną połówkę TAK
Z tego powodu kod obsługi przerwań jest podzielony na dwie części zwane górną połówką i dolną połówką.(Wykład 5)
b) Procedury obsługi przerwań mogą być wykonywane dowolnie długo NIE
Procedura obsługi przerwania wywoływana jest w sposób asynchroniczny i dlatego ważnym jest, aby jej wykonanie zostało zakończone w jak najkrótszym czasie (Wykład 5)
c) Do linii przerwania o określonym numerze może być przypisanych kilka procedur obsługi przerwań TAK
SA_SHIRQ – określa możliwość współdzielenia linii przerwania z innymi procedurami obsługi przerwań (Wykład 5)
d) W procedurach obsługi przerwań można wywołać funkcje, które ulegają blokowaniu NIE
Procedury obsługi przerwań są wywoływane w kontekście przerwania, co oznacza, że nie są dozwolone w nich wywołania funkcji blokujących oraz nie jest ważna wartość (ang. invalid) zwracana przez makrodefinicję current. (Wykład 5)
e) Procedury obsługi przerwań korzystają ze stosu jądra, który ma nieograniczony rozmiar NIE
Procedury obsługi przerwania muszą wykonywać się szybko, aby nie blokować kolejnych zgłoszeń przerwania na tej samej linii. Korzystają one ze stosu jądra, który jest ograniczony do 8KB w 32 – bitowych architekturach PC i do 16KB w 64 – bitowych architekturach Alpha. (Wykład 5)

3. Określ które ze zdań dotyczące szeregowania procesów w Linuxie 2.6 są prawdziwe?

a) Linux realizuje wielozadaniowość wyłącznie w oparciu o kooperacje NIE
Istnieją dwa typy systemów wielozadaniowych: systemy wielozadaniowe z kooperacją (bez wywłaszczania) i systemy wielozadaniowe z wywłaszczaniem. W systemach pierwszego typu proces zawsze dobrowolnie zrzeka się procesora i oddaje sterowanie do systemu operacyjnego. Drugi typ systemów kontroluje wykorzystanie procesora przez realizowane zadania i może przerywać ich działanie. Zapobiega to sytuacji, w której pojedynczy proces mógłby zmonopolizować dostęp do procesora. Linux jak większość współczesnych systemów operacyjnych realizuje wielozadaniowość z wywłaszczaniem. (Wykład 3)
b) Działanie planisty O(1) oparte jest na schemacie kolejek ze sprzężeniem zwrotnym TAK
Schemat szeregowania jaki zastosowano w tym systemie opiera się na schemacie wielopoziomowych kolejek ze sprzężeniem zwrotnym. (Wykład 3)
c) Zadania interaktywne otrzymują od planisty O(1) mniejszy kwant czasu niż zadania nieinteraktywne NIE
Jądro Linuksa promuje zadania o dużym stopniu interaktywności. Takie zadania po wykorzystaniu swojego kwantu czasu nie trafiają od razu do tablicy przeterminowanej, ale otrzymują drugą szansę i są umieszczane w tablicy aktywnej, na końcu tej samej listy, na której były poprzednio (dostają ten sam kwant czasu, co przed wykonaniem) (Wykład 3)
d) Główną strukturą danych planisty CFS jest drzewo czerwono-czarne TAK
W planiście CFS tablice priorytetów zostały zastąpione drzewem czerwono-czarnym. (Wykład 3)
e) Linux nie jest rygorystycznym systemem czasu rzeczywistego TAK

4. Które ze zdań dotyczących kolejek prac są prawdziwe?

a) Czynności odroczone wykonywane w ramach kolejek prac są wykonywane w kontekście przerwania NIE
Dzięki tym mechanizmom czynności czasochłonne nie są wykonywane bezpośrednio w procedurze obsługi przerwania, ale są odraczane do czasu kiedy system będzie mniej obciążony (najczęściej zaraz po odblokowaniu przerwań). (Wykład 7)
b) Kolejki prac zastąpiły mechanizm dolnych połówek znany jako „kolejki zadań”, który był wykorzystywany we wcześniejszych wersjach jądra Linuksa TAK

W jądrze Linuksa w wersji 2.6 istnieją cztery mechanizmy będące częściami systemu dolnych połówek: przerwania programowe i tasklety, które wyparły mechanizm BH5 oraz kolejki prac (ang. work queue), które wyparły kolejki zadań (ang. task queue). (Wykład 7)

- Przerwania programowe i tasklety wyparły mechanizm BH (dolnych połówek)

- Kolejki prac wyparły kolejki zadań

c) Mechanizm kolejek prac pozwala na określenie czasu po upływie którego dana czynność może się rozpocząć TAK
Istnieje również mechanizm liczników, które pozwalają odroczyć czynności na określony czas, ale ich opis zostanie przełożony na później. (…) Dolne połówki gwarantują przełożenie wykonania złożonych czynności związanych z obsługą przerwania na później, ale nie określają kiedy dokładnie to wykonanie nastąpi (…) Niektóre mechanizmy dolnych połówek pozwalają określić po jakim czasie powinny być wykonane zlecone im czynności, ale nie gwarantują dokładności.
d) Jądro systemu Linux zawiera specjalną funkcję, której wywołanie pozwala na opróżnienie domyślnej kolejki prac TAK
Czasem konieczne może się okazać wymuszenie opróżnienia domyślnej kolejki prac. Dokonujemy tego za pomocą funkcji flush_scheduled_work(). (Wykład 7)
e) Jeśli w jądrze tworzona jest nowa kolejka prac, to jest równocześnie dla niej tworzony nowy, odrębny wątek roboczy TAK
Nowe kolejki prac tworzone są za pomocą create_workqueue(). Dla każdej utworzonej w ten sposób kolejki tworzony jest również osobny wątek roboczy. (Wykład 7)

5. Które z poniższych twierdzeń dotyczących środków synchronizacji w jądrze Linuksa 2.6 są prawdziwe?

a) Wątek wykonania, który przetrzymuje semafor nie może równocześnie przetrzymywać rygla pętlowego TAK
Semafory nie mogą być przetrzymywane przez wątki, które już przetrzymują rygle pętlowe. (Wykład 8)
b) Blokady sekwencyjne pozwalają ustalić, czy operacja odczytu nie została przepleciona z operacją zapisu TAK
Blokady sekwencyjne w prosty sposób pozwalają określić czy operacja odczytu nie została przepleciona z operacją zapisu. (Wykład 8)
c) Blokada BKL jest blokadą gruboziarnistą TAK
Blokada BKL (ang. Big Kernel Lock) miała być rozwiązaniem przejściowym, które miało być zastąpione blokadami o mniejszej ziarnistości. (Wykład 8)
d) Blokada BKL nie jest rekurencyjna NIE
Ponadto BKL jest rekurencyjna, wyłącza wywłaszczanie jądra i można wykorzystywać ją jedynie w kontekście procesu. (Wykład 8)
e) Rygle pętlowe nie są używane w systemach jednoprocesorowych w jądrze, które nie wywłaszcza wątków TAK
Należy również pamiętać, że rygle nie są rekurencyjne i nie są stosowane w systemach jednoprocesorowych (kompilator wstawia w ich miejsce puste instrukcje lub jeśli podczas kompilacji włączona jest opcja wywłaszczania jądra zastępuje je funkcjami włączającymi i wyłączającymi wywłaszczanie jądra, opisanymi niżej). (Wykład 8)

6. Poniżej umieszczono zdania dotyczące obsługi przerwań przez Linuksa 2.6. Które z nich są prawdziwe?

a) Częstotliwości pojawiania się wszystkich przerwań są wykorzystywane do inicjalizowania generatora liczb losowych NIE
b) Numery przerwań mogą być przydzielane niektórym urządzeniom dynamicznie TAK
W komputerach kompatybilnych z IBM PC część przerwań jest na stałe przypisana pewnym urządzeniom, a część – w szczególności dla tych urządzeń, które są podłączone z systemem przez magistralę PCI lub nowsze szyny, takie jak PCI-Express, USB – jest przydzielana w sposób dynamiczny. (Wykład 6)
c) Aby procedura obsługi przerwania mogła być wywołana, musi zostać wcześniej zarejestrowana TAK
Każda procedura obsługi przerwania musi zostać zarejestrowana za pośrednictwem funkcji request_irq, która kojarzy funkcję z przerwaniem i uaktywnia daną linię (Wykład 6)
d) Procedury obsługi przerwania mogą korzystać z wartości zwracanej przez makrodefinicję „current” NIE
Procedury obsługi przerwań są wywoływane w kontekście przerwania, co oznacza, że nie są dozwolone w nich wywołania funkcji blokujących oraz nie jest poprawna (ang. invalid) wartość zwracana przez makrodefinicję current. (Wykład 6)
e) Nie jest wymagane, aby funkcje obsługi przerwań były wielobieżne TAK
Funkcje obsługi przerwań są definiowane według następującego prototypu (…) Nie wymaga się, aby funkcje te były wielobieżne, gdyż wywołanie funkcji powoduje zablokowanie linii z nią związanej. (Wykład 6)

7. Które ze zdań dotyczących synchronizacji są prawdziwe?

a) Niektóre operacje niepodzielne mogą być zrealizowane jako pojedyncze rozkazy procesora TAK
Operacje niepodzielne (atomowe) na zmiennych prostych typów są zazwyczaj realizowane za pomocą instrukcji maszynowych właściwych dla architektury procesora. (Wykład 8)
b) Przeplot operacji jest przyczyną występowania problemu sekcji krytycznej NIE
c) W systemie Linux w przestrzeni użytkownika wywłaszczenie procesu może zajść tylko w ściśle określonym momencie jego działania NIE
d) Zadanie nigdy nie może być wywłaszczone po zakończeniu obsługi przerwania NIE
e) Dostęp do zmiennych lokalnych wątków wykonania nie musi podlegać synchronizacji TAK
W przypadkach gdy trzeba chronić dane, które są widziane przez jeden procesor przed dostępem współbieżnym można zrezygnować z rygli pętlowych i zastosować zwykłe zablokowanie wywłaszczania.

8. Które ze stwierdzeń dotyczących wywołań systemowych w Linuksie 2.6 są prawdziwe?

a) Dodawanie nowych wywołań systemowych nie jest zalecanym przez twórców jądra sposobem dodawania nowej funkcjonalności TAK
Dodanie do jądra nowych wywołań systemowych jest kuszącym pomysłem, jednakże wśród twórców jądra Linuksa panuje silna tendencja, aby tego nie robić. Po dokładnych rozważaniach można określić następującą listę wad i zalet tworzenia nowych wywołań jądra (Wykład 5)
b) Każde wywołanie systemowe zwraca wartość typu „long” TAK
Każde wywołanie systemowe zwraca wartość typu long, która stanowi kod błędu. Najczęściej poprawne zakończenie wywołania sygnalizowane jest wartością zero, a wykonanie błędne wartością ujemną. (Wykład 5)
c) Każde wywołanie systemowe musi przyjmować co najmniej jeden argument wywołania NIE
Wywołania systemowe podobnie jak zwykłe funkcje mogą przyjmować pewną liczbę argumentów wywołania, lub nie przyjmować ich w ogóle. (Wykład 5)
d) Wszystkie funkcje ze standardowej biblioteki języka C korzystają z wywołań systemowych NIE
e) Funkcja realizująca wywołanie systemowe musi być w całości napisana w assemblerze NIE
Zadania użytkownika nie wywołują najczęściej bezpośrednio wywołań systemowych lecz robią to za pomocą podprogramów języka wysokiego poziomu. (Wykład 5)

9. Które twierdzenia odnośnie wątków i procesów w systemie Linux są prawdziwe?

a) Za szeregowanie wątków odpowiada inny mechanizm jądra niż za szeregowanie procesów NIE
W przeciwieństwie do wielu innych systemów operacyjnych Linux obsługuje wątki, ale nie odróżnia ich od zwykłych procesów. (Wykład 2)
b) Każdy wątek jądra posiada swoją odrębną przestrzeń adresową NIE
Wątki jądra nie mają własnej przestrzeni adresowej, działają w obrębie przestrzeni jądra. (Wykład 2)
c) Makrodefinicja „current” pozwala na szybki dostęp do deskryptora bieżącego procesu TAK
W jądrze zdefiniowana jest makrodefinicja o nazwie „current”, która pozwala na szybki dostęp do deskryptora bieżącego procesu. (Wykład 2)
d) Proces macierzysty, którego proces potomny się zakończył przechodzi w stan TASK_ZOMBIE NIE
Jeśli proces macierzysty zakończy się przed procesem potomnym, to ten ostatni pozostanie w stanie zombie.(…) TASK_ZOMBIE – proces zakończył się, w systemie został jednak jego deskryptor, który jest usuwany przez proces macierzysty poprzez wywołanie o nazwie „wait4()”,(Wykład 2)
e) Deskryptory procesów powiązane są w listę TAK
Deskryptory procesów s powi zane ze sob w dwukierunkową listę procesów. (Wykład 2)

10. Określ które twierdzenia dot. zażądania czasem w Linkusie są prawdziwe?

a) Stała HZ dla architektury i386 wynosi 1000 NIE
b) Zawartość zegara czasu rzeczywistego jest odczytywana przez jądro co pewien określony przedział czasu NIE
Jądro obsługuje również mechanizm zegara czasu rzeczywistego (RTC) z którego pracy korzystają głównie aplikacje użytkowników. Zegar ten przechowuje i aktualizuje informacje o bieżącej dacie i godzinie. Jego zawartość jest odczytywana i umieszczana w zmiennej xtime podczas rozruchu systemu. Jądro nie odczytuje już więcej zawartości zegara czasu rzeczywistego, ale samo aktualizuje zawartość tej zmiennej i ewentualnie może aktualizować zawartość samego RTC. (Wykład 9)
c) Zmienna jiffies jest nałożona na starsze 32 bity zmiennej „jiffies_64” NIE
Kiedy od jądra 2.4 zaczęto stosować stałą HZ=1000, to okres ten skrócił się do 49,7 dnia, dlatego też twórcy jądra zastosowali rozwiązanie polegające na „nałożeniu” 32 – bitowej zmiennej jiffies na zmienną jiffies_64, która ma rozmiar 64 – bitów. Odwołanie się więc do zmiennej jiffies w architekturach 32 – bitowych daje wartość jej młodszego słowa, w architekturach 64 – bitowych jej pełną wartość. (Wykład 9)
d) Liczniki dynam. ze względu na zbyt mała precyzje nie mogą być wykorzystywane w zadaniach czasu rzeczyw. TAK
Liczniki, zwane licznikami dynamicznymi lub licznikami jądra pozwalają opóźnić wykonanie określonych czynności o ustaloną ilość czasu począwszy od chwili bieżącej. Nie jest to mechanizm precyzyjny i mogą zdarzać się niedokładności rzędu rozmiaru okresu, więc nie powinny one być stosowane do zadań czasu rzeczywistego, niemniej większości przypadków nadają się one do zastosowania. (Wykład 9)
e) Listy liczników nie są przez system sortowane TAK
Aby uniknąć sortowania listy liczników i kosztownego przeglądania jest ona podzielona na pięć grup, pod względem czasu po jakim trzeba będzie wywołać funkcje zgromadzonych na niej liczników. Wykład 9)

11. Brak pytania

a) Zmienna typu „atomic_T” jest 32 bitowa. TAK
atomic_t, mimo, że zbudowany jest na typie „int” (32 – bitowym) pozwala na przechowywanie wartości 24-bitowych (3 bajty). (Wykład 8)
b) Wszystkie architektury, które obsługuje Linux dostarczają rozkazów maszynowych realizujących operacje niepodzielne na wartościach będących liczbami całkowitymi. NIE
Oprócz operacji niepodzielnych na liczbach całkowitych jądro dostarcza funkcji realizujących niepodzielne operacje na pojedynczych bitach. (Wykład 8)
c) Rygle pętlowe mogą być stosowane we fragmentach kodu wykonywujących się w kontekście przerwania. TAK
Rygle pętlowe mogą być używane w procedurach obsługi przerwań, ale tylko wraz z wyłączeniem lokalnego systemu przerwań, aby uniknąć zakleszczeń. (Wykład 8)
d) Rygle R-W stosujemy w zagadnieniach typu problem czytelników i pisarzy, gdzie faworyzowani są pisarze. NIE
Jeśli problem, który chcemy rozwiązać sprowadza się do problemu pisarzy i czytelników, a ściślej do wersji tego problemu, gdzie faworyzowani są czytelnicy, to możemy zastosować rygle pętlowe R-W.
e) Zmienne sygnałowe są uproszczoną wersją semaforów. TAK
Zmienne sygnałowe służą do synchronizacji pracy zadań i są uproszczoną wersją semaforów. (Wykład 8)

Wyszukiwarka

Podobne podstrony:
EGZAMIN ANATOMIA 13 RANO
CHOROBY ZAKAŹNE PSY i KOTY – egzamin czerwiec 13 r I termin
Egzamin z chemii 13
biofizyka egzamin zestawy 13
egzamin Fir 13
Pytania na egzamin z fitopatologii 13
Egzamin gimnazjalny 13, matematyka przykładowe odpowiedzi
egzamina fizjo 13 pielegniarstwo (1)
Egzamin Biochemia 13 opracowanie Ewy B
pytania egzamin film 13
Egzamin BHP 13 14
egzamin fizyka 13
Zagadnienia na egzamin z eksploatacji 13
egzamin pytania 13
EGZAMIN Z HISTOLOGII 13
pytania z egzaminu biofizyka 13

więcej podobnych podstron