Systemy operacyjne 2008
Transkrypt
Systemy operacyjne 2008
Systemy operacyjne 2008 Plan ćwiczeń i pracowni grupy MSq Marcin Skórzewski Web: http://www.ii.uni.wroc.pl/~msq/so08/: HTML, PDF i TEXMACS 7 styczeń 2008 1. Wprowadzenie • Tryb seminaryjny. Praktyczne przykłady na slajdach lub „how-to” z listingami lub zrzutami. • Plan prezentacji i listingi przykładów (lub screencasty) muszą być zatwierdzony wcześniej. • Minimum na zaliczenie: jedna prezentacja i pracownia. • Głosowanie: obecność obowiązkowa czy kolokwia z zaprezentowanego materiału? • Linux: jest sporo materiałów w Sieci na temat Linuksa. Materiały po angielsku! • Trzeba znać lub się właśnie uczyć C. Trzeba znać lub mieć chęć nauczenia się języka wysokiego poziomu wspieranego przez FUSE (wspierane języki). • Nie nauczymy się wiele o wnętrzu Linuksa, od tego jest wykład. • Spróbujemy nauczyć się narzędzi niezbędnych do „dłubania” w systemie. 2. Linux Temat najprostszy, ale tylko tydzień czasu. 2.1. Praca w konsoli (Maciej Ch., 159103, PDF) Logowanie; podstawowe komendy do poruszania się w strukturze katalogów; cat, grep, tar, gzip i dd; powłoka bash. 2.2. Polecenia obługi systemu plików (Jarosław G., 209137, ?; Robert Z., 186863, TXT) Tworzenie i montowanie systemów plików. Systemy plików i bootowanie z USB, CD i DVD. Przykład 1. Instalacja na systemie plików w pliku (loop) i bootowalnym gwizdku USB. Do pobrania minimalny system ze środowiskiem rozwojowym (edytorem, kompilatorem, itd.). [Mini dystrybucje Linuksa] 3. Bootowanie i emulacja 3.1. Bootowanie (Paweł L., 209068) 1. Przestrzeń adresowa PC-ta. 1 2 Systemy operacyjne 2008 [The PC’s Physical Address Space / Part 1: PC Bootstrap / The PC’s Physical Address Space] 2. Bootowanie. [Inside the Linux boot process (IBM)][How Computers Boot Up] 3.2. Emulacja, wirtualizacja i systemy przestrzeni użytkownika (Krzysztof S., 200121) Porównanie metod, ich wydajności i bezpieczeństwa. BOCHS, QEMU, VMWare, KVM, UML, coLinux, WINE, CygWin. Przykład 2. Przygotowanie i uruchomienie Linuksa w BOCHS. Środowisko rozwojowe + graficzny interfejs. 4. Bootowanie i główna pętla 4.1. Ślad bootowania (Marcin B., 209124) [The Kernel Boot Process] 4.2. Pętla główna i proces init (Marta Z., 208930) 5. Pracownia z emulacji i bootowania 6. Narzędzia do hackowania Linuksa 6.1. Debugowanie systemu (Piotr B., 200131) Bardzo krótko o narzędziach: binutils, gcc, gdb. Debugowanie bochs, debugowanie User-Mode Linux, kgdb, KGDB Light. 6.2. GIT (Adam W., 209187) Co można zrobić „zwykłym” systemem kontroli wersji, a co rozproszonym? [Kernel Hackers’ Guide to git ] [GIT for computer sciencists] Przykład 3. Pobranie źródeł systemu, utworzenie nowej gałęzi. 7. Moduły jądra 7.1. Wstęp do modułów (Maciej K., 200053) Krótko o obsłudze. Dokładniej prosty przykład i potrzebne API. 7.2. Wywołania systemowe (Damian W., 200113) Na wstęp: [Kernel command using Linux system calls (IBM)], uzupełnić (być może tym: [Sysenter Based System Call Mechanism in Linux 2.6] lub tym: [4. System Calls @ The Linux Kernel]). Może też lista najażniejszych wywołań? [man syscalls] Marcin Skórzewski 3 8. Komunikacja jądra z przestrzenią użytkownika 8.1. API jądra do obsługi przestrzeni użytkownika, sysctl, /proc/, Connector (Piotr G., 209108) <asm/uaccess.h> [API dostępu do przestrzeni użytkownika], dla /proc/ [„Chapter 5. The /proc File System” @ „The Linux Kernel Module Programming Guide”] lub to: [7.5 @ The Linux Kernel] Przykład 4. Moduł jądra komunikujący się z użytkownikiem przez /proc/. 8.2. Komunikacja przez urządenia w /dev/, ioctl, gniazda netlink (Marek T., 221130) [Why and How to Use Netlink Socket][Generic Netlink HOWTO] Przykład 5. Moduł jądra komunikujący się z użytkownikiem przez /dev/. 9. Pracownia z modułów Pod linkiem do problemu jest też dostępna ściąga z przygotowywania UML wraz ze skompilowanym przykładem. Problem 1. tuta j 10. Systemy plików 10.1. Prosty przykład w szczegółach (Agata B., 175596) Wstęp: [Anatomy of the Linux file system (IBM)], [„7.6 A baby filesystem example” @ „The Linux kernel” by Andries Brouwer] 11. FUSE i problem C10K 11.1. Wydajna komunikacja sieciowa (Piotr B., 200131) [The C10K problem] 11.2. FUSE (Krzysztof Z., 200087) Api dla C i dowolnego języka wyższego poziomu. Przykład 6. Bardzo prosty przykład w C. Przykład 7. Dość prosta, bezstanowa zabawka w języku wysokiego poziomu typu: suma katalogów, zawartość bazy danych, lista procesów, zawartość sieci, itp. 12. Przerwa 13. Pracownia z systemów plików Ćwiczenie 1. Prosty przykład wykorzystania FUSE do redundancji. 4 Systemy operacyjne 2008 14. Końcówki: Śledzenie, WINE i przepełnienia buforów 14.1. Co można zepsuć w wywołaniu funkcji w C Przepełnianie bufora, stos/sterta, ochrona przez kompilator, zastrzeżenia dostępu przez system, ret-to-libc, inne problemy z printf/scanf. 14.2. Jak psuć? (Adam W., 209187) Przykład błędu w popularnym programie, asembler (tylko kawałek niezbędny do zrozumienia dalszej części), kod przechwytujący kontrolę (shellcode), zmuszenie programu do wykonania kodu. 14.3. Śledzenie i podglądanie (Marta Z., 208930) Narzędzie dla programistów: LTrace, STrace, BLKTrace, LatencyTop. 14.4. WINE (Robert Z., 209187) 15. Koniec Wpisy, kłótnia o oceny i inna biurokracja.