FAT - file allocation table: sugerujesz że ta tablica jest stosowana tylko podczas zapisu na dysku? A podczas odczytu system czarodziejsko wie, gdzie się znajduje kazdy plik? :D
**********************
Nie, tablica stosowana jest zawsze (prawie) podczas wiekszosci operacji na plikach. Niemniej widze, ze inaczej rozumiesz slowo alokacja. Alokacja to nic innego jak "zajecie" jakiegos fragmentu czegos. Podczas odczytu z FAT-a odczytywana jest informacja o pliku, nie alokowana. Alokowana jest podczas zapisu (jesli np. tworzony jest nowy plik) i nie tylko w FAT-ie, ale tez na samym dysku.
Pojedynczej danej tak. Ale sam napisałeś że alg. obsł. pam. wirt. dąży do zminimalizowania zapisów w swapie, a zatem zmaksymalizowania stosunku odczytów do zapisów.
**********************
Wyciagasz pochopne wnioski. Minimalizacja zapisu nie jest rownoznaczna z maksymalizacja odczytu. Zadaniem algorytmu obslugi pamieci wirtualnej jest m. in. zminimalizowanie jakichkolwiek operacji na dysku, dopiero potem operacji zapisu. Algorytm pracuje rowniez na pamieci fizycznej, gdyby ktos pytal (rowniez w pamieci fizycznej dochodzi do alokacji, ale tez defragmentacji).
Jaki zatem jest jest sens idei swapa? Tak, odczytanie pojedynczej danej ze swapa to alokacja pliku swapa+alokacja danych we swapie, ale, jak sądzę, głowica generalnie przez większość czasu "wisi" nad swapem, więc odczyt będzie szybki, tym bardziej że dane są tak upakowane, by zminimalizować ruchy głowicy. Zatem odczyt ze swapa musi być szybszy niż z dysku. Nie widzę innego sensu dla idei swapa.
**********************
Idea swapa jest bardzo prosta: rozszerzyc dostepna dla aplikacji pamiec fizyczna.
Powtarzam, ze podczas odczytu nie ma potrzeby alokowania jakichkolwiek zasobow dyskowych. Podczas odczytu informacja jest odczytywana z pliku wymiany dzieki wlasciwej indeksacji danych w strukturze pliku.
Nie mozesz tak zakladac, ze glowica wiekszosc czasu wisi nad swapem. To jest zbyt silne zalozenie i duze uproszczenie. Nie ma zadnego powodu, dla ktorego tak wlasnie mialo by byc (wyjatkiem bedzie np. taka sytuacja, kiedy system bardzo mocno swapuje i wiekszosc czasu zajmuje mu obsluga swapa, ale jest to sytuacja wysoce niepozadana i bardzo odczuwalna jesli chodzi o wydajnosc jakichkolwiek pracujacych aplikacji).
Kolejna sprawa jest "upakowanie" danych. W pliku wymiany bardzo trudno zachowac jest dobre "upakowanie" czy tez ciaglosc danych.To akurat jest dosc zlozone zagadnienie i bardzo roznie realizowane w roznych systemach. W duzym uproszczeniu algorytm ma nie smiecic po pliku wymiany, ale to jest bardzo trudne do zrealizowania, bowiem algorytm nie jest w stanie w zaden sposob przewidziec kiedy i ile musi zwolnic (usunac alokacje z pliku, ale zaalokowac w pamieci fizycznej) ramek z pliku wymiany, ile i gdzie zrzucic z pamieci fizycznej nowych ramek, jesli dojdzie do kolejnej alokacji pamieci, kiedy i ile odczytac kolejnych ramek, jesli dojdzie do odczytu z pamieci. O ile czesc tych informacji jest dostepna, bowiem wiele algorytmow posiada parametry okreslajace jak czesto zrzucane sa ramki pamieci fizycznej do pliku wymiany, w jakiej wielkosci blokach, albo jak czesto odswiezana jest informacja o aktualnie zaalokowanych strukturach w celu podjecia wlasciwej decyzji o kolejnej alokacji, albo ile w danym momencie mozna zrzucic ramek do pliku wymiany, jesli aplikacja dluzszy czas nie uzywa danego fragmentu pamieci fizycznej, ale to wszystko to jest stanowczo za malo aby moc zachowac ciaglosc danych. Operacje na strukturze pliku wymiany przypominaja bardzo operacje dyskowe. Po pewnym czasie dzialania systemu mamy doczynienia z defragmentacja (w przypadku pliku wymiany- defragmentacji danych w pliku), bo nie ma sposobu aby zachowac ciaglosc, tyle, ze defragmentacja w swapie jest zazwyczaj duzo duzo szybsza. Z tego wlasnie powodu nalezy unikac, szczegolnie w DAW, sytuacji, w ktorych brakuje pamieci fizycznej. No i chyba zanudzilem wszystkich na smierc

Hubi