"Irek/kajus44" dsvdv4$79d$1@nemesis.news.tpi.pl
> po przeszukaniu archiwum grupy znalazłem dużo o pliku pagefile (chociaż nie
> umiem jeszcze "poczuć" co to swap), ale wolę napisać i zapytać (bo nie
> chodzi o mój komputer)
Programista pisze program operujący na pamięci wirtualnej, czyli takiej,
której nie ma w rzeczywistości, ale która może się pojawić. Procesor
operuje na pamięci rzeczywistej, czyli takiej, która jest -- na RAMie.
(chyba, że mówimy o innych, nietypowych programach)
Zazwyczaj pamięci rzeczywistej jest znacznie mniej niż wirtualnej.
Ponieważ jednocześnie zazwyczaj mamy otwartych więcej programów,
niż potrzebujemy (więcej załadowaliśmy, niż używamy) niektóre
z tych programów zajmowałyby fizyczną pamięć niepotrzebnie.
Gdyby więc w pamięci fizycznej, rzeczywistej umieścić tylko te,
które w danym momencie są wykorzystywane -- moglibyśmy mieć
w komputerze mniej pamięci rzeczywistej, niż to wynika ze
stosownych sum ilości pamięci okupowanych przez wszystkie
programy załadowane do pamięci -- czyli przez wszystkie otwarte.
Co więcej -- czasami program żąda od systemu więcej, niż w istocie potrzebuje.
System operacyjny, wespół ze stosownym dopalaczem sprzętowym, który znajduje
się wewnątrz procesora i służy tylko temu celowi, czyli nie obciąża zasadniczego
CPU) dba o to, aby w pamięci rzeczywistej znajdowało się w danym momencie to, co
jest akurat potrzebne, czyli akurat w tym momencie obrabiane przez procesor.
Zasadniczo procesor nie obrabia kilku programów naraz, a co najwyżej dzieli
swój czas pomiędzy różne programy, które dość często na coś czekają -- na
odpowiedź użytkownika, na odpowiedź dysku, na odpowiedź jakiegoś interfejsu
itp. -- i nie mogą być obrabiane przez CPU do czasu nadejścia odpowiedzi,
na którą czekają, czyli nie muszą okupować RAMu w trakcie tego czekania.
Reszta, czyli to, co nie jest aktualnie obrabiane, *może zostać* zrzucona do
pliku wymiany, aby stamtąd w razie potrzeby było ściągane -- być może przy
,,jednoczesnym'' zrzucaniu do pliku wymiany czegoś, co akurat nie musi
w danym momencie się w RAMie znajdować, ale co *być może* będzie później
potrzebne.
Ponieważ (wg niektórych osób) jestem pod wrażeniem
Władcy Pierścieni -- zobrazuję Ci to właśnie przez
ten pryzmat:
Masz z jednej strony 1000 Orków, z drugiej 100 Hobbytów, czy jak im tam.
Orki nie atakują całymi siłami, a Hobbyci są mobilni i wiedzą zawczasu,
gdzie uderzą Orki. Gdy jakiś Ork czy OrG zaatakuje jakieś miejsce, zawczasu
system operacyjny podeśle tam Hobbytę, który nie pozwoli Orkowi na przejście.
W ten sposób stosunkowo niewielka, wręcz znikoma liczba Hobbytów może stawić
skutecznie czoła stosunkowo wielkiej liczbie Orków, gdyż system wie, gdzie
ustawić zaporę. :) W razie czego -- Ork posłusznie czeka, aż Hobbyta
przybędzie na spotkanie. :)
Innymi słowy mówiąc -- w SWAPie powinno być to, co należy do pamięci wirtualnej,
a do RAMu w razie czego powinno być wrzucane [?tylko?] to, co będzie za chwilę
używane. W ten sposób stosunkowo mała ilość RAMu sprosta stosunkowo dużym potrzebom.
W razie czego dochodzi do szybkiego zrzucania fragmentów/stron RAMu do pliku wymiany
i wrzucanie w to miejsce (do RAMu) innych fragmentów ze SWAPu. Wspomaganie sprzętowe
sprawia, że procesor trafia tam gdzie trzeba, choć ten sam fragment programu raz
okupuje tę fizyczną część RAMu, a innym razem inną część -- inny fizycznie adres
RAMu, choć przecież kod programu w międzyczasie nie uległ zmianie.
Czyli nie ma przyporządkowania typu: ten Ork zawsze do tego Hobbyty;
Hobbyci są uniwersalni.
Jeśli Orków jest mniej niż Hobbytów -- można po prostu ustawić zaporę bezmyślnie,
gdyż i tak Orki nie przejdą, :) ale jest to marnotrastwo owych Hobbytów, czyli RAMu.
Z innej strony: Zanim Ork zaatakuje jakieś miejsce, system musi postawić tam Hobbytę,
być może zabierając go z miejsca, gdzie za chwilę będzie ów Hobbyta znowu potrzebny.
Traci się więc czas na owo SWAPowanie, ale w normalnym używaniu czas ten jest bardzo
krótki.
Z powyższego wynika, że dobrze jest mieć więcej SWAPu niż RAMu,
nawet wówczas gdy tego RAMu mamy bardzo dużo -- aby umieścić
w pliku wymiany całą kopię tego, co akurat teraz powinno być
w RAMie oraz to, co być może będzie potrzebne za chwilę.
Oczywiście system operacyjny jest tak napisany, aby ruszyć
w razie czego i bez SWAPu w ogóle, o ile znajdzie dość
miejsca w samym RAMie.
Innymi słowy -- SWAP nie jest pamięcią wirtualną, ale czymś, co pozwala
na istnienie takowej pamięci i może mieć różną wielkość -- w zależności
od indywidualnych potrzeb systemu, czyli Twoich potrzeb. :) W szczególności
może go nie być wcale, ale raczej nie jest to zalecane.
W wielu przypadkach, gdy brakuje SWAPu i RAMu -- program na własną rękę
zakłada swój SWAP -- bardzo niewydolny, bo powolny, gdyż obrabiany bez
dopalaczy, na nieprzystosowanych, zwykłych plikach.
> najpierw opis:
> windows NT4.0 SP6, multikernel (2 procesory), w tej chwili pagefile ma 317
> MB
> i na systemie w zakładce "wydajność" -> zmień mam:
> rozmiar początkowy: 317 MB
> maksymalny rozmiar: 317 MB - domyślam się że obie wartości to akurat to, ile
> w danej chwili pagefile ma
> chcę to zmienić
> mam jeszcze:
> zalecane: 267 MB
> aktualnie przydzielone: 317
>
> i pytanie - jeśli zmienię obie wartości (początkową i maksymalną) na np. 200
> albo zalecane 267, to czego mogę się spodziewać po ponownym uruchomieniu?
> boję się, że nie odpalę kompa czy też komputer wybuchnie ;-) - a jest to
> komputer firmowy
Nie wybuchnie. Pod WXP w razie potrzeby utworzy
się niezadeklarowany SWAP na dysku systemowym.
> jeszcze jedna rzecz - nie ma zainstalowanej defragmentacji dysku ani nie
> działa skandisk - czy może tak być specjalnie - czy to ze względu na dwa
> procesory czy na winNT? czytałem, że czasem defragmentacja bardziej szkodzi
> niż pomaga, tylko nie pamiętam właśnie w którym windowsie
Nie szkodzi, ale zabiera czas. :)
-- .`'.-. ._. .-. .'O`-' ., ; o.' leszekc@@alpha.net.pl '.O_' `-:`-'.'. '`\.'`.' ~'~'~'~'~'~'~'~'~'~'~ o.`., o'\:/.d`|'.;. p \ ;'. . ;,,. ; . ,.. ; ;, .;. . .;\|/....Received on Wed Feb 15 22:25:06 2006
To archiwum zostało wygenerowane przez hypermail 2.1.8 : Wed 15 Feb 2006 - 22:42:03 MET