Systemy - opracowanie:
SYSTEMY
Systemy wsadowe: program np. na taśmie.. nie interaktywny… stanowiący całość… jednoprocesowy
Spooling - zadania zamiast w pamięci przechowuje się na dysku. Istnieje pula zadan czekających na wykonanie. Dzięki temu możliwe jest wieloprogramowanie.
Systemy wieloprogramowe - same decydują o kolejności zadań
- efektywniej wykorzystują zasoby i moc obliczeniową
Systemy z podziałem czasu - interaktywne, system przełącza się między zadaniami co jakiś kwant czasu dzięki czemu użytkownik może wpływać na program w trakcie jego działania
Stosuje się tu:
Przetwarzanie symetryczne - każdy procesor pracuje pod identyczną kopią systemu
Przetwarzanie asymetryczne - jeden proc rozdziela zadania, reszta robi
System rozproszony - wiele komputerów w sieci. Odbierane jak jedno środowisko. Każdy użytkownik widzi je jako całość
System czasu rzeczywistego:
Twardy:
- wszędzie tam gdzie liczy się prędkość i terminowość wypełniania zadań
- kłuci się z systemami z podziałem czasu
- brak lub bardzo mała pamięć pomocnicza
- np. linie produkcyjne
Łagodny:
- współpracuje z systemami z podziałem czasu
- już nie do przemysłu
Interpreter poleceń - pośredniczy miedzy użytkownikiem a systemem (tłumaczy kliknięcia)
ALGORYTMY PLANOWANIA CZASU PROCESORA
FCFS (ang. First Come First Served) - pierwszy zgłoszony pierwszy obsłużony - FIFO
SJF (ang. Shortest Job First) - najpierw najkrótsze zadanie
- algorytm bierze pod uwagę długość najbliższej fazy procesora każdego procesu
- jak równe to SCFS
- optymalny
- trudno oszacować następną długość
Szacowanie długości fazy procesora
- zakłada się, że długość następnej fazy procesora jest zbliżona do długości faz poprzednich
- następna faza procesora jest średnią wykładniczą pomiarów długości poprzednich
T - długość n-tej fazy procesora
N - szacowana długość następnej fazy procesora
n+1 - parametr o wartości z przedziału < 0,1 > parametr stanowi wagę pomiędzy niedawną a wcześniejszą historią
Planowanie priorytetowe
- procesy mają priorytety
- ryzyko zagłodzenia procesów
- rozwiązaniem jest postarzanie procesów
Planowanie rotacyjne - wywłaszczeniowy FCFS
- wadą tej metody jest długi średni czas oczekiwania
Wielopoziomowe kolejki - to logiczne… te ze sprzężeniem dodatkowo mogą przesuwać procesy między kolejkami o różnych priorytetach
Push/pull migration - nadmiernie odciążony procesor oddaje część obliczeń… albo niedociążony pobiera.
OCENA ALGORYTMÓW
Modelowanie deterministyczne - definiujemy jakies obciążenie i liczymy zachowanie systemu (tak robimy na kole)
Symulacje
A potem jest 30 slajdów z kompletnym bełkotem… on to chyba sklejał z czegoś.. na 100% nie jest autorem całości
Przydział pamięci
na początku podstawy o dynamicznych i statycznych bibliotekach… było na c
Nakładka - w pamięci tylko potrzebne dane i rozkazy. Reszta doczytywana w razie potrzeby. Można wykonywać procesy większe niż niż dostępna pamięć.
Adresy fizyczne to adresy logiczne przesunięte o wartość bazy
Fragmentacja zewnętrzna - przestrzeń pamięci pocięta na wiele kawałków. W sumie starcza pamięci na zadanie ale nie tworzy ona spójnego obszaru
Fragmentacja wewnętrzna - bezużyteczny kawałek pamięci wewnątrz obszaru przydzielonego do procesu
Upakowanie - przemieszczenie danych tak aby pamięć wolna była w jednym bloku
Stronicowanie - zapobiega zewnętrznej fragmentacji
- dzielimy pamięć na ramki i strony - adres logiczny to numer strony i odległość na stronie
- używamy tablicy stron, która zawiera adresy bazowe
Bufory TLB - takie małe dziadostwa zawierające adresy kilku stron (jakoś tam szacują jakie strony będą potrzebne)
Stronicowanie wielopoziomowe - strony wskazujące na strony itd.
SEGMENTACJA
Pamięć jako zbiór segmentów i zróżnicowanych rozmiarach (np. main, czy funkcje)
- każdy segment ma nazwę i długość
- adresy to nazwa i odległość wewnątrz
- realizacje przez tablice segmentów czyli wykaz par:
Baza segmentu - początkowy adres fizyczny
Granica segmentu - długość segmentu
- adres fizyczny = baza + przesunięcie
- brak fragmentacji wewnętrznej
SEGMENTACJA ZE STRONICOWANIEM
Stronicowanie tablicy stron segmentów łooo!!!
Anomalia belady'ego - wraz ze wzrostem liczby ramek wzrasta współczynnik braków stron
Stronicowanie na żądanie - procesy postronicowanie i trzymane na dysku.
- leniwe - wymienia się strony tylko jak trzeba już koniecznie
- potrzeba tablicy stron (adresy i bity poprawności) i pamięci pomocniczej (do danych)
ALGORYTMY ZASTĘPOWANIA STRON
- wskazują ramkę do wymiany
FIFO - zwykłe FIFO jak zawsze.. po kolei
Algorytm optymalny
- nie dotknięty anomalią belady'ego
- ma najmniejszy współczynnik braku stron
Anomalia belady'ego - więcej ramek powoduje wzrost współczynnika braku stron
Algorytm LRU
- (least recently used) - zamienia stronę, która była najdawniej używana
- implementacja za pomocą stosu lub listy liczników
Algorytmy przydziału ramek
Przydział równy (equal allocation) - każdy po równo. Co zostanie to jako bufor.
Przydział proporcjonalny - każdemu według wielkości procesu
gdzie ai- il ramek dla procesu, m ogólna ilość ramek, Si - ilość pamięci wirtualnej procesu, S - suma pamięci wirtualnej wszystkich procesów
Przydział lokalny - jak zabraknie stron to szukamy ramki do zamiany tylko u siebie
Przydział globalny - można kraść innym procesom ramki ;-)
Szamotanie - ciągle brakuje stron bo ciągle trzeba nowych i musimy wywalać potrzebne
Segmentacja na żądanie:
- wolniejsze ale żre mniej sprzętu niż stronicowanie na żądanie
METODY DOSTĘPU DO PLIKÓW
Dostęp sekwencyjny- przesuwa się wskaźnik o ileś pozycji. Taka lista dwukierunkowa troche
Dostęp bezpośredni - możliwość stosowania rozkazów odwołujących się do konkretnego rekordu (plik jako tablica)
Indeksowanie - mamy indeks ze wskaźnikami do pliku. I właśnie jego przeszukujemy
METODY PRZYDZIAŁU MIEJSCA NA DYSKU TWARDYM
Przydział ciągły - plik zajmuje pika kolejnych bloków na dysku
- fragmentacja zewnętrzna i wewnętrzna
- mało elastycznie
Przydział listowy - plik jako ciąg powiązanych bloków (każdy ma wskaźnik do następnego)
- tylko do plików o dostępie sekwencyjnym
- awaryjność (tracimy koniec jak jeden blok)
- wskaźniki zajmują miejsce
Przydział indeksowy - plik ma jeden blok z lista wskaźników do pozostałych
- rozmiar bloku indeksowego
- umożliwia dostep bezpośredni
Zarządzanie wolnymi obszarami:
Wektor bitowy - ma 1 tam gdzie zajęty blok, 0 tam gdzie wolny
- trudność gdy nie można umieścić go w pamięci (duży jest)
Lista powiązana - przechowuje wskaźnik do początku wolnego obszaru a w pozostałych wpisuje wskaźniki do następnych (przechowuje strażników)
- mało wydajne to
Grupowanie - przechowuje adresy n wolnych bloków, gdzie blok n-ty ma adresy do kolejnych n bloków
Zliczanie - przechowuje adres pierwszego bloku i ilość następnych
Implementacja katalogu:
Lista liniowa - lista nazw z wskaźnikami do danych
Tablica haszowania - każdy wie co to
Przykład: Obliczyć rozmiar tablicy alokacji plików dla dysku o pojemności 1GB i rozmiarze klastra 32kB dla systemu FAT16
Liczba klastrów = 1GB/32 kB = 32768 klastrów
Rozmiar tablicy = 32768 * 16 = 524 288 B = 1024 sektorów = 16 klastrów
PLANOWANIE DOSTĘPU DO DYSKU
FCFS - standard… po kolei
SSTF - wybiera zamówienie najbliżej pozycji głowicy
- ryzyko zagłodzenia
SCAN - lecimy od krawędzi do krawędzi
C-SCAN - lecimy w jedną stonę a potem wracamy(nie czytając) i znowu
LOOK - lecimy do skrajnego zamówienia a potem do tego naprzeciwko (po drodze wypełniając inne)
C-LOOK - podobnie jak wyżej. Wracamy na początek jak dojdziemy do ostatniego zamówienia
Niezawodność:
ECC- kod korygujący
RAID1 -odbicie lustrzane
RAID5 - przeplatanie bloków parzystości