vm_fault: fault on nofault entry

Divacky Roman xdivac02 at stud.fit.vutbr.cz
Sun Mar 19 10:05:29 CET 2006


On Sat, Mar 18, 2006 at 10:58:40AM +0100, Dan Lukes wrote:
> Divacky Roman napsal/wrote, On 03/17/06 19:02:
> >> 	Page fault je termin z oblasti spravy pameti tykajici se strankovani.
> >> 
> >> 	Nastane v okamziku, kdy se nejaky proces odkaze na takovou linearni 
> >> adresu pameti, ktera neni pritomna ve fyzicke pameti. Obsluha teto 
> > 
> > jen tak ze zajimavosti co je "linearni adresa pameti"?
> 
> 	Jen velmi kratce, protoze tohle asi presahuje ramec teto konference. 
> Detaily je treba hledat v takovych dokumentech, ktere popisuji pristup k 
> pameti procesoru rady i386 mj. take segmentaci a strankovani. Urcite se 
> k tomu neoc najde i na Internetu, pripadne, ja na to kupoval kdysi 
> knizku od Grady (od te doby dokonce vydali upgrade).
> 
> 
> 	Je-li aktivni jak segmentace tak strankovani (a to na FreeBSD je) tak 
> adresace pameti z hlediska procesu probiha systemem segment:offset 
> (procesor ma na adresu segmentu vyhrazene specialni registry, tzv. 
> segmentove - cs,ds,es,fs,gs,ss). Segment - to je jen pointer do tabulky 
> (procesor jich ma vic - globalni GDT a "per proces" LDT), ve ktere se v 
> prislusnem radku najde, kde segment skutecne zacina, jak je velky, jsou 
> tam ale take pristupova opravneni k teto pameti a dalsi udaje.
> 
> 	Z "base" adresy prislusneho segmentu a dodaneho offsetu se vypocte 
> "linearni adresa". Jelikoz ale, jak vyse receno, mame zapnute i 
> strankovani, tak to jeste neni konec. Cela pamet je rozdelena na stranky 
> velikosti 4kB (az se podivate na detailni popis zjistite, ze u novejsich 
> procesoru muze byt velikost stranky take 64kB) a tak se linearni adresa 
> rozdeli na poslednich 12 bitu (offset v ramci 4kB bloku) a zbytek. Ten 
> "zbytek" je adresa stranky - a na to je v systemu jedna tabulka, kde se 
> eviduji udaje o dane strance. Jsou tam znovu opravneni k pristupu a mj. 
> take to, zda je dana stranka pritomna ve fyzicke pameti - a kde.

neni to nahodou tak, ze fbsd pouziva jen jeden segment velky 4G (tj. cela pamet
na i386) a tudiz se ho zadna segmentova aritmetika netyka (pominu-li PAE)..
strankovani fbsd samozrejme ma..



More information about the Users-l mailing list