Architektury systemów komputerowych lato 2024/25
Język wykładowy | Polski |
---|---|
Opiekun | Artur Kraska |
Liczba godzin | 30 (wyk.) 30 (ćw.) 15 (prac.) |
Rodzaj | Informatyczny 1 |
ECTS | 8 |
Polecany dla I roku | Nie |
Egzamin | Tak |
Tagi | ASK (Architektury systemów komputerowych) |
Grupy efektów kształcenia | Architektury systemów komputerowych |
Opis przedmiotu:
Celem przedmiotu jest wprowadzenie słuchaczy do budowy i zasad działania komputerów z punktu widzenia programisty. Studenci nabędą wiedzy z zakresu programowania niskopoziomowego. Po zakończeniu przedmiotu będą rozumieć: * reprezentację programów i danych na dysku i w pamięci komputera, * wpływ architektury komputera na wydajność aplikacji, * mechanizmy sprzętowe używane do implementacji systemów operacyjnych, * jak unikać pisania programów podatnych na ataki. ##### Program 1. Reprezentacja danych * reprezentacja danych w pamięci komputera * arytmetyka na liczbach binarnych w systemie uzupełnień do dwóch * arytmetyka na liczbach zmiennopozycyjnych standardu IEEE754 * problemy wynikające z ograniczeń reprezentacji maszynowych typów numerycznych 2. Programowanie niskopoziomowe * reprezentacja pośrednia programów (kod trójadresowy, graf przepływu sterowania) * translacja konstrukcji języka C do asemblera procesorów x86-64 (wyrażenia, instrukcje sterujące, typy rekordowe i tablicowe) * konwencja wołania procedur i organizacja stosu wywołań (ABI) 3. Konsolidacja i ładowanie * proces kompilacji, konsolidacji i ładowania programów (sekcje, relokacje, układ pamięci) * reprezentacja programów – format plików ELF * biblioteki i konsolidator dynamiczny (ld.so) 4. Podatności programów na ataki * błąd przepełnienia stosu * wykorzystywanie podatności (wstrzykiwanie kodu, programowanie zorientowane na powroty) * sprzętowe i programowe techniki zapobiegania podatnościom (ASLR, W^X) 5. Pamięć masowa i operacyjna * hierarchia pamięci i lokalność dostępów * organizacja pamięci operacyjnej (czasu dostępu, protokół DDR) * dyski magnetyczne (multi-zone recording, buforowanie) * dyski półprzewodnikowe (odśmiecanie bloków) * komunikacja procesora z urządzeniami peryferyjnymi (przerwania, MMIO, DMA) 6. Pamięć podręczna * organizacja pamięci podręcznej (zbiór, blok, znacznik, bity dodatkowe) * polityka wymiany bloków (LRU) * polityka zapisu (write-back, write-through) * analiza i optymalizacja programów pod kątem lokalności dostępów 7. Translacja adresów i pamięć wirtualna * motywacja: zarządzanie pamięcią, izolacja, leniwe sprowadzanie danych * przestrzeń adresowa i mechanizm translacji adresów * zbiór roboczy i rezydentny, błąd strony * hierarchiczna reprezentacja tablicy stron * przyspieszanie procesu translacji dzięki TLB * przełączanie przestrzeni adresowych * problemy na styku translacji adresów i pamięci podręcznej (homonimy i synonimy) 8. Wpływ mikroarchitektury procesora na wydajność programów * przetwarzanie superskalarne (procesory Out-of-Order, spekulacja) * modelowanie obliczeń grafem przepływu danych * przewidywanie skoków (BHT i BTAC) ##### Zajęcia Większość zajęć do przedmiotu będzie prowadzona w postaci ćwiczeń z deklaracjami. Pozostałe to pracownie programistyczne: * programowanie w asemblerze x86-64 * odpluskwianie programów z użyciem [gdb](https://www.gnu.org/software/gdb/) * przeprowadzanie ataków na podatne oprogramowanie * optymalizacja programów w języku C ##### Zmiana od roku akademickiego 2021/2022 **W związku ze zmianą wymiaru godzinowego, od roku 2021/2022 zmienia się liczba punktów ECTS z 6 do 8.**Wykłady
ListaProwadzący | Termin zajęć | Limit | Zapisani | Kolejka |
---|---|---|---|---|
Artur Kraska
|
wt 14:00-16:00 (s. 25) | 151 | 48 | 0 |
UWAGA! Wyższa liczba oznacza wyższy priorytet, po zapisaniu do grupy zostajemy usunięci z kolejek o niższym priorytecie.
Ćwiczenia
ListaProwadzący | Termin zajęć | Limit | Zapisani | Kolejka |
---|---|---|---|---|
Kuba Nowak
|
pn 14:00-16:00 (s. 105) | 20 | 12 | 0 |
Artur Kraska
|
wt 12:00-14:00 (s. 141) | 20 | 19 | 0 |
Marek Materzok
|
śr 16:00-18:00 (s. 5) | 20 | 17 | 0 |
UWAGA! Wyższa liczba oznacza wyższy priorytet, po zapisaniu do grupy zostajemy usunięci z kolejek o niższym priorytecie.
Pracownie
ListaProwadzący | Termin zajęć | Limit | Zapisani | Kolejka |
---|---|---|---|---|
Artur Kraska
wirtualna — termin nieistotny |
pn 10:00-11:00 (s. wirtualna1) | 15 | 15 | 0 |
Artur Kraska
wirtualna — termin nieistotny |
pn 11:00-12:00 (s. wirtualna1) | 15 | 15 | 0 |
Piotr Witkowski
wirtualna — termin nieistotny |
cz 14:00-15:00 (s. wirtualna1) | 15 | 8 | 0 |
Piotr Witkowski
wirtualna — termin nieistotny |
cz 15:00-16:00 (s. wirtualna1) | 15 | 9 | 0 |
UWAGA! Wyższa liczba oznacza wyższy priorytet, po zapisaniu do grupy zostajemy usunięci z kolejek o niższym priorytecie.
Konsultacje prowadzących:
Imię i nazwisko | Pokój | Konsultacje |
---|---|---|
Artur Kraska | 204 | Środa 13-14 (wcześniej należy poinformować mnie mailowo). |
Marek Materzok | 336 | Po uzgodnieniu przez e-mail |
Piotr Witkowski | 311 | Po wcześniejszym umówieniu się pocztą elektroniczną. |
Kuba Nowak | 340 | Po wcześniejszym umówieniu pocztą elektroniczną. |