1Które z poniższych zdań dotyczących algorytmy szeregowego 0(1) są prawdziwe??
Wymiana priorytetów zadań sprawdza się do zmiany wskaźników na tablice i przeterminowania
Tak
Priorytet każdego zadania jest ustalany wyłączę na podstawie jego poziomu interaktywności
Nie
Promowane są zadania o wysokim stopniu interaktywności
Tak
Mechanizm szeregowania dokonuje zrównoważenia obciążenia procesorów
wyłącznie wtedy, kiedy kolejka zadań jednego z nich jest pusta
Nie
Kwanty czasu dla poszczególnych zadań są przeliczone dopiero wówczas, gdy ostatnie z zadań znajdujących się tablicy priorytetów aktywnych wyczerpie swoje kwanty czasu
Nie
2Które z twierdzeń dotyczących obsługi w Linuks 2.6 sa prawdziwe ??
obsługa przerwań jest podzielona na górna połówkę i dolną połówkę
tak
procedury obsługi przerwań mogą być wykonywane dowolnie długo
nie
do linii przerwania o określonym numerze może być przepisanych kilka obsługi przerwań
nie
w procedurach obsługi przerwań można wywoływać funkcję która uległa blokowaniu
nie
procedury obsługi przerwań korzystają ze stosu jądra, które ma nieograniczone rozmiary.
Nie
3 Określ, które ze zdań dotyczących szeregowania procesorów w Linuksie 2.6 są prawdziwe ??
Linux realizuję wielozadaniowość wyłącznie w oparciu o kooperację
Nie
Działanie planisty O(1) operet jest na schemacie kolejki ze sprzężenie zwrotnym
Tak
Zadania interaktywne otrzymują od planisty O(1) mniejszy kwanty czasu niż zadania nieinteraktywne.
nie
Główną strukturą danych planisty CSF jest drzewo czerwono-czarne
Tak
linux nie jest rygorystycznym systemem czasu rzeczywistego
Tak
4Które ze zdań dotyczą kolejek prac są prawdziwe ??
Czynności odroczone wykonywanie w ramkach kolejek prac są wykonywane w kontekście przerwań
Tak
Kolejki prac zastąpiły mechanizmy dolnych połówek znany jako „kolejki zadań”, który był wykorzystywany we wcześniejszych wersjach jądra Linuksa
Nie
Mechanizm kolejek prac pozwala na określenie czasu po upływie którego dana czynność może się rozpocząć
Tak
Jądro systemu linukx zawiera specjalne funkcję, której wywołanie pozwala na opróżnienie domyślniej kolejki prac
Tak
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
5 które z poniższych stwierdzeń dotyczą środków synchronizacji w jądrze linuksa 2.6 są prawdziwe
Wątek wykonywania, który przetrzymuje semafor nie może równocześnie przetwarzać rygla pętlowego
Tak
Blokady sekwencyjne pozwalają ustalić, czy operacja odczyty nie zostanie przepięciona z operacją zapisu
Nie
Blokada BKL jest blokadą gruboziarnistą
Tak
Blokada BKL jest rekurencyjna
Nie
Rygle pętlowe nie są używane w systemach jednoprocesorowych w jądrze, które nie wywłaszcza wątków
Tak
6 poniżej umieszczone zadania dotyczące obsługi przerwań przez linuksa 2.6 które z nich są prawdziwe
Numer przerwań mogą być przydzielone niektórym urządzeniem dynamicznie
Tak
Aby procedura obsługi przerwania mogła być wywołana, musi zostać wcześniej zarejestrowana
Tak
Procedury obsługi przerwania mogą korzystać z wartości zwracanej przez makrodefinicję „current”
Nie
Nie jest wymagane, aby funkcje obsługi przerwań były wielobieżne
Tak
7) które ze zdań dotyczący synchronizacji są prawdziwe
Niektóre operacje niepodzielne mogą być zrealizowane jako pojedyncze rozkazy procesora
Tak
Przeplot operacji jest przyczyną występowania problemu sekcji krytycznej
Nie
W systemie Linux, w przestrzeni użytkownika wywłaszczenie procesu może zajść tylko w ściśle określnym momencie jego działania
Nie
Zadania nigdy nie może być wywłaszczone po zakończeniu obsługi przerwań
Tak
Dostęp do zmiennych lokalnych wątków wykonania nie musi podlegać synchronizacji
Tak
8) Które z poniższych zdań dotyczą algorytmu szeregowanie O(1) są prawdziwe
Wymiana priorytetów zadań sprowadza się do zamiany wskaźników na tablicę aktywną u przeterminowaną
Tak
Priorytety każdego zadania jest ustalany wyłącznie na podstawie jego poziomu interaktywności
Nie
Promowane są zadania o wysokim stopniu interaktywności
Tak
Mechanizm szeregowania dokonuje zarówno obciążenia procesorów wyłącznie wtedy, kiedy kolejka zadań jednego z nich jest pusta
Nie
Kwany czasu dla poszczególnych zadań są przeliczane dopiero wówczas, gdy ostatnie z zadań znajdując się w tablicy priorytetów aktywnych wyczerpie swój kwant czasu
Nie
9)Określ, które ze zadań dotyczące szeregowania procesów w linksue 2.6 są prawdziwe
Linux realizuje wielozadaniowość wyłącznie w oparciu o kooperację
Nie
Działanie planisty O(1) operte jest na schemacie kolejek ze sprzężenie zwrotnym
Tak
Zadanie interaktywne otrzymują od planisty O(1) mniejszy kwant czasu niż zadanie nieaktywne
Nie
Główną strukturą danych planist CFS jest drzewo czerwono-czarne
Tak
Linux nie jest rygorystycznym systemem czasu rzeczywistego
Tak
[ 1 ] Programista jądra powinien się posługiwać zmienną printf. - NIE ( W kodzie jądra nie mamy dostępu do zmiennych ze standardowej biblioteki języka C, zamiast printf powinien używać printk )
[ 1 ] Programista powinien zwracać uwagę na rozmiar stosu jądra. - TAK ( Rozmiar stosu jądra jest ograniczony do 8kB(32bit)/16kB(64bit) )
[ 1 ] Programista jądra powinien uzywać funkcji rekurencyjnych. - NIE ( Funkcje rekurencyjne szybko zapełniają stos, a ten dla jądra jest ograniczony )
[ 1 ] Programista nie powinien uzywac funkcji goto. - ??? ( Napisałem do Chrobota żeby się upewnić, czekam na odpowiedź )
[ 1 ] Architektura NUMA jest obsługiwana od wersji jądra 2.6. - ???
[ 2 ] Makrodefinicja current pozwala na dostęp do deskryptora bieżacego procesu. - TAK
[ 2 ] Struktura thread_struct jest deskryptorem procesu. - NIE ( Struktura task_struct jest. )
[ 2 ] Stan procesów po zakończeniu jest przechowywany w tym samym polu deskryptora. - NIE ( "state" dla działających, "exit_state" dla zakończonych )
[ 2 ] Deskryptor procesu znajduje się na końcu stosu jądra dla wywołań systemowych procesu. - NIE? ( Znajdował się w starszych wersjach Linuksa. )
[ 2 ] Procesy UNINTERRUPTIBLE mogą zostać ustawione w stan gotowości przez inne zdarzenie niż to, na które oczekują. - NIE
[ 2 ] PID może być ujemny. - NIE
[ 2 ] Deskryptor procesu jest opisywany strukturą struct thread_info. - TAK ( Deskryptor procesu task_struct jest elementem struktury thread_info. )
[ 2 ] Alokator plastrowy przydziela pamięć na deskryptor. - TAK
[ 3 ] Procesy w O(1) tworzą listę dwukierunkową. - ???
[ 4 ] Planista CFS całkowicie zastąpił planistę O(1). - TAK
[ 4 ] Planista CFS przelicza priorytety procesów na wagi. - TAK
[ 4 ] Planista CFS korzysta z tablicy odwrotności priorytetów. - NIE ( CFS korzysta z tablicy odwrotności wag, nie priorytetów. )
[ 4 ] Procesy które nie korzystają z procesora, są przesuwane w lewą stronę drzewa czerwono-czarnego. - TAK
[ 5 ] Argumenty wywołań systemowych są przekazywane tylko przez rejestry programowe. - NIE? ( Są przekazywane przez 3 rejestry danych: EBX, ECX, EDX, oraz 2 rejestry adresowe: ESI i EDI. Jeżeli potrzeba więcej niż 5 argumentów, jeden z rejestrów przechowuje adres obszaru pamięci z argumentami wywołania. )
[ 5 ] Przy wywołaniach systemowych jest używany sys_ - TAK ( Wszystkie funkcje implementujące wywołania systemowe mają nazwę skonstruowaną według schematu sys_* )
[ 6 ] Przerwanie składa się z dwóch połówek. - TAK
[ 6 ] Każde urządzenie musi mieć inny numer przerwania. - NIE? ( Numer przerwania jest skojarzony z linią przerwania, a te mogą być współdzielone. )
[ 7 ] Liczniki bazują na taskletach. - NIE ( To osobny mechanizm. )
[ 7 ] Maksymalna ilość przerwań programowych wynosi 32. - TAK
[ 7 ] Przerwania programowe są wykorzystywane przy taskletach. - ??? ( Tasklety bazują na przerwaniach programowych, jednak są osobnym mechanizmem wchodzącym w skład obsługi dolnych połówek )
[ 8 ] Mechanizm RCU posługuje się wskaźnikami. - TAK
[ 8 ] Kod w mechanizmie RCU może ulec zawieszeniu. - NIE
[ 8 ] Odczyty w mechanizmie RCU powinny byc częste, a zapisy sporadyczne. - TAK
[ 8 ] Rygle pętlowe powinny być stosowane wszędzie tam, gdzie nie można zawiesić wątku i gdzie czas przełączania kontekstu byłby niewspółmiernie dłuższy z czasem aktywnego oczekiwania. - TAK
[ 8 ] Rygle pętlowe są rekurencyjne. - NIE
[ 8 ] Rygle pętlowe są użyteczne w systemach jednoprocesorowych z wywłaszczaniem jądra. - NIE
[ 9 ] Licznik monotoniczny jest wysokiej rozdzielczości. - TAK ( Pytanie może powinno brzmieć "Czy licznik wysokiej rozdzielczości działa w oparciu o zegar monotoniczny?" )
[ 9 ] Liczniki niskiej rozdzielczości są cykliczne. - NIE
[ 9 ] Użytkownik uprzywilejowany może dowolnie zmieniać wartość stałej HZ - NIE
[ 9 ] Jądro cyklicznie odczytuje wartości z zegara czasu rzeczywistego (RTC) - NIE ( Jądro odczytuje tę wartość z RTC tylko przy starcie, a później ją samo aktualizuje. )
[ 9 ] Zmienna jiffies przechowuje informacje o czasie rzeczywistym systemu - NIE ( Zmienna jiffies przechowuje ilość taktów (cyklów) procesora od chwili uruchomienia systemu )
[ 9 ] Czy liczniki niskiej rozdzielczości działają z mikrosekundową precyzją? - ???
[ 9 ] Liczniki wysokiej rozdzielczości pozwalają na ich regulowanie z nanosekundową precyzją. - TAK
[ 9 ] Zwiększenie wartości stałej HZ powoduje zmniejszenie częstotliwości przerwań zegarowych - NIE ( Im większe "taktowanie", tym częściej będzie wywoływane przerwanie na nim bazujące. )
[ 10 ] Każda ramka jest określona strukturą struct page. - TAK
[ 10 ] W 64-bitowych procesorach pamięć wysoka jest oznaczona jako HIGHMEM - NIE? ( ZONE_HIGHMEM – strefa grupująca strony w wysokiej pamięci (dla 32-bitowych procesorów rodziny x86 jest to pamięć fizyczna powyżej 896MB, dla innych procesorów ta strefa jest najczęściej pusta) )
[ 10 ] Alokator plastrowy przechowuje własne struktury w pamięci dedykowanej. - NIE ( Przechowuje je w pamięci ogólnej. )
[ 10 ] Pamięć fizyczna nieciągła jest przydzielana za pomocą algorytmu bliźniaków. - NIE ( Pamięć fizyczna ciągła jest. )
[ 10 ] Stronicowanie nigdy nie korzysta z segmentacji. - NIE ( Korzysta w wypadku 32-bitowych procesorów Intela i pokrewnych, głównie do ochrony pamięci. )
[ 10 ] Coś o alokatorze slob. - ??? ( Parę ostatnich zdań wykładu. )
[ 10 ] Alokator plastrowy przydziela w pierwszej kolejności pamięć z plastrów pustych. - NIE
[ 10 ] Programista może napisać dedykowaną pamięć podręczną dla alokatora plastrowego. - TAK
[ 11 ] Wirtualny system plików jest modelem obiektowym. - TAK? ( Jest oparty o model obiektowy. )
[ 11 ] Plik jest powiazany z wpisem katalogowym. - NIE? ( Wpis katalogowy (dentry) jest powiązany z katalogiem. )
[ 11 ] VFS jest napisany w C++? - NIE
[ 11 ] Niektóre pola struktury dotyczącej plików mogą być wypełniane dowolnymi wartościami. - TAK ( W wypadku plików w systemie FAT32 przenoszonych na NTFS pola dotyczące atrybutów kontroli dostępu są ustawiane na "full access" (system FAT32 nie obsługuje kontroli dostępu, a NTFS tak, więc trzeba czymś "zapełnić dziurę") )
[ 11 ] Wszystkie pliki na dysku są reprezentowane przez VFS (czy coś takiego). - NIE ( Tylko otwarte pliki. )
[ 11 ] Coś o obiekcie wpisu katalogowego (dentry) i jego stanach: używany, nieużywany lub ujemny - NIE
[ 11 ] VFS jest zapożyczony od Microsoftu. - NIE ( Od Sun Microsystems i systemu Solaris. )
[ 12 ] Urządzenia znakowe mają dostęp sekwencjny. - TAK
[ 12 ] Urządzenie znakowe jest zwykłym plikiem. - TAK? ( Urządzenia znakowe i blokowe są reprezentowane jako pliki. )
[ 13 ] Struktura bio reprezentuje operacje wejścia-wyjścia w trakcie ich trwania. - TAK
[ 13 ] Struktura bio może być wykorzystywana w macierzach RAID (czy coś w ten deseń). - TAK
[ 13 ] Obsługa struktury bio jest mniej skomplikowana niż obsługa nagłówków buforów. - TAK
[ 13 ] Rozmiar sektora dla urządzeń blokowych wynosi zazwyczaj 1024 bajty. - NIE ( 512 bajtów )
[ 13 ] Algorytm noop realizuje tylko operacje scalania. - TAK
[ 13 ] Struktura bio korzysta z listy offsetów. - NIE ( Z listy segmentów, przy czym są to inne segmenty niż w przypadku "segment-offset". )
[ 14 ] Procesy mogą współdzielić deskryptor pamięci. - TAK ( Jeżeli są wątkami. )
[ 14 ] Deskryptory pamięci są połączone w listę i drzewo czerwono-czarne. - TAK
[ 14 ] Wątki jądra mają sekcję tekstu. - ??? ( Wątki jądra nie mają własnej przestrzeni adresowej, ale korzystają z deskryptorów poprzednio zaszeregowanych procesów, więc nie wiem. )
[ 14 ] Deskryptory procesów są połączone w listę dwukierunkową. - TAK
[ 14 ] Jądro może przydzielić dodatkową przestrzeń adresową dla procesu podczas jego wykonywania. - TAK
[ 14 ] W wersji 2.6 deskryptor pamięci jest przechowywany na stosie. - NIE?
[ 12? ] Wystarczy użyć (jakaś funkcja), aby urządzenie było widoczne w systemie. - ???