Systemy komputerowe

Język wykładowy Polski
Semestr Letni
Status Poddana pod głosowanie
Opiekun Piotr Witkowski
Liczba godzin 30 (wyk.) 30 (ćw.)
Rodzaj Informatyczny 1
ECTS 6
Polecany dla I roku Nie
Egzamin Tak
Tagi ASK (Architektury systemów komputerowych) SO (Systemy operacyjne)
Grupy efektów kształcenia Architektury systemów komputerowych Systemy operacyjne

Opis przedmiotu:

Celem wykładu jest przedstawienie studentom najważniejszych idei, algorytmów i struktur danych wykorzystywanych w systemach komputerowych, głównie w sprzęcie, systemach operacyjnych i narzędziach systemowych. **Uwaga**: Mimo, iż przedmiot pokrywa efekty kształcenia przedmiotów ASK i SO, to podejście do poruszanych tematów jest zasadniczo odmienne. Ten wykład skierowany jest głównie do studentów z zacięciem teoretycznym. Zasady przyznawania punktów dla osób, które zaliczyły już przynajmniej jeden z powyższych przedmiotów: 1. Osoby, które zaliczyły ASK oraz SO, otrzymają za SyK 0 ECTS, a 2. Osoby, które zaliczyły ASK albo SO, otrzymają za SyK 4 ECTS. Program wykładu opracowano wspólnie z **Krystianem Bacławskim**. ### Tematy wykładów 1. Sprzętowa implementacja operacji arytmetycznych: szybkie algorytmy dodawania (sumatory carry-lookahead i Ling'a), mnożenia (drzewa Wallace'a i kodowanie Booth'a) i dzielenia (non-restoring division, SRT division). 2. Niskopoziomowa reprezentacja programów (kod trójadresowy, graf przepływu sterowania), analiza przepływu danych (obliczenia stałopunktowe). 3. Architektura współczesnego procesora (przetwarzanie potokowe i *out-of-order*). Graf przepływu danych i algorytm Tomasulo. 4. Spekulatywne wykonywanie instrukcji, przewidywanie skoków (perceptron, TAGE), atak Spectre. 5. Instrumentacja kodu, profilowanie (graf wywołań funkcji) i optymalizacja kodu (algorytm *local value numbering*). 6. Struktury pamięci podręcznych, algorytmy *cache-oblivious*. 8. Algorytmy szeregowania wątków i balansowania obciążenia procesorów (algorytm ULE, kolejka kalendarzowa). 9. Translacja adresów, wielopoziomowa i odwrócona tablica stron. 10. Pamięć wirtualna, algorytmy zastępowania stron (algorytm WSCLOCK, aging, Clock-Pro). 11. Algorytmy dynamicznego przydziału pamięci (buddy systems, boundary tags). Algorytmy odśmiecania (mark and sweep, algorytm kopiujący). 12. Struktury danych systemów plików (grupy bloków, i-node, B-drzewo, journaling). Planowanie operacji I/O (budget-fair queueing). 13. Przetwarzanie współbieżne. Implementacja środków synchronizacji (synchronizacja pamięci podręcznych, exponential backoff). 14. Kontrola przepływności w protokole TCP. Obliczanie sum kontrolnych i kodów korekcyjnych. 15. Sieci w układach scalonych: topologia i trasowanie pakietów.