Zakleszczenia- W środowisku wieloprogramowym kilka procesów może rywalizować o skończoną liczbę zasobów. Proces zamawia zasoby i jeśli nie są one dostępne
w danym czasie, wchodzi w stan oczekiwania. Może się zdarzyć, że oczekujące procesy nigdy już nie zmienią swego stanu, ponieważ zamawiane
przez nie zasoby są przetrzymywane przez inne procesy. Sytuację taką nazywa się zakleszczeniem
Warunki zakleszczenia: Do zakleszczeń może dochodzić wtedy, kiedy w systemie zachodzą jednocześnie cztery warunki:
1. Wzajemne wykluczanie: Przynajmniej jeden zasób musi być niepodzielny; to znaczy, że zasobu tego może używać w danym czasie tylko
2. Przetrzymywanie i oczekiwanie: Musi istnieć proces, któremu przydzielono co najmniej jeden zasób i który oczekuje na przydział dodatkowego
zasobu, przetrzymywanego właśnie przez inny proces.
3. Brak wywłaszczeń: Zasoby nie podlegają wywłaszczaniu, co oznacza, że zasób może zostać zwolniony tylko z inicjatywy przetrzymującego go
procesu, po zakończeniu pracy tego procesu.
4. Czekanie cykliczne: Musi istnieć zbiór {P0, Pt, ..., !'„} czekających procesów, takich że P0 czeka na zasób przetrzymywany przez proces P\,
P\ czeka na zasób przetrzymywany przez proces P2, ..., Pt]- i czeka na zasób przetrzymywany przez proces /*„, a Pt, czeka na zasób przetrzymywany
przez proces Po.
Metody postępowania z zakleszczeniami:
Zasadniczo są trzy różne metody radzenia sobie z problemem zakleszczeń:
• Można stosować protokół gwarantujący, że system nigdy nie wejdzie w stan zakleszczenia.
• Pozwala się systemowi na zakleszczenia, po czym podejmuje się działania zmierzające do ich usunięcia.
• Można też zlekceważyć ten problem zupełnie, uważając, że zakleszczenia nigdy nie pojawią się w systemie. Takie rozwiązanie stosuje się w większości systemów, m.in. w systemie UNIX.
Unikanie zakleszczeń
1stan bezpieczny – nie ma warunków spełnionych do zakleszczenia. Algorytm sprawdzania stanu bezpiecznego.
2.stan zagrożenia- może być zakleszczenie ale nie musi, jest to warunek konieczny. Algorytm bankiera-Algorytm grafu przydziału zasobów nie nadaje się do systemu przydzielania
zasobów, w którym każdy typ zasobu ma wiele egzemplarzy. Algorytm unikania
zakleszczenia, , można zastosować w takim systemie, lecz jest on mniej wydajny od schematu grafu przydziału zasobów.
Likwidowanie zakleszczenia.- Kiedy algorytm wykryje zakleszczenie, wtedy można postąpić na kilka sposobów.
Można poinformować operatora o wystąpieniu zakleszczenia i pozwolić
mu na ręczne jego usunięcie. Inną możliwością jest pozwolenie systemowi,
aby automatycznie usunął zakleszczenie. Są dwa sposoby likwidowania zakleszczenia. Jednym jest po prostu usunięcie jednego lub kilku procesów w celu przerwania czekania cyklicznego. Drugi sposób polega na odebraniu pewnych zasobów jednemu lub kilku procesom, których dotyczy zakleszczenie.
Zarządzanie pamięcią
Wykonanie programu
Plik źródłowy-kompilator-moduł wynikowy-konsolidacja-moduł ładowalny-plik do wykonania
Fragmentacja pamięci-fragmentacja może być zewnętrzna bądź wewnętrzna. Zewnętrzna fragmentacja wynosi 50%. Jest to bezużyteczny kawałek pamięci wewnątrz przydzielonego obszaru.
Upakowanie pamięci- Możliwość upakowywania występuje tylko przy dynamicznym wiązaniu adresów wykonywanym podczas działania procesu.
Jeśli adresy są wiązane dynamicznie, to przemieszczenie procesu sprowadza
się do przesunięcia programu i danych oraz do zmiany rejestru przemieszczenia dla odzwierciedlenia nowego adresu bazowego.
Jeśli istnieje możliwość upakowania, to należy oszacować jego koszt.
Najprostszy algorytm upakowania polega po prostu na przesunięciu wszystkich procesów w kierunku jednego końca pamięci; wszystkie dziury lokują się
na drugim końcu, tworząc jeden wielki obszar dostępnej pamięci.
Nakładki-Idea nakładek polega na przechowywaniu w pamięci tylko tych rozkazów i danych które są potrzebne. Inne rozkazy są wprowadzane w miarę zapotrzebowania na miejsce zajmowane przez rozkazy już zbyteczne.
Automation_Engineering