Projekt realizowany w ramach zajęć z Systemów Operacyjnych


Organizacja

Udział w projekcie jest warunkiem koniecznym zaliczenia ćwiczeń.

Projekt jest realizowany niezależnie w każdej grupie ćwiczeniowej. Uczestnicy grupy dzielą się na pięć zespołów. Każdy zespół przygotowuje jeden z tematów. Zadaniem zespołu jest:

  1. Przejrzenie literatury. Podane pozycje bibliograficzne należy traktować jako wyjściowe do dalszych poszukiwań.

  2. Przygotowanie prezentacji. Należy również przygotować materiały, które posłużą do przeprowadzenia prezentacji (w HTML-u lub PDF-ie). Materiały te zostaną umieszczone w Internecie na stronach Systemów Operacyjnych. Sama prezentacja będzie się odbywać w grupie ćwiczeniowej zespołu i zajmie około 60-70 minut (jest jeszcze potrzebny czas na omówienie scenariusza laboratoryjnego).

Kolejne tematy będą prezentowane kolejno na zajęciach, jak to wskazano na grafiku, na stronie głównej zajęć.

Punktacja

Prezentacje będą oceniane w skali 0..10. Przedmiotem oceny będzie:

  1. Zawartość merytoryczna prezentacji.

  2. Jakość prezentacji.

  3. Jakość przygotowanych materiałów.

Konkurs

Wszystkie przeprowadzone prezentacje wezmą udział w konkursie na NAJLEPSZĄ PREZENTACJĘ. Wybierzemy JEDNEGO zwycięzcę na roku (indywidualnego lub zbiorowego). Zwycięzca konkursu otrzyma:

  1. Nagrodę rzeczową (coś miłego zawsze się znajdzie)!

  2. Bonus w postaci dodatkowych 3 punktów.

  3. Uścisk dłoni wykładowcy i wszystkich asystentów :)

Wyboru najlepszej prezentacji będą dokonywać wszyscy uczestnicy. Każda grupa ćwiczeniowa będzie nominować zwycięzcę ze swojej grupy. Następnie spośród nominowanych kapituła (JMD i koledzy) wybierze zwycięzcę.

Prezentacje mogą być oceniane indywidualnie bądź zbiorowo, zależnie od uznania zespołu. Decyzję w tej sprawie należy oczywiście przekazać z wyprzedzeniem.

Tematy

1

Wpływ architektury procesora na system operacyjny

W prezentacji głównie należy się koncentrować na tych rozwiązaniach sprzętowych, które mają wpływ na system operacyjny. Prezentacja powinna obejmować (ale nie ograniczać się do) przedstawienie następujących zagadnień:

  • Klasyfikacja procesorów ze względu na różne kryteria (32-bitowe a 64-bitowe, CISC a RISC itp).
  • Na czym polega technika potokowania (ang. pipelining) instrukcji w procesorze?
  • Klasyczne potokowanie procesora RISC.
  • Wyjaśnić pojęcie wielordzeniowości procesora (ang. multicore).
  • Jakiego typu aplikacje potrafią najlepiej wykorzystać wielordzeniowość.
  • Co powinien zapewniać system operacyjny aby wykorzystać nowe możliwości procesora.
  • Czy 64-bitowe adresowanie to dzisiaj konieczność?
  • Przykłady 64 bitowych edycji systemów - dystrybucje Linuksowe (m. in. Ubuntu, openSuse), Windows XP Professional, Vista. Wady i zalety, problemy praktyczne w zastosowaniu tych edycji.

Bibliografia:

Autor tematu: Agata Janowska

2

Wirtualizacja wspomagana sprzętowo - zalety, wady i zagrożenia

W prezentacji należy skupić się na procesorach z rodziny x86 i x86_64, ale można zahaczyć też o inne architektury (np. IA-64) w celu pokazania różnic.

W prezentacji powinny zostać poruszone następujące zagadnienia:

  • Wirtualizacja bez wspomagania sprzętowego na procesorach x86 - zasada działania, problemy (z instrukcjami uprzywilejowanymi, z tablicami stron,...) i sposób radzenia sobie z nimi bez wsparcia sprzętowego. Co jest główną przyczyną problemów z wydajnością.
  • Pierwsze podejście do wirtualizacji wspomaganej sprzętowo - Ring -1, AMD-V i Intel-VT. Zasada działania tych rozszerzeń i problemy z nią związane. Wydajność w porównaniu do wirtualizacji realizowanej programowo za pomocą Ring 0-Ring 3.
  • Shadow page tables i problemy związane z tym rozwiązaniem. Nested page tables (AMD)/Extended Page Tables (Intel).
  • Bezpośredni dostęp do urządzeń z maszyny wirtualnej. Do czego służy IOMMU i jak działa. Technologia AMD IOMMU i Intel VT-d. Zastosowania IOMMU poza wirtualizacją.
  • Uproszczenie wirtualizacji dzięki wsparciu sprzętowemu - wirtualizacja sprzętowa w XEN i KVM.
  • Zagrożenia związane ze sprzętową wirtualizacją. Użycie sprzętowej wirtualizacji do tworzenia niewykrywalnego szkodliwego oprogramowania (BluePill, Virtriol i podobne).

Mile widziane będzie pokazanie na żywo różnic w działaniu wirtualizacji wspomaganej sprzętowo i wirtualizacji realizowanej programowo za pomocą jednej z pełnych maszyn wirtualnych (VirtualBox, Vmware, Virtual PC) lub krótkie zaprezentowanie użycia "lekkich" sposobów wirtualizacji w Linuksie (KVM lub Lguest) do testowania skompilowanego przez siebie jądra.

Bibliografia:

Autor tematu: Krzysztof Lichota

3

Systemy operacyjne oparte na mikrojądrze

  • Wstęp

    Podejście do pisania systemów operacyjnych, w którym cała logika wykonywana jest w trybie uprzywilejowanym nie jest jedyne - istnieją systemy oparte na mikrojądrze. W tym podejściu duża część tej logiki zaszyta jest w programach działających w przestrzeni użytkownika. Celem prezentacji jest przedstawienie jednego z dwóch takich systemów: GNU/Hurda lub MINIX-a.

  • Proponowana zawartość prezentacji

    • Przedstawienie ogólnej koncepcji systemów z mikrojądrem, za co odpowiedzialne jest mikrojądro, a za co procesy działające w trybie uzytkownika, które udostępniają usługi systemowe.
    • Omówienie sposobów komunikacji jądra z procesami systemowymi działającymi w trybie użytkownika oraz procesów między sobą.
    • Prezentacja działania systemu, czyli pokaz przykładowego programu używającego komunikacji charakterystycznej dla danego mikrojądra.
    • Pokazanie przepływu komunikatów dla jakiejś przykładowej funkcji systemowej, np read().
    • Testy wydajności w porównaniu z jądrem monolitycznym.
    • Przedstawienie argumentów za i przeciw mikrojądrom (kluczowa może być długa dyskusja Tanenbauma z Torvaldsem).
    • W przypadku MINIX-a: jak działają sterowniki w przestrzeni użytkownika?
    • W przypadku GNU/Hurda: idea translatorów jako sposobu dostępu do pożądanych usług systemowych oraz rozszerzenie idei montowania.

Bibliografia (to materiały wyjściowe, nie należy się do nich ograniczać):

Autor tematu: Marek Dopiera

4

Automatyczne testowanie jądra Linuksa

Przegląd metod i technik stosowanych podczas wykonywania automatycznych testów jądra Linuksa.

W prezentacji powinny zostac nastepujace zagadnienia:

  • Metodologie przygotowywania i przeprowadzania testow poprawnosciowych
  • Metodologie przygotowywania i przeprowadzania testow wydajnosciowych. Techniki pozwalajaca na poprawne odczytywanie informacji o wydajnosci
  • Wykorzystywane "srodowiska i mechanizmy" przy testowaniu jadra
  • Pokrycie kodu testami, GCOV
  • Przykładowe testy jądra
  • Prezentacja "na żywo" własnych testów jądra.

Bibliografia:

Autor tematu: Piotr Stańczyk

5

Systemy operacyjne na urządzenia mobilne

Celem prezentacji jest przedstawienei systemów operacyjnych na urządzenia mobline, jakie to oznacza wyzwanai dla programistów systemowych, jakie rozwiązania są dostepne. W preentacji powinny zostać poruszone następujące zagadnienia:

  • Oczekiwania użytkowników względem systemu operacyjnego działającego na komórce.
  • Ograniczenia techniczne mające wpływ na system operacyjny.
  • Przegląd kilku istniejących platform na komórkę, np. SymbianOS, Windows Mobile, Google Android.
  • Porównanie omówionych systemów, m.in. pod kątem:
    • niezawodności i interaktywności,
    • łatwości programowania aplikacji,
    • bezpieczeństwa.

Bibliografia:

Autor tematu: Marcin Pilipczuk


Janina Mincer-Daszkiewicz