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