lokalne: local0-7
pary: remote2
czwórki: remote1
wszystkie: remote0
- Tanenbaum (wydanie czwarte): 2.4, 8.1.4, 10.3.4, A 5.2
- Stallings (wydanie dziewiąte): 9.1, 9.2, 10.1 – 10.3, 10.5
- Silberschatz (wydanie dziewiąte): 6.6
Zadanie 1. W pewnej chwili do systemu wsadowego przybywają kolejno zadania od P1 do P5. Oszacowany czas działania T w minutach oraz priorytet zadań P wczytano z opisu zadań wsadowych na taśmie magnetycznej i przedstawiono w tabeli poniżej. Zadania ważniejsze mają mniejszy numer priorytetu.
|Zadanie| Czas działania| Priorytet|
| /****************************************************************************** | |
| * Header file inclusions. | |
| ******************************************************************************/ | |
| #include "FreeRTOSConfig.h" | |
| // #undef configUSE_TICK_HOOK | |
| // #define configUSE_TICK_HOOK 0 | |
| // #undef configQUEUE_REGISTRY_SIZE | |
| // #define configQUEUE_REGISTRY_SIZE 5 | |
| #include "FreeRTOS.h" |
- Stallings (wydanie siódme): 12.7 – 12.9
- Tanenbaum (wydanie czwarte): 4.3 – 4.5, 10.6
Zadanie 1. Rozważamy następujące metody przydziału plików: ciągłą, listową, indeksowaną, i-węzeł. Dysponujesz bitmapą wolnych bloków i listą wszystkich i-węzłów. Czy i jak można naprawić poniższe błędy dla przydziału:
- Tanenbaum (wydanie czwarte): 4.1 – 4.3, 10.6
- Stallings (wydanie dziewiąte): 12.1 – 12.6
Zadanie 1. Na podstawie rozdziału §12.2 podręcznika Stallings wyjaśnij różnice między organizacją sterty i pliku sekwencyjnego. Rozważmy poniższe przypadki użycia:
- Zaproponuj binarny format przechowywania dziennika operacji składających się z listy par klucz-wartość złożonych ze znaków alfanumerycznych. Podaj semantykę kodów ASCII o numerach 28–31.
- Dodajemy rekordy do pliku przechowującego użytkowników systemu. Jak zachować porządek używając pliku dziennika lub listy dwukierunkowej? Jak przyspieszyć wyszukiwanie z użyciem indeksu?
- Tanenbaum (wydanie czwarte): 3.4 – 3.6
- Stallings (wydanie dziewiąte): 8.2
Zadanie 1. Rozważamy zarządzanie pamięcią wirtualną. Kiedy system korzysta z polityki ładowania, przydziału miejsca, zastępowania i usuwania? Porównaj stronicowanie wstępne (ang. prepaging) i stronicowanie na żądani(ang. demand paging). Jakie zachowania programów będą efektywnie obsługiwane przez jedną, a jakie przez drugą politykę?
- polityka ładowania: kiedy ładuje się do pamięci operacyjnej potrzebne strony
Zadanie 1. Podaj w pseudokodzie semantykę instrukcji atomowej compare-and-swap i z jej użyciem zaimplementuj blokadę wirującą (ang. spin-lock). W jakich systemach komputerowych stosuje się ten typ blokad? Wymień zalety i wady blokad wirujących w porównaniu do blokad usypiających. Opisz rozwiązanie pośrednie, czyli blokady adaptacyjne.
- instrukcja atomowa: taka, w trakcie której nie nastąpi wywłaszczenie. Wykona się od początku do końca bez np. zmian kontekstu.
- spinlock: blokada zużywająca czas procesora do aktywnego sprawdzania czy zachądzą warunki na kontynuację. np.
volatile int flag; while(flag);. Dobre, jeśli mamy pewność, że czekanie nie będzie długie i koszt poczekania jest mniejszy niż koszt uśpienia i zmian kontekstu. Przykładowo w systemach wbudowanych bardzo często stosuje się spinlocki do sprawdzenia czy dane z magistrali szeregowej zostały wysłane i można przeprowadzić kolejny zapis. Słabe bo nie zawsze jest pewność ile będziemy czekać, a grani
- Tannenbaum: 3.2, 10.4;
- Stallings: 7.2;
UWAGA! W trakcie prezentacji należy być gotowym do zdefiniowania pojęć oznaczonych wytłuszczoną czcionką. Dla każdej metody przydziału pamięci, która pojawi się w poniższych zadaniach, prowadzący zajęcia może wymagać by student wyjaśnił:
- jak wygląda struktura danych przechowująca informację o zajętości bloków?
- jak przebiegają operacje
allocifree?
- Tanenbaum (wydanie czwarte): 2.3, 6.1
- Stallings (wydanie dziewiąte): 5.1 – 5.4, 6.1, 6.2
Zadanie 1. Wyjaśnij różnice między zakleszczeniem (ang. deadlock), uwięzieniem (ang. livelock) i głodzeniem (ang. starvation). W podręcznikach pojęcia te odnoszą się do zasobów. Pokaż, że podobne problemy występują w przypadku przesyłania komunikatów.
| C:\Users\Tooster\AppData\Local\JetBrains\Toolbox\apps\CLion\ch-0\173.3727.114\bin\cmake\bin\cmake.exe --build G:\CLion\Logicon\cmake-build-debug --target logicon -- -j 2 | |
| [ 37%] Built target glfw | |
| Scanning dependencies of target logicon | |
| [ 40%] Building C object CMakeFiles/logicon.dir/dependencies/gl3w/src/gl3w.c.obj | |
| [ 42%] Building CXX object CMakeFiles/logicon.dir/dependencies/imgui/imgui.cpp.obj | |
| [ 45%] Building CXX object CMakeFiles/logicon.dir/dependencies/imgui/imgui_draw.cpp.obj | |
| [ 47%] Building CXX object CMakeFiles/logicon.dir/dependencies/imgui/imgui_demo.cpp.obj | |
| [ 50%] Building CXX object CMakeFiles/logicon.dir/dependencies/imgui_impl_glfw_gl3/imgui_impl_glfw_gl3.cpp.obj | |
| In file included from g:\programy\mingw\include\windows.h:44:0, | |
| from G:/CLion/Logicon/dependencies/glfw/include/GLFW/glfw3native.h:88, |