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.