Problem s obsadenim pamate v jazyku C

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Sobota Leden 12 00:42:28 CET 2002


On Fri, 11 Jan 2002, Ing. Pavel PaJaSoft Janousek wrote:

> > teoreticky muze existovat i takovy 32 bitovy hw, kde to bude opravdu 4:0.
> 
> 	Jiste, ale pak to bude trochu neco jineho nez I80386 a vyssi - prece
> jen je treba s okolim nejak komunikovat - mapovani, preruseni apod... -
> jiste, IN/OUT jde rovnez, efektivita prenosu a rychlost je ehm..'-)

Samozrejme, ze to nebude i386 a spol. Vy to rikate, jako by intelske cipy
byly "the apex of CPU evolution." A spis jde o to, zda dany hw umozni
zaroven s udalosti, ktera ma provest prechod do jadra, prepnout i pouzite
strankove tabulky (pripadne strankovani vypnout) a zda umozni z jadra
rozumne pristupovat k pametovemu prostoru procesu.

> BTW Kdyz uz byl zminen ten VMWare s docela podivnym 4G-1k:4k systemem
> (slysim prvne) - chapu, ze virtualizovane mohu uz na x86 architekture
> dojit k nejakym TB (kombinace strankovani a swapovani) - on skutecne
> neustale preskladava pamet, kterou mapuje do procesu? Vim, ze nemusim
> presunovat porad stranky v pameti, ale po kazdem vypadku stranky by se
> musela upravovay minimalne LDT, ne? A ty 4k vzhledem k 'efektivite'
> Win32API by se menily skoro porad...

Bylo to 4G-4k:4k, cimz bylo mineno, ze pro ucely vlastniho systemu je
v pametovem prostoru procesu vyhrazena jedina stranka. To teoreticky
postacuje k tomu, abychom meli kam ulozit TSS, GDT, LDT a IDT (pokud jsou
ty tabulky primerene male) a kod, ktery zajisti prechod do jadra a zpatky
s prislusnou zmenou mapovani pameti (registr cr3). Tabulky stranek (a
cr3) obsahuji fyzicke adresy, a tudiz mohou byt zcela mimo linearni
adresovy prostor.

VMware to AFAIK dela nejak podobne (aspon tak soudim z letmeho nahlednuti
do zdrojaku jeho jadernych modulu), i kdyz k vetsim narokum na
virtualizaci asi sloziteji. A mozna vyzaduje o trochu vic nez jednu
stranku. Nicmene zadny existujici program nema najednou namapovan cely
4 GB prostor, a tudiz je mozno pro ne najit volne misto (s tim, ze muze
nastat potreba ty stranky obcas premistit na jine misto).

A kdyz nad tim premyslim, tak lze ta jedna nebo nekolik stranek stejne
virtualizovat (budou pochopitelne nepristupne, ale instrukce, ktere by
s nimi pracovaly, budou emulovany, a tudiz bude programu pripadat, ze ma
k dispozici uplne vsechny stranky). Ale to uz je skutecne teorie.

--Pavel Kankovsky aka Peak  [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."



Další informace o konferenci Linux