win95 swap a ramdrive-ban
Auth Gábor
franko at mail.rgstudio.hu
Thu Jul 10 13:24:45 CEST 2003
Halihó!
2003. július 10. 13.51 dátummal VF ezt írta:
>> Miért dumálsz bele olyanba, amihez nem értesz? :)
> Hmm, most pont az ellenkezoje derult ki... Ciki!
Háát...
>> Nem kerül bele cache-be... mi a fene értelme lenne a swap
>> partíciót/fájlt cache-ben tárolni? Hol láttál már ilyet????
>>
> :))) Az egesz memoria cache.
Nem... van olyan része is, ami nem lapozható. Ezt hívják BSD esetén
Wired (bedrótozott) területnek. Aztán van olyan, hogy inaktív, amelyen
azok a lapok vannak, amelyek régebb óta nincsenek használva. Adott
esetben innen lapozódnak ki. A cache (gyorsítótár) tartalmazza az (előre)
beolvasott és gyakran használt adatokat, a buffer (írási buffer) pedig a
kiírandó adatokat. A szabad memória az, amennyi éppen szabad.
Például:
Mem: 378M Active, 303M Inact, 232M Wired, 48M Cache, 112M Buf, 41M Free
Swap: 1020M Total, 38M Used, 981M Free, 3% Inuse
Amint látod 303M inaktív ellenére 38M kinn van swap-en.
> Amikor a lapozo rendszer ugy dont, hogy egy lapot ki kell nyomni
> vinyora, akkor csak annyi tortenik, hogy a laphoz a working set helyett
> az a bejegyzes kerul hogy o most cache.
Nem. Logikailag igen, de fizikailag nem. Fut a program, logikai
memóriaterületen. A program nem tudja, hogy mely lapok vannak fizikailag
benn és melyek nincsenek. Amikor olyan területre ér a futása során, ami
kinn van a swap-en, akkor megáll, és az ütemező kapja vissza a vezérlést
a kivétel lekezelése okán. Ahhoz, hogy a swap-ről be lehessen hozni egy
lapot, ki kell oda tenni egy másikat... az ütemező megkeresi a
legrégebben használt lapot és megjelöli, hogy ezt a kettőt (ami kell, és
amelyik nem) ki kell cserélni (ezért hívják swap-nek a folyamatot).
Viszont a vinyó lassú jószág, ezért nem azonnal fog cserére kerülni, de
nem is kerül a gyorsítótárba a beolvasandó, illetve írási bufferbe a
kiírandó lap. Az igénylő program futása felfüggesztődik, hiszen nem tud
tovább futni, a szálat megkapja a következő program.
> Semmi masolas nem tortenik, az adat marad ugyanott a memoriaban.
Ha swap-re kerül, akkor más kerül az adott _fizikai_ memóriaterületre,
és a _fizikai_memóriában nem fogod az adott lapot megtalálni.
> Majd a cache-kezelo rendszer dont arrol hogy mikor mit kell kiirni.
> VMS, NT, XP, unix, MACH1 kernel igy mukodik.
Cache kezelő rendszer nem dönt kiírásról. Cache kezelő rendszer _olvas_,
és a beolvasott adatokat kezeli. A buffer kezelő rendszer dönt arról,
hogy mikor-mit kell kiírni, viszont a swap-re kerülő lapok nem kerülnek
írási bufferre, hanem azonnal, késedelem nélkül kiíródnak a lemezre, szép
is lenne, ha a memóriában található adatot kétszer is letárolnánk! Az
igaz, hogy amíg a rendszer nem képes kiírni az adott lapot, addig
csinálhat mást, viszont az a program, ami a swap-kezelés miatt nem tud
tovább dolgozni, az áll.
>> Értem... tehát az összes nagygépes rendszer, amit láttam eddig az
>> meggondolatlan béna memóriakezeléssel rendelkezik...
> Mirol beszelsz? A nagygepes rendszer a VMS-nel kezdodik, annak a
> memoria-kezeleserol pedig fogalmad sincs. Ez egyertelmuen kiderult.
Vagy neked nincs? Én a legújabb BSD memóriakezelését ismerem... ha
gondolod, beidézem a megfelelő C forrásokat. Remélem nem akarod azt
mondani, hogy a ,,minden Unix őse'': a BSD nem nagygépes rendszer... ugye
nem? Szerinted a VMS honnan származik? :)
>> Ui: Olyan, hogy ,,sok, szabad memoria'' nincs _egyetlen_ megfelelően
>> működő operációs rendszer alatt sem... minden egyes talpalattnyi fel
>> nem használt memóriát gyorsítótárnak nevez ki és használ fel... ha
>> mégis kell hírtelen memória, max eldobja az ott található beolvasott
>> adatot.
> ??? Ha windoz alatt kell a rendszernek mondjuk 100M memoria, es nekem
> van a gepemben 1G, akkor tobb mint 900 mega szabad.
Nem szabad, elvileg (ha jól van megírva), akkor ebből kb. 890M
gyorsítótár, a maradék 10M az szabad. Természetesen, amíg ténylegesen
szabad memória van, addig nincs swap... swapre akkor kerül, amikor a
cache megtelt és a rendszer választhat a között, hogy régebb óta nem
használd területeket kilapoz, vagy használt cache lapokat szabadít fel.
Ezt eldöntheti a hozzáférési időkből. Ha a cache összes lapja frissebben
használt, mint bármilyen más nem használt terület, akkor swapre kiteszi
azokat, ellenkező esetben a cache-ből szabadít fel.
> Mit csinal erre a windoz? Elkezd swapelni par tiz megat... Gratulalok.
Persze, mert 10M-val több gyorsítótárhoz tud jutni. Ha a VMS nem ezt
csinálja, akkor dobd el... mert elavult... :)
> Ha tobb memoria van a gepben, mint vinyo, akkor is piszkalja a vinyot,
> teljesen feleslegesen, ertelmetlenul. Ezt kene megerteni, hogy ez
> hulyeseg, a windoz el van cseszve. Nagygepes rendszeren nincs ilyen.
Ehh...
> (Csunyan osszekeverted a windoz es egyes mainframe kernelek mukodeset)
Windows memóriakezelését nem ismerem, mainframe kerneleket viszont igen.
--
Frank O'Yanco -=- Mobil +36-70/312-1856 +36-30/368-7792 -=- ICQ: 49179141
FreeBSD (current stable branch) - Toshiba Satellite 1410
Key fingerprint E99D 1A55 0DF2 3AAC 2A15 FD55 0D71 B88D 35E5 C50D
More information about the Elektro
mailing list