Advertisement
dadix102

uzupelnienie - do usuniecia

May 29th, 2025 (edited)
734
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 20.39 KB | None | 0 0
  1. echo -e "
  2. \033[0;32m-------------------------------------------------------[4.1.1.12]-----------------------------------------------------------------------------\033[0m
  3. \033[0;32mVSZ\033[0m - rozmiar stron [KiB]
  4. rozmiar wszystkich przydzielonych dla procesu stron (w KiB) (cała pamięć, do której proces ma dostęp, czyli
  5. pamięć wymieciona + pamięć zaalokowana + pamięć bibliotek współdzielonych + pamięć plików wykonywalnych)
  6.  
  7. \033[0;32mRSZ\033[0m - rozmiar ramek [KB]
  8. rozmiar wszystkich przydzielonych dla procesu ramek z jego stronami (w KB) (nie uwzględnia SWAP, ale
  9. uwzględnia pamięć bibliotek współdzielonych, czyli pokazuje tylko stan aktualny ramek w pamięci fizycznej)
  10.  
  11. \033[0;32mStrona jest ladowana do ramki\033[0m (czyli fizycznej strony pamieci) w momencie, gdy proces potrzebuje dostepu do danego obszaru pamieci wirtualnej,
  12. ktory nie jest obecnie obecny w pamieci fizycznej.\n
  13.  
  14. \033[0;32mnie kazda\033[0m strona jest przechowywana w ramce tego procesu\n
  15. gdy proces odwoluje sie do strony pamieci ktorej nie ma w zadnej z jego ramek \033[0;32mwystapi blad strony\033[0m
  16. \033[0;32mkolejnosc odszukiwania strony\033[0m - poza zbiorem roboczym, (gdy wystapi \033[0;32mblad strony\033[0m):
  17. \033[0;32m1.\033[0m swap cache - jesli znajdzie to blad poboczny, aktualizacja zbioru roboczego, pozniej tablicy
  18. stron
  19. \033[0;32m2.\033[0m przestrzeni wymiany swap
  20. \033[0;32m3.\033[0m plik regularny tego programu lub biblioteki
  21.  
  22. \033[0;32mStrona jest ladowana do ramki\033[0m w momencie, gdy program probuje uzyskac dostep do tej strony.
  23.  
  24. To co proces ma w segmentach to jego pamięć wirtualna, każdy segment jest podzielony na strony. Te ze stron, które są
  25. załadowane do ramek to jego rzeczywista fizyczna pamięć ulotna. Strony, które nie są w ramkach, znajdują się w
  26. plikach regularnych programu lub bibliotekach, wykorzystywanych przez proces. Strona. która jest niepotrzebna dla
  27. procesu zmienia oznaczenie na nieaktywną i jej właścicielem zostaje swap cache.
  28.  
  29. \033m Bedy glowne maj_flt blad glowny strona nie należy do zadnej ramki
  30. \033
  31. \033m Blad poboczny min_flt poboczny należy do ramki ale nie należy do obszaru roboczego procesu
  32. co to obszar roboczy -  zbior ramek\033
  33. "
  34.  
  35. echo bfq > /sys/block/sda/queue/scheduler
  36. time perf sched record ionice -c 1 -n 0 stress -i 1 -t 240
  37.  
  38.  
  39. ps -o pid,cmd,maj_flt,min_flt $(pidof stress)
  40. ps -o pid,vsz,rsz $(pidof stress -s) | grep --color -E "VSZ|RSZ|$"
  41.  
  42.  
  43.  echo -e "
  44. \033[0;32m-------------------------------------------------------[4.1.1.24]-----------------------------------------------------------------------------\033[0m
  45.    Należy regularnie kontrolować stan dostępnej pamięci operacyjnej (mem \033[0;32mused\033[0m i \033[0;32mavailable\033[0m) oraz ile mamy wykorzystanej
  46.    pamięci swap (ilosc wolnych ramek w pamieci, zajetosc przestrzeni wymiany swap)
  47.  
  48.    Jeśli posiadamy mało wolnej ulotnej pamięci fizycznej (available) oraz mało wolnej pamięci przestrzeni wymiany (free),
  49.    możemy spodziewać się podjęcia przez system operacyjny odpowiednich kroków
  50.    
  51.    \033[0;32mW przypadku presji pamieci\033[0m (kiedy brakuje ramek) system stosuje:
  52.    \033[0;32m1.\033[0m wymiatanie stron.
  53.    \033[0;32m2.\033[0m redukcja zbioru roboczego procesu - odebranie czesci przydzielonych procesom ramek
  54.    \033[0;32m3.\033[0m procedura OOM (Out of Memory) - wybierane sa procesy, ktore zostana natychmiast zakonczone
  55.    
  56.    Aby procedura OOM nie była zastosowana możemy:
  57.    \033[0;32m- powiekszyc przestrzen wymiany\033[0m poprzez dodanie pliku wymiany (ale tylko w Linuxie, w Windowsie nie można, bo trzeba by było restartować system
  58.    \033[0;32m- zakonczyc procesy\033[0m, które są nam już niepotrzebne, dzięki czemu będziemy mieli kontrolę nad procesami, które zostaną zamknięte
  59.    \033[0;32m- zapisać stan procesów\033[0m na dysku.
  60.    
  61.    Dlatego też instalowanie systemu bez przestrzeni wymiany swap jest złym pomysłem, ponieważ bez magazynów stron
  62.    przyspierzymy wystąpienie procedury OOM.
  63.  
  64.    \033[0;32mfree\033[0m - rozmiar wolnej pamieci ulotnej(operacyjnej) ale bez ramek z przestrzeni swap cache (NIE UZYWANA PRZEZ ZADEN URUCHOMIONY PROCES,
  65.        GOTOWA DO ALOKACJI DLA NOWEGO PROCESU)
  66.  
  67.    \033[0;32mAvailable\033[0m - rozmiar wolnych ramek wraz z ramkami z swap-cache, ktore zawieraja niezabrudzone i nieanonimowe strony
  68.    
  69.    pokaze wartosc free(mem)(rozmiar wolnych ramek) + ramki ze swap cache NIEZABRUDZONE I NIEANONIMOWE strony + z buforow te zabrudzone
  70.  
  71.    SZACUJE ILOSC PAMIECI MOZLIWA DO PRZYDZIELENIA NOWEMU PROCESOWI, BIERZE POD UWAGE BUFORY I CACHE, KTORE MOGA ZOSTAC ZWOLNIONE PRZEZ INNE PROCESY W RAZIE POTRZEBY
  72. "
  73.  
  74.     free -wh | grep --color -E "free|used|$"
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81. 1:
  82. echo -e "\033[0;32m-------------------------------------------------------[4.1.2.21]-----------------------------------------------------------------------------\033[0m"
  83.  
  84.  
  85. 2:
  86. lscpu
  87. numactl --cpunodebind=2 --membind=2 leafpad
  88.  
  89.  
  90. 1:
  91. pidof leafpad
  92. ps -o pid,nlwp -p $(pidof leafpad)
  93. numastat -p $(pidof leafpad)
  94. numactl -H
  95. taskset -c -a -p $(pidof leafpad)
  96.  
  97. #uma - zasoby nie dziela się na wezly
  98. #numa - zasoby dziela się na wezly zawierające pewny obszar pamięci operacyjnej i jednostki przetwarzające. Jest to korzystniejsze ponieważ przetwarzanie w ramach jednego wezla jest szybsze
  99.  
  100.  
  101. echo -e "Maska przypisana zgadza się z przypisanymi CPU do tego węzła (6-9) – widać, że nastąpiło ograniczenia zasobów
  102.  
  103. \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
  104. ciągła przestrzenią pamięci ulotnej RAM
  105.  
  106. *Obowiązująca polityka NUMA oraz reguły koligacji są zawsze nadrzędne do ustalonej polityki szeregowania*
  107. \033[0;32mNUMA > koligacja > priorytet statyczny > polityka szeregowania > priorytet zewnętrzny nice\033[0m
  108.  
  109. \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
  110. jednostki przetwarzającej?
  111. - nie dostanie wtedy przydziału jednostki przetwarzającej ponieważ NUMA jest nadrzędna
  112. NUMASTAT
  113. - Huge - zakres dużych stron (mogą zajmować 2MiB)
  114. - Heap - sterta
  115. - Stack - stos
  116. - Private - strony anonimowe (segment składa się ze stron)
  117. Tablica TLB - przechowywane są ostatnio transformowane adresy stron z logicznych na fizyczne gdy odwołamy się do adresu
  118. strony której nie ma zostanie ona przetransformowane.
  119. Tablica stron - Zawiera numery ramek odpowiadające numerom stron
  120.  
  121. \033[0;32m#P\033[0m Skąd wiadomo, że ten proces korzystał z pamięci ulotnej, zlokalizowanej w tym ostatnim węźle?
  122. - anonimowe segmenty pamięci - stos i stertę lokalizował w pamięci węzła nr 2. (pokazać niezerowe wartości po wykonaniu
  123. polecenia numastat -p <PID>
  124.  
  125. \033[0;32m#P\033[0m Skąd wiadomo że to jednostki z ostatniego węzła?
  126. - z polecenia numactl -H widać node 2 cpus: 6 7 8 9
  127.  
  128. \033[0;32m#P\033[0m Jakie zasoby przynależą do węzłów NUMA?
  129. - jednostki przetwarzające i obszar pamięci ulotnej
  130. "
  131.  
  132.  
  133.  
  134.  
  135.  
  136. echo -e "\033[0;32m-------------------------------------------------------[4.1.2.22]-----------------------------------------------------------------------------\033[0m"
  137.  
  138. lscpu | grep NUMA
  139.  
  140. numademo 100M memset #może być 350M jak będzie dzialalo
  141.  
  142. #pokazuje:
  143. #memory on node 1 memset Avg 17118
  144. #dla
  145. #memory interleaved on 0 1 2 memset Avg 16651
  146.  
  147. #przekaz danych poprzez szyne interconnect powoduje opóźnienie w przetwarzaniu
  148.  
  149.  
  150.  
  151. ----------------------------------------------------------------------------------
  152.  
  153. echo -e "
  154. 5.1.2.1
  155.  
  156. Rodzaje przetwarzania współbieżnego, ze względu na liczbę wykorzystywanych jednostek przetwarzających
  157.  
  158. Przetwarzanie równoległe - gdy ich zadania są wykonywane jednocześnie z wykorzystaniem różnych jednostek
  159. przetwarzających - nie jest możliwe w przypadku włókien procesu.
  160.  
  161.  
  162. Podział czasu jednej jednostki przetwarzającej (przetwarzanie pseudorównoległe) (tzw. przeplot) - jest to
  163. przykład zwielokrotnienia w czasie zasobu jednostki CPU, a występowanie tylko jednego CPU zapewnia
  164. pseudorównoległość (zadania rywalizują o jednostkę przetwarzającą – więcej zadań niż jednostek)."
  165.  
  166. echo -e "
  167. 5.1.2.2
  168.  
  169. Kryteria poprawności programu współbieżnego.
  170.  
  171. bezpieczenstwo - w trakcie przetwarzania zawsze wystąpią jedynie zdarzenia dopuszczalne
  172.  
  173. zywotnosc - po skonczonej liczbie zdarzen przetwarzanie kolejnych instrukcji programu zostanie kontynuowane. Oczekiwanie procesu z cecha zywotnosci na spelnienie okreslonego warunku musi wiec gwarantowac jego zajscie w skonczonym czasie
  174.  
  175. Uszczegolowieniem cech zywotnosci to wlasciwosc ktora precyzuje czas oczekiwania na wystapienie stanu
  176. "
  177.  
  178. echo -e "
  179. 5.1.2.3
  180.  
  181. Zaglodzenie - nie wszystkie uruchomione zadania uzyskuja potrzebne do dalszego przetwarzania zasoby
  182.  
  183. Uwiezienie - Program ma zasoby ale dziala w nieskonczonosc bez efektow
  184. "
  185.  
  186. echo -e "
  187. 5.1.2.4
  188.  
  189. Przeplot - podzial czasu jednostki przetwarzajacej
  190.  
  191. Uwiezienie - Program ma zasoby ale dziala w nieskonczonosc bez efektow jest to przykład zwielokrotnienia w czasie zasobu jednostki
  192. CPU, a występowanie tylko jednego CPU zapewnia pseudorównoległość
  193.  
  194. Konflikt – sytuacja w której wykonywane instrukcje przynależące do różnych procesów posiadają wspólny operand i
  195. przynajmniej jedna z nich jest operacją wyjścia (zapisu). Innymi słowy, występuje on, kiedy zadania muszą operować na
  196. współdzielonym zasobie i jedno z zadań dokona modyfikacji tego zasobu poprzez zapis (kiedy oba zadania jedynie
  197. odczytują zasób nie dochodzi do konfliktu)
  198.  
  199. Hazard/wyścig – zjawisko kiedy wykonywane współbieżnie operacje pomiędzy przetwarzanymi procesami/wątkami (m.
  200. in. konflikty) powodują, że w zależności od kolejności występowania zdarzeń system operacyjny uzyska różne stany
  201. "
  202.  
  203. echo -e "
  204. 5.1.2.5
  205.  
  206. W funkcji filozof().
  207.  
  208. Jest to funkcja sparametryzowana czyli, że z jednej funkcji można utworzyć wiele różnych zadań filozofów.
  209. "
  210.  
  211. echo -e "
  212. 5.1.2.6
  213.  
  214. W głównym skrypcie (najpewniej ucztujacy_filozofowie lub wywołanie z użyciem pętli w Bash), dla każdego filozofa tworzony jest osobny proces (przez & – uruchamianie w tle).
  215.  
  216.  
  217. Procesy są niezależne, współbieżne, realizują identyczne zadanie, konkurują o widelce.
  218. "
  219.  
  220. echo -e "
  221. 5.1.2.7
  222.  
  223. Powstanie o jeden więcej procesów niż podana liczba filozofów, ponieważ powstanie również proces, który wywołuje
  224. procesy filozofów, a wszystkie te procesy są jednowątkowe. Ostatni będzie się kończył proces nadrzędny czyli ten
  225. wywołujacy procesy filozofów. (Linia nr 49 – wait czyli czekanie aż zakończą się procesy powołane przez proces rodzica)
  226. "
  227.  
  228. -------------------------------------------------------------
  229.  
  230. echo -e "
  231. 5.1.2.1
  232.  
  233. Rodzaje przetwarzania współbieżnego, ze względu na liczbę wykorzystywanych jednostek przetwarzających
  234.  
  235. Przetwarzanie równoległe - gdy ich zadania są wykonywane jednocześnie z wykorzystaniem różnych jednostek
  236. przetwarzających - nie jest możliwe w przypadku włókien procesu.
  237.  
  238.  
  239. Podział czasu jednej jednostki przetwarzającej (przetwarzanie pseudorównoległe) (tzw. przeplot) - jest to
  240. przykład zwielokrotnienia w czasie zasobu jednostki CPU, a występowanie tylko jednego CPU zapewnia
  241. pseudorównoległość (zadania rywalizują o jednostkę przetwarzającą – więcej zadań niż jednostek)."
  242.  
  243. echo -e "
  244. 5.1.2.2
  245.  
  246. Kryteria poprawności programu współbieżnego.
  247.  
  248. bezpieczenstwo - w trakcie przetwarzania zawsze wystąpią jedynie zdarzenia dopuszczalne
  249.  
  250. zywotnosc - po skonczonej liczbie zdarzen przetwarzanie kolejnych instrukcji programu zostanie kontynuowane. Oczekiwanie procesu z cecha zywotnosci na spelnienie okreslonego warunku musi wiec gwarantowac jego zajscie w skonczonym czasie
  251.  
  252. Uszczegolowieniem cech zywotnosci to wlasciwosc ktora precyzuje czas oczekiwania na wystapienie stanu
  253. "
  254.  
  255. echo -e "
  256. 5.1.2.3
  257.  
  258. Zaglodzenie - nie wszystkie uruchomione zadania uzyskuja potrzebne do dalszego przetwarzania zasoby
  259.  
  260. Uwiezienie - Program ma zasoby ale dziala w nieskonczonosc bez efektow
  261. "
  262.  
  263. echo -e "
  264. 5.1.2.4
  265.  
  266. Przeplot - podzial czasu jednostki przetwarzajacej
  267.  
  268. Uwiezienie - Program ma zasoby ale dziala w nieskonczonosc bez efektow jest to przykład zwielokrotnienia w czasie zasobu jednostki
  269. CPU, a występowanie tylko jednego CPU zapewnia pseudorównoległość
  270.  
  271. Konflikt – sytuacja w której wykonywane instrukcje przynależące do różnych procesów posiadają wspólny operand i
  272. przynajmniej jedna z nich jest operacją wyjścia (zapisu). Innymi słowy, występuje on, kiedy zadania muszą operować na
  273. współdzielonym zasobie i jedno z zadań dokona modyfikacji tego zasobu poprzez zapis (kiedy oba zadania jedynie
  274. odczytują zasób nie dochodzi do konfliktu)
  275.  
  276. Hazard/wyścig – zjawisko kiedy wykonywane współbieżnie operacje pomiędzy przetwarzanymi procesami/wątkami (m.
  277. in. konflikty) powodują, że w zależności od kolejności występowania zdarzeń system operacyjny uzyska różne stany
  278. "
  279.  
  280. echo -e "
  281. 5.1.2.5
  282.  
  283. W funkcji filozof().
  284.  
  285. Jest to funkcja sparametryzowana czyli, że z jednej funkcji można utworzyć wiele różnych zadań filozofów.
  286. "
  287.  
  288. echo -e "
  289. 5.1.2.6
  290.  
  291. W głównym skrypcie (najpewniej ucztujacy_filozofowie lub wywołanie z użyciem pętli w Bash), dla każdego filozofa tworzony jest osobny proces (przez & – uruchamianie w tle).
  292.  
  293.  
  294. Procesy są niezależne, współbieżne, realizują identyczne zadanie, konkurują o widelce.
  295. "
  296.  
  297. echo -e "
  298. 5.1.2.7
  299.  
  300. Powstanie o jeden więcej procesów niż podana liczba filozofów, ponieważ powstanie również proces, który wywołuje
  301. procesy filozofów, a wszystkie te procesy są jednowątkowe. Ostatni będzie się kończył proces nadrzędny czyli ten
  302. wywołujacy procesy filozofów. (Linia nr 49 – wait czyli czekanie aż zakończą się procesy powołane przez proces rodzica)
  303. "
  304.  
  305. echo -e "5.1.3.1
  306. Jak zauważyć problem zakleszczenia w przygotowanym grafie?
  307.  
  308. - Każdy z filozofów ma jeden swój widelec (lewy) i czeka na drugi widelec (po prawej), ponieważ wszyscy filozofowie
  309. czekają i żaden z nich nie zwalnia widelców (zasobu), które już trzyma, tworzy się sytuacja w której nie można zrobić
  310. postępów co ilustruje zakleszczenie.
  311. Zakleszczenie – to nieprzerwany stan wzajemnego blokowania się zadań; system oczekuje na zajście zdarzenia, które
  312. nigdy nie zajdzie. Ciągłość blokowania wynika m. in. z wykorzystywania zasobów wyłącznych poprzez procesy, które nie
  313. zostają zwolnione w wyniku wstrzymania wykonania zadania.
  314. Kółka reprezentują – Zadania
  315. Kwadraty reprezentują – Zasoby wspólne o dostępie wyłącznym
  316. Kierunki strzałek mają znaczenie, strzałka DO procesu oznacza, że ten zasób jest przyznawany procesowi, a OD procesu,
  317. że proces oczekuje na przydział tego zasobu
  318. Sytuacja wyrysowana na diagramie nie jest korzystna bo występuje ZAKLESZCZENIE
  319. "
  320.  
  321. echo -e "5.1.3.2
  322. Ilu zadań dotyczy zakleszczenie i jak jego wystąpienie wpływa na poprawność programu?
  323.  
  324. - W tym przypadku zakleszczenie dotyczy 5 zadań (bo 5 filozofów), jego wystąpienie jest niekorzystne ponieważ dalsze
  325. przetwarzanie wzajemnie blokujących się procesów/wątków nie może być kontynuowane, występuje więc brak
  326. postępu w realizacji ich zadań.
  327. Nie spełnia warunków poprawności programu przetwarzanego współbieżnie (warunku żywotności - brak postępu) – w
  328. więcej niż jednym zadaniu nie ma postępu
  329. Zakleszczenie dotyczy minimum dwóch zadań"
  330.  
  331. echo -e "5.1.3.3
  332. Warunki konieczne wystąpienia zakleszczenia i który z nich został wyeliminowany poprzez zastosowane rozwiązanie eliminujące zakleszczenia filozofów?
  333.  
  334. - Brak wywłaszczeń – zwolnienie wykorzystywanego zasobu jest realizowane wyłącznie z inicjatywy procesu,
  335. - Wzajemne wykluczanie – zasób jest wykorzystywany tylko przez jeden proces( w danej chwili czasu nie może być
  336. dostępny dla innych procesów),
  337. - Przetrzymywanie i oczekiwanie – proces posiadający już przydzielone jednostki zasobu może żądać jednostek innego
  338. zasobu, które są przydzielone innemu procesowi,
  339. - Cykl oczekiwania – istnienie zbioru procesów, w którym można wyróżnić cykl, gdzie kolejne pary procesów są
  340. powiązane zależnością oczekiwania i przetrzymywania,
  341. Brak spełnienia jednego z powyższych warunków oznacza brak sytuacji zakleszczenia procesów!
  342. Problem zakleszczenia może dotyczyć również wątków należących do jednego procesu.
  343. Jednak spełnienie wszystkich warunków koniecznych nie musi oznaczać wystąpienia zakleszczenia zadań
  344. Który z tych warunków i jakim mechanizmem został wyeliminowan
  345. "
  346.  
  347. echo -e " 5.1.3.4
  348.  
  349. Jak zastosować hierarchię zasobów i dwufazowe blokowanie.
  350.  
  351. - hierarchia zasobów – wprowadzanie porządku dla zasobów. Proces nie może zamówić jednostek zasobu, jeżeli zostały
  352. już przydzielone jednostki zasobu, który względem ustalonego porządku występuje wcześniej. Jednostki jego samego
  353. zasobu muszą być zamawiane w jednym zleceniu.//przykład: jeżeli filozof musi pobrać widelce w kolejności od najniższego nr do najwyższego to po pobraniu 5 nie może
  354. pobrać 1, ale może najpierw 1 a potem 5
  355. - Dwufazowe blokowanie – w ramach dwufazowego blokowania wyróżnia się w przetwarzaniu zadania fazę blokowania
  356. niezbędnych zasobów oraz fazę przetwarzania z wykorzystaniem zablokowanych zasobów i zwracania zasobów do
  357. systemu operacyjnego
  358. W pierwszej fazie istotne jest zablokowanie przez zadanie wszystkich wspólnych zasobów zwrotnych, dopiero wówczas
  359. następuje realizacja fazy drugiej
  360. Jak należy stosować hierarchię zasobów przy przetwarzaniu współbieżnym zadań, żeby nie występowały zakleszczenia
  361. tych zadań?
  362. - Najpierw trzeba ponumerować zasoby wspólne o dostępie wyłącznym
  363. Co dalej? Zgodnie z hierarchią zasobów co dalej powinniśmy ustawić?
  364. - Ustalamy regułę dostępu do zasobów, według której proces nie może zamówić jednostek zasobu, jeżeli zostały już
  365. przydzielone jednostki zasobu, który względem ustalonego porządku występuje wcześniej //patrz przykład wyżej
  366. Czyli zgodnie czy niezgodnie należy te zasoby przydzielać?
  367. - Zgodnie
  368. Dwufazowe blokowanie występuje czy nie występuje?
  369. - Występuje
  370. Co robi filozof w ramach pierwszej fazy blokowania dwufazowego?
  371. - Podnosi dwa widelce i zakłada blokady
  372. skrypt lib_uczta_filozofów:
  373. Co się dzieje w ramach drugiej fazy?
  374. - Wykonywane jest przetwarzanie z wykorzystaniem zablokowanych zasobów
  375. Kolejność ma znaczenie - widelce odstawiane są w odwrotnej kolejności"
  376.  
  377. echo -e "5.1.3.5
  378.  
  379. Czym jest współbieżność konkurencyjna i współbieżność kooperacyjna? - wymagane wskazanie, gdzie występuje każda z tych współbieżności pomiędzy zadaniami filozofów?
  380.  
  381. Konkurencyjna – procesy nie współpracują ze sobą, a wzajemne oddziaływanie pomiędzy nimi sprowadza się do
  382. rywalizacji o dostęp do zasobów, których potrzebują do realizacji przetwarzania swoich zadań
  383. Kooperacyjna – procesy współpracują ze sobą, poprzez komunikację i synchronizację koordynują wykonywanie swoich
  384. zadań
  385. Współbieżność konkurencyjna i kooperacyjna wskazanie przykładów w skrypcie. Na przykład mamy filozofa niech
  386. będzie 4 i 5 to jak oni sięgają po widelec pomiędzy nimi to jest przykład współbieżności konkurencyjne czy
  387. kooperacyjnej?
  388. - Konkurencyjnej
  389. Którą instrukcją sięgnie po widelec nr 5 filozof numer 4, a którą filozof nr 5?
  390. - obaj sięgną po widelec tą samą instrukcją:
  391. podnies_widelec $1 $7 $DESKRYPTOR_WIDELEC_2Którą instrukcją sięgnie po widelec nr 4 filozof nr 4?
  392. - (swoją instrukcją którą podnosi dla siebie pierwszy widelec) - nie mówić tego tylko pokazać
  393. podnies_widelec $1 $6 $DESKRYPTOR_WIDELEC_1
  394. Ogólnie rzecz biorąc filozof o numerze n sięgnie po widelec o numerze n instrukcją:
  395. podnies_widelec $1 $6 $DESKRYPTOR_WIDELEC_1
  396. a o numerze n+1 :
  397. podnies_widelec $1 $7 $DESKRYPTOR_WIDELEC_2
  398. Przykład zastosowania współbieżności kooperacyjnej?
  399. - W skrypcie lib_uczta_filozofow.sh: w funkcji zaczekaj_na_innych() echo >$5 zapewnia komunikacje
  400. Co to jest za instrukcja?
  401. - Wysyłanie komunikatu przez potok/plik potoku – wysyła filozof – wysyła pusty komunikat
  402. Inny przykład:
  403. - W skrypcie lib_uczta_filozofow.sh: w funkcji zaczekaj_na_innych() cat $5 zapewnia komunikacje instrukcja odczytu
  404. (odebranie komunikatu) z potoku/pliku potoku – mechanizm Potok – mechanizm NIEANONIMOWY/NAZWANY (bo ma
  405. swoją reprezentacje plikową)"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement