Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #README
- #WSZYSTKO WYKONYWAC JAKO ROOT
- #KOMENDY ZE SREDNIKAMI NA KONCU POWINNY BYC WRZUCANE NARAZ
- #PRZED KAZDYM ZADANIEM JEST PODANA ILOSC WYMAGANYCH TERMINALI
- #KAZDY TERMINAL MA PRZYPISANA CYFRE np. 1:
- #Z REGULY TERMINAL 1 JEST DO LISTINGOW A TERMINAL 2 JEST ROBoCZY
- #ZALECA SIE ROBIC KAZDY PODPUNKT W ODDZIELNYM TERMINALU (latwiej clearowac)
- 4.1.2.3
- #POTRZEBNE GUI
- Jak wykazać aktualną liczbę wątków w procesie oraz, że wątki procesu mogą mieć różne cykle życia.
- - wymagane zaprezentowania odpowiednich wartości w listingu dla wybranego procesu wielowątkowego
- echo -e "\033[0;32m-------------------------------------------------------[4.1.2.3]-----------------------------------------------------------------------------\033[0m"
- echo -e " Każdy wątek posiada identyfikator TID(Thread ID) , który można oznaczyćTID=LWP(Ligth Weigth Process). Są
- nazwywane lekkimi procesami ponieważsystem operacyjny nie zapewnia sepracji wątków tego samego procesu.
- Proces jest kontenerem wątków (ich liczba może sięzmieniaćw trakcie istnienia procesu)
- Wątek główny \033[0;32mTID = SPID = PID\033[0m zawsze istnieje do końca życia procesu gdyżzwraca kod błędy więc zakończy sięjako
- ostatni.
- Liczba wątków dla procesu (wątek główny to teżwątek)
- ELAPSED -czas od rozpoczęcia procesu
- O liczbie watkow decyduje:
- - wątki procesu - programista
- - wątki jądra - jądro systemu
- dowolny watek \033[0;32mnie moze sie zakonczyc w dowolnym momencie\033[0m
- Wątek główny \033[0;32mnie moze sie zakonczyc w dowolnym momencie\033[0m, ponieważmusi zwrócićkod błędu na koniec
- \033[0;32mLiczba watkow kazdego procesu\033[0m zależy od uruchomionego programu , w którym \033[0;32mprogramista\033[0m przydzielił zadanie
- dla wątków, określił ich cykle życia i ustalił zasady ich przetwarzania
- \033[0;32mZadanie przetwarzane przez wątek\033[0m definiowane jest poprzez sekwencje rozkazów oraz zbiór danych do przetwarzania
- Wątek jądra a wątek procesu
- - Wątki jądra mogą korzystać bezpośrednio z zasobów systemowych oferowanych przez jądro , jednak monitoranie
- wątku jądra w przestrzeni użytkownika niekoniecznie uwidoczni wykorzystanie każdego z używanych przez niego
- zasobów systemowych
- - Wątki jądra realizują przetwarzanie zadań tylko w trybie uprzywilejowanym
- Wątek procesu \033[0;32mna wyłączność posiada\033[0m:
- - własny stos
- - licznik rozkazów
- - własny stan (gotowy do wykonania , wykonywany, zablokowany)
- "
- 2 (GUI):
- #URUCHOMIC LEAFPAD W SESJI GUI
- 1:
- pidof leafpad;
- ps -o pid,nlwp -p $(pidof leafpad) | grep --color -E "NLWP|$"
- ps -T -o pid,tid,spid,etime,stime,comm | grep --color -E "SPID|ELAPSED|$"
- 2 (GUI):
- #WLACZYC ZAPISYWANIE W LEAFPAD
- 1:
- ps -o pid,nlwp -p $(pidof leafpad) | grep --color -E "NLWP|$"
- ps -T -o pid,tid,spid,etime,stime,comm | grep --color -E "SPID|ELAPSED|$"
- pstree -p $(pidof leafpad)
- 4.1.2.4
- Ile włókien posiada zidentyfikowany proces wielowątkowy? - odpowiedź uzasadnić,
- czy sytuacja będzie korzystniejsza jeżeli wszystkie wątki procesu będą włóknami?
- Należy ustalić najkorzystniejszy przydział jednostek przetwarzających dla procesu wielowątkowego, gdy wszystkie wątki nie są włóknami.
- 1:
- echo -e "\033[0;32m-------------------------------------------------------[4.1.2.4]-----------------------------------------------------------------------------\033[0m"
- echo -e "
- sytuacja nie będzie korzystniejsza \033[0;32mjeżeli wszystkie wątki procesu będą włóknami\033[0m
- Nie posiada żadnych włókien ponieważ każdy z wątków jest identyfikowany przez jądro poprzez \033[0;32mprzydzielone
- identyfikatory\033[0m, z których każdy jest różny.
- Sytuacja lepiej wygląda gdy wszystkie wątki nie są włóknami , ponieważ wtedy dla każdego z tych wątków możemy
- przydzielić inną jednostkę przetwarzającą.
- Gdy są włóknami wszystkie w te włókna korzystać mogą jedynie z jednej jednostki przetwarzającej.
- Czy zawsze?
- Sytuacja będzie korzystniejsza jeżeli wszystkie wątki będą włóknami, ponieważ:
- - przełączanie kontekstu wątków w tej sytuacji jest korzystniejsze, bo nie wymaga udziału jądra systemu
- operacyjnego w realizacji tej operacji,
- - Włókna są lżejsze od wątków, ponieważ współdzielą te same zasoby, takie jak pamięć.
- Na każdy wątek jedna jednostka przetwarzająca.
- Wątką procesu identyfikatory nadaje \033[0;32mjądro systemu\033[0m.
- Każdy wątek który \033[0;32mnie jest włóknem\033[0m może otrzymać przydział jednostki przetwarzającej
- Stos – obszar w pamięci, który jest na początku wyzerowany. I tam zapisywane są ramki stosu. (zbudowany
- z ramek stosu)
- \033[0;32mNajkorzystniejszy przydział jednostek przetwarzającyh\033[0m dla wielowątkowego procsu bezwłókien wynika z
- liczby wątków procesu, które są w stanie gotowym do wykonania lub wykonywanym(przy założeniu nie
- mniejszej liczby aktywnych jednostek przetwarzających)
- \033[0;32mKażdy z wątków\033[0m procesu który nie jest włóknem może uzyskać przydział co najwyżej pojedynczej aktywnej
- jednostki przetwarzającej.
- \033[0;32mKiedy ramki stosu są zapisywane na stosie?\033[0m
- Kiedy jest skok daleki, kiedy funkcja jest wykonywalna. I wtedy trzeba zachować w ramce na stosie
- adres powrotu.
- \033[0;32mCzy Adres powrotu wskazuje na adres rozkazu skoku?\033[0m
- Nie, adres powrotu wskazuje na rozkaz następny względem skoku. Ten który znajduje się
- bezpośrednio po rozkazie skoku.
- \033[0;32mCzy z tej saej ramki stosu można wielokrotnie odczytywać adres powrotu?\033[0m
- Nie
- \033[0;32mCo może być zawarte w ramce stosu?\033[0m
- Zawierają zmienne lokalne, by mogły zostać odtworzone po powrocie.
- \033[0;32mW jakiej kolejności odczytywane i zapisywane ramki stosu?\033[0m
- Jaki algorytm? - lifo (last in )
- "
- 4.1.2.13
- Jakie wyróżnia się rodzaje przełączeń kontekstu zadań, które z nich występują najczęściej i w jakich sytuacjach?
- - wskaż w przygotowanych listingach dla przykładowych wątków procesu liczbę odpowiednich przełączeń kontekstu.
- 1:
- echo -e "\033[0;32m-------------------------------------------------------[4.1.2.13]-----------------------------------------------------------------------------\033[0m"
- echo -e "
- Przełączenie kontekstu zadań wymaga zachowania stanu zadania (stan rejestrów jednostki przetwarzającej) ,
- które przestaje być przetwarzane i wczytanie zadanai którego przetwarzanie będzie wykonywane
- Przełączenie kontekstu zadań polega na przekazaniu jednostki przetwarzającej z wątku aktualnie
- przetwarzanego zadania do zadania , którego wątek był w stanie gotowym do wykonania.
- Przełączenie kontekstu zadań jest realizowane przez dyspozytora który jest elementem jądra systemu
- operacyjnego
- Przełączenie kontekstu procesów – zmiana przydziału jednostki przetwarzającej poprzez jej przekazanie pomiędzy dwoma
- procesami(dokładniej pomiędzy wątkami tych procesów).
- Przełączenie kontekstu wątków – zmiana przydziału jednostki przetwarzającej poprzez jej przekazanie pomiędzy dwoma
- wątkami tego samego procesu. Ten typ przełączenia jest mniej czasochłonny.
- Przełączenie kontekstu włókien - wykonywane jest bez pośrednictwa jądra zatem jest szybsze od przełączeń wątków.
- Decyzja przełączania kontekstu jest podejmowana przez mechanizmy szeregowania. Planista podejmuje decyzję o wyborze
- procesu gotowego do wykonania, któremu zostanie przyznana jednostka przetwarzająca. Dyspozytor (inaczej też
- ekspedytor) jest niskopoziomowym mechanizmem realizującym przydział i wykonującym przełączanie kontekstu.
- Dlaczego efektywniejsze jest przełączanie kontekstu zadań pomiędzy wątkami tego samego procesu niż
- pomiędzy wątkami różnych procesów?
- • system operacyjny zapewnia separacje procesów , ale nie seperuje wątków w ramach tego samego
- procesu.
- • przełączanie kontekstu zadań realizowanych w wątkach różnych procesów wymaga udostępniania dla
- jednostki MMU tablicy stron procesu , którego zadanie będzie przetwarzane a dotychczasowa zawartość
- pamięci asocjacyjnej TLB staje się bezużytyczna.
- Rodzaje przełączenia kontekstu:
- - \033[0;32mdobrowolne/nieobowiązkowe przełączanie kontekstu\033[0m, występuje podczas:
- • zmiany stanu procesu/wątku na zablokowany lub wstrzymany;
- • wykonania rozkazu odstąpienia jednostki przetwarzającej.
- • zakończenie przetwarzania zadanai w wątku
- • zgłoszenie operacji wejścia-wyjścia prez przetwarzane przez wątek zadanie
- Te częściej występują *spójrz na listing [cat /proc/{PID}/status | grep -e "Name\|Pid\|switches" ]*
- - \033[0;32mmimowolne/wymuszone\033[0m, występuje w sytuacji, gdy
- • dla procesu/wątku w stanie wykonywanym jednsotka jest odbierana w wyniku decyzji mechanizmów szeregujących
- systemu operacyjnego \033[0;32m(kwant czasu lub wyższa preferencja procesu)\033[0m
- Przełączanie kontekstu procesów wymaga:
- - zapisania i załadowania rejestrów jednostki przetwarzającej oraz mapy pamięci,
- - aktualizacji systemowych struktur danych (tabele i listy)
- - opróżnienia i ponownego załadowania pamięci podręcznej przez MMU
- Częściej występują dobrowolne
- \033[0;32mW jakiej sytuacji najczęściej występuje dobrowolne?\033[0m
- W sytuacji przejścia procesu/wątku w stan zablokowany.
- \033[0;32mCzyli oczekiwania na realizacje jakich operacji?\033[0m
- Wejścia-wyjścia
- "
- cat /proc/$(pidof leafpad)/status | grep -e "Name\|Pid\|switches"
- echo -e "
- \033[0;32mKwant czasu\033[0m-odcinek czasu przydzielany procesowi do działania w algorytmie rotacyjnym, rzędu milisekund.
- \033[0;32mGdzie ma wystąpićrozkaz odstąpienia?\033[0m
- W ścieżce wykonania wątku."
- pidstat -tw -p $(pidof leafpad)
- cat /proc/{PID1,PID2,PID3,etc}/status | grep -e "Name" -e "pid" -e "switches"
- cat /proc/{5082,5083,5084,5084}/status | grep -e "Name" -e "pid" -e "switches"
- 4.1.2.18
- Jakie ograniczenia wynikają z nadanej maski koligacji dla jednego z wątków procesu.
- - wymagane zaprezentowanie w listingu identyfikatorów jednostek przetwarzających
- jakie mogą być przyznawane dla wątku procesu ograniczonymi regułami koligacji.
- 1:
- echo -e "\033[0;32m-------------------------------------------------------[4.1.2.18]-----------------------------------------------------------------------------\033[0m"
- taskset -a -p $(pidof leafpad)
- taskset --cpu-list -p <TID wybranego wątku>
- taskset -p <2 ostatnie cyfry indeksu> <TID wybranego wątku>
- taskset -a -p $(pidof leafpad)
- taskset --cpu-list -p <TID wybranego wątku>
- echo -e "
- \033[0;32m#1\033[0m Stosując koligacjęjednostek przetwarzających dla procesu można określićlistędopuszczalnych aktywnych jednostek
- przetwarzających dla jego wątków. **Zbiór procesorów ustawionych poprzez reguły dla procesu nigdy nie może być
- pusty**
- \033[0;32mMaska koligacji\033[0m–zapis szesnastkowy wartości, której poszczególne bity będądecydowały, które jednostki
- przetwarzające będąmogły byćprzyznawane.
- 0 –brak zgody na korzystanie z jednostki przetwarzającej o danym identyfikatorze.
- 1 –zgoda na korzystanie z jednostki przetwarzającej o danym identyfikatorze.
- Ten mechanizm daje możliwośćpodziału kto korzysta z których jednostek przetwarzających, jest możliwe
- sprecyzowanie wybrana jednostka przetwarzająca jest dla konkretnego zadania. Ta jednostka przetwarzająca
- musi byćaktywna
- \033[0;32m#P\033[0m Czy wątek może otrzymaćprzydziałwszystkich jednostek przetwarzających naraz?
- Nie, może otrzymaćprzydziałtylko jednej z tych jednostek.
- \033[0;32m#P\033[0mCzy w każdym z systemów operacyjnych możemy indywidualnie przyznawaćwątki np. reguły koligacji?
- Nie, w windowsie możemy tylko per proces
- "
- 4.1.2.21
- Zaprezentować, że zastosowana polityka NUMA do procesu wielowątkowego spowodowała ograniczenie wykorzystania zasobów
- jednostek przetwarzających i pamięci ulotnej z ustalonego pojedynczego węzła NUMA. - wymagane zaprezentowanie listingów.
- 1:
- echo -e "\033[0;32m-------------------------------------------------------[4.1.2.21]-----------------------------------------------------------------------------\033[0m"
- 2:
- lscpu
- numactl --cpunodebind=2 --membind=2 leafpad
- 1:
- pidof leafpad
- ps -o pid,nlwp -p $(pidof leafpad)
- numastat -p $(pidof leafpad)
- numactl -H
- taskset -c -a -p $(pidof leafpad)
- echo -e "Maska przypisana zgadza się z przypisanymi CPU do tego węzła (6-9) – widać, że nastąpiło ograniczenia zasobów
- \033[0;32mNUMA\033[0m to architektura komputerów charakteryzująca się podziałem na węzły, które dysponują jednostkami przetwarzającymi i
- ciągła przestrzenią pamięci ulotnej RAM
- *Obowiązująca polityka NUMA oraz reguły koligacji są zawsze nadrzędne do ustalonej polityki szeregowania*
- \033[0;32mNUMA > koligacja > priorytet statyczny > polityka szeregowania > priorytet zewnętrzny nice\033[0m
- \033[0;32m#P\033[0m Co jeżeli reguły koligacji mówią że proces może korzystać z drugiego CPU a należy do węzła NUMA który nie zawiera tej
- jednostki przetwarzającej?
- - nie dostanie wtedy przydziału jednostki przetwarzającej ponieważ NUMA jest nadrzędna
- NUMASTAT
- - Huge - zakres dużych stron (mogą zajmować 2MiB)
- - Heap - sterta
- - Stack - stos
- - Private - strony anonimowe (segment składa się ze stron)
- Tablica TLB - przechowywane są ostatnio transformowane adresy stron z logicznych na fizyczne gdy odwołamy się do adresu
- strony której nie ma zostanie ona przetransformowane.
- Tablica stron - Zawiera numery ramek odpowiadające numerom stron
- \033[0;32m#P\033[0m Skąd wiadomo, że ten proces korzystał z pamięci ulotnej, zlokalizowanej w tym ostatnim węźle?
- - anonimowe segmenty pamięci - stos i stertę lokalizował w pamięci węzła nr 2. (pokazać niezerowe wartości po wykonaniu
- polecenia numastat -p <PID>
- \033[0;32m#P\033[0m Skąd wiadomo że to jednostki z ostatniego węzła?
- - z polecenia numactl -H widać node 2 cpus: 6 7 8 9
- \033[0;32m#P\033[0m Jakie zasoby przynależą do węzłów NUMA?
- - jednostki przetwarzające i obszar pamięci ulotnej
- "
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement